Avoid deprecated pretty_hours() function

This commit is contained in:
Lance Edgar 2023-10-04 11:56:50 -05:00
parent 0b7791070f
commit f3dddf0e40
3 changed files with 29 additions and 25 deletions

View file

@ -32,7 +32,7 @@ import sqlalchemy as sa
from sqlalchemy import orm
from rattail.db.types import GPCType
from rattail.util import prettify, pretty_boolean, pretty_quantity, pretty_hours
from rattail.util import prettify, pretty_boolean, pretty_quantity
from rattail.time import localtime
import webhelpers2_grid
@ -541,7 +541,8 @@ class Grid(object):
value = self.obtain_value(obj, field)
if value is None:
return ""
return pretty_hours(hours=value)
app = self.request.rattail_config.get_app()
return app.render_duration(hours=value)
def set_url(self, url):
self.url = url

View file

@ -2,7 +2,7 @@
################################################################################
#
# Rattail -- Retail Software Framework
# Copyright © 2010-2022 Lance Edgar
# Copyright © 2010-2023 Lance Edgar
#
# This file is part of Rattail.
#
@ -24,31 +24,32 @@
Views for employee shifts
"""
from __future__ import unicode_literals, absolute_import
import datetime
import six
from rattail.db import model
from rattail.time import localtime
from rattail.util import pretty_hours, hours_as_decimal
from rattail.util import hours_as_decimal
from webhelpers2.html import tags, HTML
from tailbone.views import MasterView
def render_shift_length(shift, field):
class ShiftViewMixin:
def render_shift_length(self, shift, field):
if not shift.start_time or not shift.end_time:
return ""
if shift.end_time < shift.start_time:
return "??"
app = self.get_rattail_app()
length = shift.end_time - shift.start_time
return HTML.tag('span', title="{} hrs".format(hours_as_decimal(length)), c=[pretty_hours(length)])
return HTML.tag('span',
title="{} hrs".format(hours_as_decimal(length)),
c=[app.render_duration(delta=length)])
class ScheduledShiftView(MasterView):
class ScheduledShiftView(MasterView, ShiftViewMixin):
"""
Master view for employee scheduled shifts.
"""
@ -78,20 +79,20 @@ class ScheduledShiftView(MasterView):
g.set_sort_defaults('start_time', 'desc')
g.set_renderer('length', render_shift_length)
g.set_renderer('length', self.render_shift_length)
g.set_label('employee', "Employee Name")
def configure_form(self, f):
super(ScheduledShiftView, self).configure_form(f)
f.set_renderer('length', render_shift_length)
f.set_renderer('length', self.render_shift_length)
# TODO: deprecate / remove this
ScheduledShiftsView = ScheduledShiftView
class WorkedShiftView(MasterView):
class WorkedShiftView(MasterView, ShiftViewMixin):
"""
Master view for employee worked shifts.
"""
@ -136,7 +137,7 @@ class WorkedShiftView(MasterView):
# (but we'll still have to set this)
g.set_sort_defaults('start_time', 'desc')
g.set_renderer('length', render_shift_length)
g.set_renderer('length', self.render_shift_length)
g.set_label('employee', "Employee Name")
g.set_label('store', "Store Name")
@ -154,7 +155,7 @@ class WorkedShiftView(MasterView):
f.set_readonly('employee')
f.set_renderer('employee', self.render_employee)
f.set_renderer('length', render_shift_length)
f.set_renderer('length', self.render_shift_length)
if self.editing:
f.remove('length')
@ -162,7 +163,7 @@ class WorkedShiftView(MasterView):
employee = shift.employee
if not employee:
return ""
text = six.text_type(employee)
text = str(employee)
url = self.request.route_url('employees.view', uuid=employee.uuid)
return tags.link_to(text, url)

View file

@ -31,7 +31,7 @@ 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, hours_as_decimal
from rattail.util import hours_as_decimal
import colander
from deform import widget as dfwidget
@ -401,6 +401,8 @@ 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.
"""
app = self.get_rattail_app()
# 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'
@ -465,7 +467,7 @@ class TimeSheetView(View):
hours = empday['{}_hours'.format(shift_type)]
if hours:
if hours_style == 'pretty':
display = pretty_hours(hours)
display = app.render_duration(hours=hours)
else: # decimal
display = str(hours_as_decimal(hours))
if empday['hours_incomplete']:
@ -476,7 +478,7 @@ class TimeSheetView(View):
hours = getattr(employee, '{}_hours'.format(shift_type))
if hours:
if hours_style == 'pretty':
display = pretty_hours(hours)
display = app.render_duration(hours=hours)
else: # decimal
display = str(hours_as_decimal(hours))
if hours_incomplete: