Improve the grid for WorkedShift model a bit

This commit is contained in:
Lance Edgar 2017-02-04 12:32:21 -06:00
parent 8b02fd3d38
commit 273f56ec83

View file

@ -31,9 +31,11 @@ import datetime
import humanize import humanize
from rattail.db import model from rattail.db import model
from rattail.time import localtime
import formalchemy import formalchemy
from tailbone import forms
from tailbone.views import MasterView from tailbone.views import MasterView
@ -96,13 +98,28 @@ class WorkedShiftsView(MasterView):
model_class = model.WorkedShift model_class = model.WorkedShift
url_prefix = '/shifts/worked' url_prefix = '/shifts/worked'
def configure_grid(self, g): def _preconfigure_grid(self, g):
g.joiners['employee'] = lambda q: q.join(model.Employee).join(model.Person)
g.filters['employee'] = g.make_filter('employee', model.Person.display_name,
label="Employee Name")
g.sorters['employee'] = g.make_sorter(model.Person.display_name)
g.joiners['store'] = lambda q: q.join(model.Store)
g.filters['store'] = g.make_filter('store', model.Store.name, label="Store Name")
g.sorters['store'] = g.make_sorter(model.Store.name)
g.filters['punch_in'].label = "Start Time"
g.filters['punch_out'].label = "End Time"
# TODO: these sorters should be automatic once we fix the schema # TODO: these sorters should be automatic once we fix the schema
g.sorters['start_time'] = g.make_sorter(model.WorkedShift.punch_in) g.sorters['start_time'] = g.make_sorter(model.WorkedShift.punch_in)
g.sorters['end_time'] = g.make_sorter(model.WorkedShift.punch_out) g.sorters['end_time'] = g.make_sorter(model.WorkedShift.punch_out)
g.default_sortkey = 'start_time' g.default_sortkey = 'start_time'
g.default_sortdir = 'desc' g.default_sortdir = 'desc'
g.append(ShiftLengthField('length')) g.append(ShiftLengthField('length'))
def configure_grid(self, g):
g.configure( g.configure(
include=[ include=[
g.employee, g.employee,
@ -113,8 +130,16 @@ class WorkedShiftsView(MasterView):
], ],
readonly=True) readonly=True)
def configure_fieldset(self, fs): def get_instance_title(self, shift):
time = shift.start_time or shift.end_time
date = localtime(self.rattail_config, time).date()
return "WorkedShift: {}, {}".format(shift.employee, date)
def _preconfigure_fieldset(self, fs):
fs.append(ShiftLengthField('length')) fs.append(ShiftLengthField('length'))
fs.employee.set(readonly=True, renderer=forms.renderers.EmployeeFieldRenderer)
def configure_fieldset(self, fs):
fs.configure( fs.configure(
include=[ include=[
fs.employee, fs.employee,
@ -123,6 +148,8 @@ class WorkedShiftsView(MasterView):
fs.end_time, fs.end_time,
fs.length, fs.length,
]) ])
if self.editing:
del fs.length
def includeme(config): def includeme(config):