use exceptions.NotFound. move views declaration to view.zcml

This commit is contained in:
Gael Pasgrimaud
2011-01-15 19:11:27 +01:00
parent cb8e3cb6c6
commit 5287dd6ec3
8 changed files with 152 additions and 132 deletions
+3 -2
View File
@@ -2,13 +2,14 @@
newest = false
extensions = gp.vcsdevelop
parts = eggs test
develop = . pyramidapp
develop = . pyramidapp ../fa.jquery
[eggs]
recipe = zc.recipe.egg
eggs =
pyramid_formalchemy
pyramidapp
fa.jquery
WebTest
PasteScript
Sphinx
@@ -20,7 +21,7 @@ eggs =
nose
initialization =
import os
os.chdir('pyramidapp')
os.chdir(os.path.join('${buildout:directory}', 'pyramidapp'))
scripts=
nosetests=nosetests
paster=paster_serve
+16 -4
View File
@@ -1,9 +1,18 @@
# -*- coding: utf-8 -*-
def include(config):
"""include formalchemy's zcml"""
config.load_zcml('pyramid.includes:configure.zcml')
config.load_zcml('pyramid_formalchemy:configure.zcml')
config.load_zcml('pyramid_formalchemy:views.zcml')
def configure(config, models=None, forms=None, session_factory=None, package=None):
def include_jquery(config):
"""include formalchemy's zcml"""
config.load_zcml('pyramid.includes:configure.zcml')
config.load_zcml('pyramid_formalchemy:configure.zcml')
config.load_zcml('fa.jquery:configure.zcml')
def configure(config, models=None, forms=None, session_factory=None, package=None, use_jquery=True):
"""configure formalchemy's admin interface"""
if models:
models = config.maybe_dotted(models)
@@ -26,6 +35,9 @@ def configure(config, models=None, forms=None, session_factory=None, package=Non
'fa.session_factory': session_factory,
})
config.add_route('fa_admin', '/admin/*traverse',
factory='pyramid_formalchemy.resources.AdminView')
if use_jquery:
config.add_route('fa_admin', '/admin/*traverse',
factory='pyramid_formalchemy.resources.AdminView')
else:
config.add_route('fa_admin', '/admin/*traverse',
factory='pyramid_formalchemy.resources.AdminView')
-113
View File
@@ -1,122 +1,9 @@
<?xml version="1.0"?>
<configure xmlns="http://pylonshq.com/pyramid">
<include package="pyramid.includes" />
<static
name="fa_admin"
path="pyramid_formalchemy:static"
/>
<view
name=""
route_name="fa_admin"
context=".resources.AdminView"
view=".views.ModelView"
attr="models"
request_method="GET"
renderer="pyramid_formalchemy:templates/admin/models.pt"
/>
<view
name=""
route_name="fa_admin"
context=".resources.ModelListing"
view=".views.ModelView"
attr="listing"
request_method="GET"
renderer="pyramid_formalchemy:templates/admin/listing.pt"
/>
<view
name="new"
route_name="fa_admin"
context=".resources.ModelListing"
view=".views.ModelView"
attr="new"
request_method="GET"
renderer="pyramid_formalchemy:templates/admin/new.pt"
/>
<view
name=""
route_name="fa_admin"
context=".resources.ModelListing"
view=".views.ModelView"
attr="create"
request_method="POST"
renderer="pyramid_formalchemy:templates/admin/new.pt"
/>
<view
name="edit"
route_name="fa_admin"
context=".resources.ModelItem"
view=".views.ModelView"
attr="edit"
request_method="GET"
renderer="pyramid_formalchemy:templates/admin/edit.pt"
/>
<view
name="edit"
route_name="fa_admin"
context=".resources.ModelItem"
view=".views.ModelView"
attr="update"
request_method="POST"
renderer="pyramid_formalchemy:templates/admin/edit.pt"
/>
<view
name=""
route_name="fa_admin"
context=".resources.ModelItem"
view=".views.ModelView"
attr="update"
request_method="POST"
renderer="json"
/>
<view
name=""
route_name="fa_admin"
context=".resources.ModelItem"
view=".views.ModelView"
attr="update"
request_method="PUT"
renderer="json"
/>
<view
name="delete"
route_name="fa_admin"
context=".resources.ModelItem"
view=".views.ModelView"
attr="delete"
request_method="POST"
renderer="pyramid_formalchemy:templates/admin/edit.pt"
/>
<view
name=""
route_name="fa_admin"
context=".resources.ModelItem"
view=".views.ModelView"
attr="delete"
request_method="DELETE"
renderer="pyramid_formalchemy:templates/admin/edit.pt"
/>
<view
name=""
route_name="fa_admin"
context=".resources.ModelItem"
view=".views.ModelView"
attr="show"
request_method="GET"
renderer="pyramid_formalchemy:templates/admin/show.pt"
/>
</configure>
+2 -2
View File
@@ -8,7 +8,7 @@ class AdminView(object):
request.format = 'html'
self.__parent__ = self.__name__ = None
def __getitem__(self, item):
if item in ('json',):
if item in ('json', 'xhr'):
self.request.format = item
return self
model = ModelListing(self.request, item)
@@ -22,7 +22,7 @@ class ModelListing(object):
self.__name__ = name
self.__parent__ = None
def __getitem__(self, item):
if item in ('json',):
if item in ('json', 'xhr'):
self.request.format = item
return self
if item in ('new',):
+118
View File
@@ -0,0 +1,118 @@
<?xml version="1.0"?>
<configure
xmlns="http://namespaces.zope.org/zope"
xmlns:browser="http://namespaces.zope.org/browser"
>
<view
name=""
route_name="fa_admin"
context="pyramid_formalchemy.resources.AdminView"
view="pyramid_formalchemy.views.ModelView"
attr="models"
request_method="GET"
renderer="pyramid_formalchemy:templates/admin/models.pt"
/>
<view
name=""
route_name="fa_admin"
context="pyramid_formalchemy.resources.ModelListing"
view="pyramid_formalchemy.views.ModelView"
attr="listing"
request_method="GET"
renderer="pyramid_formalchemy:templates/admin/listing.pt"
/>
<view
name="new"
route_name="fa_admin"
context="pyramid_formalchemy.resources.ModelListing"
view="pyramid_formalchemy.views.ModelView"
attr="new"
request_method="GET"
renderer="pyramid_formalchemy:templates/admin/new.pt"
/>
<view
name=""
route_name="fa_admin"
context="pyramid_formalchemy.resources.ModelListing"
view="pyramid_formalchemy.views.ModelView"
attr="create"
request_method="POST"
renderer="pyramid_formalchemy:templates/admin/new.pt"
/>
<view
name="edit"
route_name="fa_admin"
context="pyramid_formalchemy.resources.ModelItem"
view="pyramid_formalchemy.views.ModelView"
attr="edit"
request_method="GET"
renderer="pyramid_formalchemy:templates/admin/edit.pt"
/>
<view
name="edit"
route_name="fa_admin"
context="pyramid_formalchemy.resources.ModelItem"
view="pyramid_formalchemy.views.ModelView"
attr="update"
request_method="POST"
renderer="pyramid_formalchemy:templates/admin/edit.pt"
/>
<view
name=""
route_name="fa_admin"
context="pyramid_formalchemy.resources.ModelItem"
view="pyramid_formalchemy.views.ModelView"
attr="update"
request_method="POST"
renderer="json"
/>
<view
name=""
route_name="fa_admin"
context="pyramid_formalchemy.resources.ModelItem"
view="pyramid_formalchemy.views.ModelView"
attr="update"
request_method="PUT"
renderer="json"
/>
<view
name="delete"
route_name="fa_admin"
context="pyramid_formalchemy.resources.ModelItem"
view="pyramid_formalchemy.views.ModelView"
attr="delete"
request_method="POST"
renderer="pyramid_formalchemy:templates/admin/edit.pt"
/>
<view
name=""
route_name="fa_admin"
context="pyramid_formalchemy.resources.ModelItem"
view="pyramid_formalchemy.views.ModelView"
attr="delete"
request_method="DELETE"
renderer="pyramid_formalchemy:templates/admin/edit.pt"
/>
<view
name=""
route_name="fa_admin"
context="pyramid_formalchemy.resources.ModelItem"
view="pyramid_formalchemy.views.ModelView"
attr="show"
request_method="GET"
renderer="pyramid_formalchemy:templates/admin/show.pt"
/>
</configure>
+11 -9
View File
@@ -11,7 +11,9 @@ from formalchemy import fatypes
from pyramid.view import view_config
from pyramid.renderers import render
from pyramid.renderers import get_renderer
from pyramid.response import Response
from pyramid import httpexceptions as exc
from pyramid.exceptions import NotFound
try:
from formalchemy.ext.couchdb import Document
@@ -99,7 +101,7 @@ class ModelView(object):
return model
elif hasattr(self.model, self.model_name):
return getattr(self.model, self.model_name)
raise exc.HTTPNotFound(description='model %s not found' % self.model_name)
raise NotFound()
def get_fieldset(self, id):
if self.forms and hasattr(self.forms, self.model_name):
@@ -166,7 +168,7 @@ class ModelView(object):
if meth is not None:
return meth(**kwargs)
else:
return exc.HTTPNotfound()
raise NotFound()
kwargs.update(
main = get_renderer('pyramid_formalchemy:templates/admin/master.pt').implementation(),
model_name=self.model_name,
@@ -196,18 +198,18 @@ class ModelView(object):
return data
def render_xhr_format(self, fs=None, **kwargs):
response.content_type = 'text/html'
self.request.response_content_type = 'text/html'
if fs is not None:
if 'field' in request.GET:
field_name = request.GET.get('field')
if 'field' in self.request.GET:
field_name = self.request.GET.get('field')
fields = fs.render_fields
if field_name in fields:
field = fields[field_name]
return field.render()
else:
return exc.HTTPNotfound()
return fs.render()
return ''
raise NotFound()
return Response(fs.render())
return Response('')
def get_page(self, **kwargs):
"""return a ``webhelpers.paginate.Page`` used to display ``Grid``.
@@ -252,7 +254,7 @@ class ModelView(object):
model = S.query(model).get(id)
if model:
return model
raise exc.HTTPNotFound()
raise NotFound()
def get_fieldset(self, id=None):
"""return a ``FieldSet`` object bound to the correct record for ``id``.
Binary file not shown.
+2 -2
View File
@@ -13,8 +13,8 @@ def main(global_config, **settings):
config.add_static_view('static', 'pyramidapp:static')
config.add_route('home', '/', view='pyramidapp.views.my_view',
view_renderer='templates/mytemplate.pt')
pyramid_formalchemy.include(config)
pyramid_formalchemy.configure(config, package='pyramidapp')
pyramid_formalchemy.include_jquery(config)
pyramid_formalchemy.configure(config, package='pyramidapp', use_jquery=True)
return config.make_wsgi_app()