Use Grid.make_sorter() instead of legacy code

b/c multi-column sorting relies on this
This commit is contained in:
Lance Edgar 2023-10-18 18:18:55 -05:00
parent 659f5a8fe1
commit 919d8d109f
14 changed files with 198 additions and 176 deletions

View file

@ -96,7 +96,7 @@ class EmployeeView(MasterView):
return app.get_people_handler().get_quickie_search_placeholder()
def configure_grid(self, g):
super(EmployeeView, self).configure_grid(g)
super().configure_grid(g)
route_prefix = self.get_route_prefix()
# phone
@ -115,9 +115,20 @@ class EmployeeView(MasterView):
g.filters['email'] = g.make_filter('email', model.EmployeeEmailAddress.address,
label="Email Address")
# first/last name
g.filters['first_name'] = g.make_filter('first_name', model.Person.first_name)
g.filters['last_name'] = g.make_filter('last_name', model.Person.last_name)
# first_name
g.set_link('first_name')
g.set_sorter('first_name', model.Person.first_name)
g.set_sort_defaults('first_name')
g.set_filter('first_name', model.Person.first_name,
default_active=True,
default_verb='contains')
# last_name
g.set_link('last_name')
g.set_sorter('last_name', model.Person.last_name)
g.set_filter('last_name', model.Person.last_name,
default_active=True,
default_verb='contains')
# username
if self.request.has_perm('users.view'):
@ -145,18 +156,7 @@ class EmployeeView(MasterView):
g.remove('status')
del g.filters['status']
g.filters['first_name'].default_active = True
g.filters['first_name'].default_verb = 'contains'
g.filters['last_name'].default_active = True
g.filters['last_name'].default_verb = 'contains'
g.sorters['first_name'] = lambda q, d: q.order_by(getattr(model.Person.first_name, d)())
g.sorters['last_name'] = lambda q, d: q.order_by(getattr(model.Person.last_name, d)())
g.sorters['email'] = lambda q, d: q.order_by(getattr(model.EmployeeEmailAddress.address, d)())
g.set_sort_defaults('first_name')
g.set_sorter('email', model.EmployeeEmailAddress.address)
g.set_label('email', "Email Address")
@ -170,9 +170,6 @@ class EmployeeView(MasterView):
g.main_actions.insert(1, self.make_action(
'view_raw', url=url, icon='eye'))
g.set_link('first_name')
g.set_link('last_name')
def default_view_url(self):
if (self.request.has_perm('people.view_profile')
and self.should_link_straight_to_profile()):
@ -196,7 +193,7 @@ class EmployeeView(MasterView):
default=False)
def query(self, session):
query = super(EmployeeView, self).query(session)
query = super().query(session)
query = query.join(model.Person)
if not self.has_perm('view_all'):
query = query.filter(model.Employee.status == self.enum.EMPLOYEE_STATUS_CURRENT)
@ -229,7 +226,7 @@ class EmployeeView(MasterView):
return not self.is_employee_protected(employee)
def configure_form(self, f):
super(EmployeeView, self).configure_form(f)
super().configure_form(f)
employee = f.model_instance
f.set_renderer('person', self.render_person)
@ -283,7 +280,7 @@ class EmployeeView(MasterView):
def objectify(self, form, data=None):
if data is None:
data = form.validated
employee = super(EmployeeView, self).objectify(form, data)
employee = super().objectify(form, data)
self.update_stores(employee, data)
self.update_departments(employee, data)
return employee