mirror of
https://github.com/wassname/pyramid_formalchemy.git
synced 2026-08-11 11:23:53 +08:00
pyramid autocomplete renderer
This commit is contained in:
@@ -120,6 +120,7 @@ def formalchemy_admin(config, route_name,
|
||||
request_method='GET',
|
||||
permission='new',
|
||||
**kw)
|
||||
|
||||
config.add_view(context='pyramid_formalchemy.resources.ModelListing',
|
||||
renderer='pyramid_formalchemy:templates/admin/new.pt',
|
||||
attr='create',
|
||||
@@ -134,6 +135,7 @@ def formalchemy_admin(config, route_name,
|
||||
request_method='GET',
|
||||
permission='edit',
|
||||
**kw)
|
||||
|
||||
config.add_view(context='pyramid_formalchemy.resources.Model',
|
||||
renderer='pyramid_formalchemy:templates/admin/edit.pt',
|
||||
name='edit',
|
||||
@@ -141,6 +143,7 @@ def formalchemy_admin(config, route_name,
|
||||
request_method='POST',
|
||||
permission='edit',
|
||||
**kw)
|
||||
|
||||
config.add_view(context='pyramid_formalchemy.resources.Model',
|
||||
renderer='json',
|
||||
name='',
|
||||
@@ -156,6 +159,7 @@ def formalchemy_admin(config, route_name,
|
||||
request_method='POST',
|
||||
permission='delete',
|
||||
**kw)
|
||||
|
||||
config.add_view(context='pyramid_formalchemy.resources.Model',
|
||||
renderer='pyramid_formalchemy:templates/admin/edit.pt',
|
||||
attr='delete',
|
||||
@@ -171,3 +175,10 @@ def formalchemy_admin(config, route_name,
|
||||
attr='show',
|
||||
**kw)
|
||||
|
||||
config.add_view(context='pyramid_formalchemy.resources.ModelListing',
|
||||
attr='autocomplete',
|
||||
name='autocomplete',
|
||||
request_method='GET',
|
||||
permission='view',
|
||||
**kw)
|
||||
|
||||
|
||||
@@ -390,3 +390,12 @@ class ModelView(object):
|
||||
return exc.HTTPFound(location=request.fa_url(request.model_name))
|
||||
return self.render(id=request.model_id)
|
||||
|
||||
def autocomplete(self, *args, **kwargs):
|
||||
filter_term = "%s%%" % self.request.params.get('term')
|
||||
filter_attr = getattr(self.request.model_class, self.request.params.get('filter_by'))
|
||||
query = self.session.query(self.request.model_class.id, filter_attr).filter(filter_attr.ilike(filter_term))
|
||||
items = self.request.query_factory(self.request, query)
|
||||
return Response(json.dumps([{'label' : x[1],
|
||||
'value' : x[0]} for x in items ]),
|
||||
content_type='text/plain')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user