Avoid deprecated pretty_hours()
function
This commit is contained in:
parent
0b7791070f
commit
f3dddf0e40
|
@ -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
|
||||
|
|
|
@ -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):
|
||||
if not shift.start_time or not shift.end_time:
|
||||
return ""
|
||||
if shift.end_time < shift.start_time:
|
||||
return "??"
|
||||
length = shift.end_time - shift.start_time
|
||||
return HTML.tag('span', title="{} hrs".format(hours_as_decimal(length)), c=[pretty_hours(length)])
|
||||
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=[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)
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Reference in a new issue