convenience commit

This commit is contained in:
Lance Edgar 2012-07-11 14:57:15 -05:00
parent 4df92ee794
commit 561f25a5f3
10 changed files with 45 additions and 136 deletions

View file

@ -34,6 +34,7 @@ from webhelpers.html.tags import link_to
from edbob.pyramid.views.autocomplete import *
from edbob.pyramid.views.form import *
from edbob.pyramid.views.grid import *
def forbidden(request):

View file

@ -33,7 +33,10 @@ from edbob.pyramid import Session
from edbob.util import requires_impl
class Grid(object):
__all__ = ['GridView']
class GridView(object):
@property
@requires_impl(is_property=True)

View file

@ -8,7 +8,6 @@ from edbob.db.extensions import Extension
from {{package}}._version import __version__
from {{package}}.model import *
from {{package}}.model import __all__
class {{package}}_extension(Extension):

View file

@ -46,6 +46,7 @@ def main(global_config, **settings):
# Additional config is defined elsewhere within {{project}}. This includes
# incorporating the various views etc. exposed by other packages.
config.include('{{package}}.pyramid.static')
config.include('{{package}}.pyramid.subscribers')
config.include('{{package}}.pyramid.views')

View file

@ -0,0 +1,9 @@
#!/usr/bin/env python
"""
``{{package}}.pyramid.static`` -- Static Assets
"""
def includeme(config):
config.add_static_view('{{package}}', '{{package}}.pyramid:static', cache_max_age=3600)

View file

@ -1,8 +1,6 @@
<%inherit file="/foo/base.mako" />
<%inherit file="/crud.mako" />
<%def name="crud_name()">Foo</%def>
<%def name="menu()">
<p>${h.link_to("Back to Foo", url('foo.list'))}</p>
</%def>

View file

@ -0,0 +1,2 @@
<%inherit file="/foo/crud.mako" />
${parent.body()}

View file

@ -0,0 +1,2 @@
<%inherit file="/foo/crud.mako" />
${parent.body()}

View file

@ -5,163 +5,57 @@
``{{package}}.pyramid.views.foo`` -- Foo Views
"""
import transaction
from pyramid.httpexceptions import HTTPFound
import edbob
from edbob.pyramid import filters
from edbob.pyramid import forms
from edbob.pyramid import grids
from edbob.pyramid import Session
from edbob.pyramid.views import GridView
from edbob.pyramid.views.crud import Crud
import {{package}}
class FooGrid(object):
class FooGrid(GridView):
def __init__(self, request):
self.request = request
mapped_class = {{package}}.Foo
route_name = 'foos.list'
route_prefix = 'foo'
def filter_map(self):
return filters.get_filter_map(
{{package}}.Foo,
ilike=['description'])
return self.make_filter_map(ilike=['description'])
def search_config(self, fmap):
return filters.get_search_config(
'foo.list', self.request, fmap,
return self.make_search_config(fmap,
include_filter_description=True,
filter_type_description='lk')
def search_form(self, config):
return filters.get_search_form(config)
def grid_config(self, search, fmap):
return grids.get_grid_config(
'foo.list', self.request, search,
filter_map=fmap, sort='description',
deletable=True)
return self.make_grid_config(search, fmap,
sort='description')
def sort_map(self):
return grids.get_sort_map(
{{package}}.Foo,
['description'])
def query(self, config):
smap = self.sort_map()
q = Session.query({{package}}.Foo)
q = filters.filter_query(q, config)
q = grids.sort_query(q, config, smap)
return q
def __call__(self):
fmap = self.filter_map()
config = self.search_config(fmap)
search = self.search_form(config)
config = self.grid_config(search, fmap)
foos = grids.get_pager(self.query, config)
g = forms.AlchemyGrid(
{{package}}.Foo, foos, config,
gridurl=self.request.route_url('foo.list'),
objurl='foo.edit', delurl='foo.delete')
return self.make_sort_map('description')
def grid(self, data, config):
g = self.make_grid(data, config)
g.configure(
include=[
g.description,
],
readonly=True)
grid = g.render(class_='clickable foo')
return grids.render_grid(self.request, grid, search)
return g
def foo_fieldset(foo, request):
fs = forms.make_fieldset(foo, crud_title="Foo",
url=request.route_url,
url_action=request.current_route_url(),
route_name='foo.list')
class FooCrud(Crud):
fs.configure(
include=[
fs.description,
])
return fs
mapped_class = {{package}}.Foo
home_route = 'foos.list'
def new_foo(request):
fs = foo_fieldset({{package}}.Foo, request)
if not fs.readonly and request.POST:
fs.rebind(data=request.params)
if fs.validate():
with transaction.manager:
fs.sync()
Session.add(fs.model)
Session.flush()
request.session.flash("%s \"%s\" has been %s." % (
fs.crud_title, fs.get_display_text(),
'updated' if fs.edit else 'created'))
return HTTPFound(location=request.route_url('foo.list'))
return {'fieldset': fs, 'crud': True}
def edit_foo(request):
"""
View for editing a :class:`{{package}}.Foo` instance.
"""
uuid = request.matchdict['uuid']
foo = Session.query({{package}}.Foo).get(uuid) if uuid else None
assert foo
fs = foo_fieldset(foo, request)
if request.POST:
fs.rebind(data=request.params)
if fs.validate():
with transaction.manager:
fs.sync()
fs.model = Session.merge(fs.model)
request.session.flash("%s \"%s\" has been %s." % (
fs.crud_title, fs.get_display_text(),
'updated' if fs.edit else 'created'))
home = request.route_url('foo.list')
return HTTPFound(location=home)
return {'fieldset': fs, 'crud': True}
def delete_foo(request):
uuid = request.matchdict['uuid']
foo = Session.query({{package}}.Foo).get(uuid) if uuid else None
assert foo
with transaction.manager:
Session.delete(foo)
return HTTPFound(location=request.route_url('foo.list'))
def fieldset(self, obj):
fs = self.make_fieldset(obj)
fs.configure(
include=[
fs.description,
])
return fs
def includeme(config):
config.add_route('foo.list', '/foo')
config.add_view(FooGrid, route_name='foo.list', renderer='/foo/index.mako',
permission='foo.list', http_cache=0)
config.add_route('foo.new', '/foo/new')
config.add_view(new_foo, route_name='foo.new', renderer='/foo/foo.mako',
permission='foo.create', http_cache=0)
config.add_route('foo.edit', '/foo/{uuid}/edit')
config.add_view(edit_foo, route_name='foo.edit', renderer='/foo/foo.mako',
permission='foo.edit', http_cache=0)
config.add_route('foo.delete', '/foo/{uuid}/delete')
config.add_view(delete_foo, route_name='foo.delete',
permission='foo.delete', http_cache=0)
FooGrid.add_route(config, 'foos.list', '/foos')
FooCrud.add_routes(config)