Add basic master view for PersonNote data model

This commit is contained in:
Lance Edgar 2019-05-14 15:59:57 -05:00
parent f61cf318ae
commit e6301f0d06

View file

@ -28,6 +28,7 @@ from __future__ import unicode_literals, absolute_import
import six import six
import sqlalchemy as sa import sqlalchemy as sa
from sqlalchemy import orm
from rattail.db import model, api from rattail.db import model, api
@ -305,6 +306,60 @@ class PeopleEmployeesAutocomplete(PeopleAutocomplete):
return q.join(model.Employee) return q.join(model.Employee)
class PersonNoteView(MasterView):
"""
Master view for the PersonNote class.
"""
model_class = model.PersonNote
route_prefix = 'person_notes'
url_prefix = '/people/notes'
has_versions = True
grid_columns = [
'person',
'type',
'subject',
'created',
'created_by',
]
form_fields = [
'person',
'type',
'subject',
'text',
'created',
'created_by',
]
def get_instance_title(self, note):
return note.subject or "(no subject)"
def configure_grid(self, g):
super(PersonNoteView, self).configure_grid(g)
# person
g.set_joiner('person', lambda q: q.join(model.Person,
model.Person.uuid == model.PersonNote.parent_uuid))
g.set_sorter('person', model.Person.display_name)
g.set_filter('person', model.Person.display_name, label="Person Name")
# created_by
CreatorPerson = orm.aliased(model.Person)
g.set_joiner('created_by', lambda q: q.join(model.User).outerjoin(CreatorPerson,
CreatorPerson.uuid == model.User.person_uuid))
g.set_sorter('created_by', CreatorPerson.display_name)
g.set_link('person')
g.set_link('subject')
g.set_link('created')
def configure_form(self, f):
super(PersonNoteView, self).configure_form(f)
f.set_renderer('person', self.render_person)
def includeme(config): def includeme(config):
# autocomplete # autocomplete
@ -316,3 +371,4 @@ def includeme(config):
renderer='json', permission='people.list') renderer='json', permission='people.list')
PeopleView.defaults(config) PeopleView.defaults(config)
PersonNoteView.defaults(config)