From 1dda8a961a49ae091c91ebee631cee1fca8b16ae Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Mon, 15 May 2017 17:51:24 -0500 Subject: [PATCH] Let config cause time sheet hours to display as HH.HH for some users default display is still HH:MM however --- tailbone/views/shifts/lib.py | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/tailbone/views/shifts/lib.py b/tailbone/views/shifts/lib.py index f702f069..833afdb1 100644 --- a/tailbone/views/shifts/lib.py +++ b/tailbone/views/shifts/lib.py @@ -1,4 +1,4 @@ -# -*- coding: utf-8 -*- +# -*- coding: utf-8; -*- ################################################################################ # # Rattail -- Retail Software Framework @@ -28,12 +28,13 @@ from __future__ import unicode_literals, absolute_import import datetime +import six import sqlalchemy as sa from rattail import enum from rattail.db import model, api from rattail.time import localtime, make_utc, get_sunday -from rattail.util import pretty_hours +from rattail.util import pretty_hours, hours_as_decimal import formencode as fe from pyramid_simpleform import Form @@ -348,6 +349,13 @@ class TimeSheetView(View): Fetch all shift data of the given model class (``cls``), according to the given params. The cached shift data is attached to each employee. """ + # TODO: a bit hacky, this? display hours as HH:MM by default, but + # check config in order to display as HH.HH for certain users + hours_style = 'pretty' + if self.request.user: + hours_style = self.rattail_config.get('tailbone', 'hours_style.{}'.format(self.request.user.username), + default='pretty') + shift_type = 'scheduled' if cls is model.ScheduledShift else 'worked' min_time = localtime(self.rattail_config, datetime.datetime.combine(weekdays[0], datetime.time(0))) max_time = localtime(self.rattail_config, datetime.datetime.combine(weekdays[-1] + datetime.timedelta(days=1), datetime.time(0))) @@ -400,12 +408,18 @@ class TimeSheetView(View): hours = empday['{}_hours'.format(shift_type)] if hours: - empday['{}_hours_display'.format(shift_type)] = pretty_hours(hours) + if hours_style == 'pretty': + empday['{}_hours_display'.format(shift_type)] = pretty_hours(hours) + else: # decimal + empday['{}_hours_display'.format(shift_type)] = six.text_type(hours_as_decimal(hours)) employee.weekdays[i].update(empday) hours = getattr(employee, '{}_hours'.format(shift_type)) if hours: - display = pretty_hours(hours) + if hours_style == 'pretty': + display = pretty_hours(hours) + else: # decimal + display = six.text_type(hours_as_decimal(hours)) if hours_incomplete: display = '{} ?'.format(display) setattr(employee, '{}_hours_display'.format(shift_type), display)