Fix default (status) filter for Employees grid

This commit is contained in:
Lance Edgar 2018-09-06 20:36:08 -05:00
parent 06b5f6c97c
commit db0eee707a

View file

@ -35,7 +35,6 @@ import colander
from deform import widget as dfwidget
from webhelpers2.html import tags, HTML
from tailbone import grids
from tailbone.db import Session
from tailbone.views import MasterView, AutocompleteView
@ -47,6 +46,10 @@ class EmployeesView(MasterView):
model_class = model.Employee
has_versions = True
labels = {
'id': "ID",
}
grid_columns = [
'id',
'first_name',
@ -73,6 +76,7 @@ class EmployeesView(MasterView):
def configure_grid(self, g):
super(EmployeesView, self).configure_grid(g)
route_prefix = self.get_route_prefix()
g.joiners['phone'] = lambda q: q.outerjoin(model.EmployeePhoneNumber, sa.and_(
model.EmployeePhoneNumber.parent_uuid == model.Employee.uuid,
@ -89,13 +93,22 @@ class EmployeesView(MasterView):
g.filters['phone'] = g.make_filter('phone', model.EmployeePhoneNumber.number,
label="Phone Number")
if self.request.has_perm('employees.edit'):
# id
if self.request.has_perm('{}.edit'.format(route_prefix)):
g.set_link('id')
else:
g.hide_column('id')
del g.filters['id']
# status
if self.request.has_perm('{}.edit'.format(route_prefix)):
g.set_enum('status', self.enum.EMPLOYEE_STATUS)
g.filters['status'].default_active = True
g.filters['status'].default_verb = 'equal'
g.filters['status'].default_value = self.enum.EMPLOYEE_STATUS_CURRENT
g.filters['status'].set_value_renderer(grids.filters.EnumValueRenderer(self.enum.EMPLOYEE_STATUS))
# TODO: why must we set unicode string value here?
g.filters['status'].default_value = six.text_type(self.enum.EMPLOYEE_STATUS_CURRENT)
else:
del g.filters['id']
g.hide_column('status')
del g.filters['status']
g.filters['first_name'].default_active = True
@ -112,20 +125,12 @@ class EmployeesView(MasterView):
g.set_sort_defaults('first_name')
g.set_enum('status', self.enum.EMPLOYEE_STATUS)
g.set_label('id', "ID")
g.set_label('phone', "Phone Number")
g.set_label('email', "Email Address")
g.set_link('id')
g.set_link('first_name')
g.set_link('last_name')
if not self.request.has_perm('employees.edit'):
g.hide_column('id')
g.hide_column('status')
def query(self, session):
q = session.query(model.Employee).join(model.Person)
if not self.request.has_perm('employees.edit'):
@ -186,7 +191,6 @@ class EmployeesView(MasterView):
f.set_label('display_name', "Short Name")
f.set_label('phone', "Phone Number")
f.set_label('email', "Email Address")
f.set_label('id', "ID")
if not self.viewing:
f.remove_fields('first_name', 'last_name')