Add Person autocomplete view which restricts to employees only.
This commit is contained in:
parent
9c294f2e4d
commit
2626ff4fdf
|
@ -31,6 +31,8 @@ from sqlalchemy import and_
|
||||||
from . import SearchableAlchemyGridView, CrudView, AutocompleteView
|
from . import SearchableAlchemyGridView, CrudView, AutocompleteView
|
||||||
|
|
||||||
from ..db import Session
|
from ..db import Session
|
||||||
|
|
||||||
|
from rattail.db import model
|
||||||
from rattail.db.model import (Person, PersonEmailAddress, PersonPhoneNumber,
|
from rattail.db.model import (Person, PersonEmailAddress, PersonPhoneNumber,
|
||||||
VendorContact)
|
VendorContact)
|
||||||
|
|
||||||
|
@ -132,9 +134,20 @@ class PeopleAutocomplete(AutocompleteView):
|
||||||
fieldname = 'display_name'
|
fieldname = 'display_name'
|
||||||
|
|
||||||
|
|
||||||
|
class PeopleEmployeesAutocomplete(PeopleAutocomplete):
|
||||||
|
"""
|
||||||
|
Autocomplete view for the Person model, but restricted to return only
|
||||||
|
results for people who are employees.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def filter_query(self, q):
|
||||||
|
return q.join(model.Employee)
|
||||||
|
|
||||||
|
|
||||||
def add_routes(config):
|
def add_routes(config):
|
||||||
config.add_route('people', '/people')
|
config.add_route('people', '/people')
|
||||||
config.add_route('people.autocomplete', '/people/autocomplete')
|
config.add_route('people.autocomplete', '/people/autocomplete')
|
||||||
|
config.add_route(u'people.autocomplete.employees', u'/people/autocomplete/employees')
|
||||||
config.add_route('person.read', '/people/{uuid}')
|
config.add_route('person.read', '/people/{uuid}')
|
||||||
config.add_route('person.update', '/people/{uuid}/edit')
|
config.add_route('person.update', '/people/{uuid}/edit')
|
||||||
|
|
||||||
|
@ -142,15 +155,23 @@ def add_routes(config):
|
||||||
def includeme(config):
|
def includeme(config):
|
||||||
add_routes(config)
|
add_routes(config)
|
||||||
|
|
||||||
|
# List
|
||||||
config.add_view(PeopleGrid, route_name='people',
|
config.add_view(PeopleGrid, route_name='people',
|
||||||
renderer='/people/index.mako',
|
renderer='/people/index.mako',
|
||||||
permission='people.list')
|
permission='people.list')
|
||||||
|
|
||||||
|
# CRUD
|
||||||
config.add_view(PersonCrud, attr='read', route_name='person.read',
|
config.add_view(PersonCrud, attr='read', route_name='person.read',
|
||||||
renderer='/people/crud.mako',
|
renderer='/people/crud.mako',
|
||||||
permission='people.read')
|
permission='people.read')
|
||||||
config.add_view(PersonCrud, attr='update', route_name='person.update',
|
config.add_view(PersonCrud, attr='update', route_name='person.update',
|
||||||
renderer='/people/crud.mako',
|
renderer='/people/crud.mako',
|
||||||
permission='people.update')
|
permission='people.update')
|
||||||
|
|
||||||
|
# Autocomplete
|
||||||
config.add_view(PeopleAutocomplete, route_name='people.autocomplete',
|
config.add_view(PeopleAutocomplete, route_name='people.autocomplete',
|
||||||
renderer='json',
|
renderer='json',
|
||||||
permission='people.list')
|
permission='people.list')
|
||||||
|
config.add_view(PeopleEmployeesAutocomplete, route_name=u'people.autocomplete.employees',
|
||||||
|
renderer=u'json',
|
||||||
|
permission=u'people.list')
|
||||||
|
|
|
@ -167,28 +167,31 @@ class UserCrud(CrudView):
|
||||||
return fs
|
return fs
|
||||||
|
|
||||||
|
|
||||||
def includeme(config):
|
def add_routes(config):
|
||||||
|
config.add_route(u'users', u'/users')
|
||||||
|
config.add_route(u'user.create', u'/users/new')
|
||||||
|
config.add_route(u'user.read', u'/users/{uuid}')
|
||||||
|
config.add_route(u'user.update', u'/users/{uuid}/edit')
|
||||||
|
config.add_route(u'user.delete', u'/users/{uuid}/delete')
|
||||||
|
|
||||||
config.add_route('users', '/users')
|
|
||||||
|
def includeme(config):
|
||||||
|
add_routes(config)
|
||||||
|
|
||||||
|
# List
|
||||||
config.add_view(UsersGrid, route_name='users',
|
config.add_view(UsersGrid, route_name='users',
|
||||||
renderer='/users/index.mako',
|
renderer='/users/index.mako',
|
||||||
permission='users.list')
|
permission='users.list')
|
||||||
|
|
||||||
config.add_route('user.create', '/users/new')
|
# CRUD
|
||||||
config.add_view(UserCrud, attr='create', route_name='user.create',
|
config.add_view(UserCrud, attr='create', route_name='user.create',
|
||||||
renderer='/users/crud.mako',
|
renderer='/users/crud.mako',
|
||||||
permission='users.create')
|
permission='users.create')
|
||||||
|
|
||||||
config.add_route('user.read', '/users/{uuid}')
|
|
||||||
config.add_view(UserCrud, attr='read', route_name='user.read',
|
config.add_view(UserCrud, attr='read', route_name='user.read',
|
||||||
renderer='/users/crud.mako',
|
renderer='/users/crud.mako',
|
||||||
permission='users.read')
|
permission='users.read')
|
||||||
|
|
||||||
config.add_route('user.update', '/users/{uuid}/edit')
|
|
||||||
config.add_view(UserCrud, attr='update', route_name='user.update',
|
config.add_view(UserCrud, attr='update', route_name='user.update',
|
||||||
renderer='/users/crud.mako',
|
renderer='/users/crud.mako',
|
||||||
permission='users.update')
|
permission='users.update')
|
||||||
|
|
||||||
config.add_route('user.delete', '/users/{uuid}/delete')
|
|
||||||
config.add_view(UserCrud, attr='delete', route_name='user.delete',
|
config.add_view(UserCrud, attr='delete', route_name='user.delete',
|
||||||
permission='users.delete')
|
permission='users.delete')
|
||||||
|
|
Loading…
Reference in a new issue