diff --git a/helpdesk/lib.py b/helpdesk/lib.py index b44e4109..99e6ef0b 100644 --- a/helpdesk/lib.py +++ b/helpdesk/lib.py @@ -291,3 +291,18 @@ def query_tickets_by_args(objects, order_by, **kwargs): 'total': total, 'draw': draw } + + +def format_time_spent(time_spent): + """Format time_spent attribute to "[H]HHh:MMm" text string to be allign in + all graphical outputs + """ + + if time_spent: + time_spent = "{0:02d}h:{0:02d}m".format( + int(time_spent.total_seconds() // 3600), + int((time_spent.total_seconds() % 3600) / 60) + ) + else: + time_spent = "" + return time_spent diff --git a/helpdesk/models.py b/helpdesk/models.py index 6264cf84..0cf8711a 100644 --- a/helpdesk/models.py +++ b/helpdesk/models.py @@ -31,6 +31,17 @@ import uuid from .templated_email import send_templated_mail +def format_time_spent(time_spent): + if time_spent: + time_spent = "{0:02d}h:{0:02d}m".format( + int(time_spent.total_seconds() // (3600)), + int((time_spent.total_seconds() % 3600) / 60) + ) + else: + time_spent = "" + return time_spent + + class EscapeHtml(Extension): def extendMarkdown(self, md, md_globals): del md.preprocessors['html_block'] @@ -346,6 +357,10 @@ class Queue(models.Model): total = total + val.time_spent return total + @property + def time_spent_formated(self): + return format_time_spent(self.time_spent) + def prepare_permission_name(self): """Prepare internally the codename for the permission and store it in permission_name. :return: The codename that can be used to create a new Permission object. @@ -553,6 +568,10 @@ class Ticket(models.Model): total = total + val.time_spent return total + @property + def time_spent_formated(self): + return format_time_spent(self.time_spent) + def send(self, roles, dont_send_to=None, **kwargs): """ Send notifications to everyone interested in this ticket. @@ -861,6 +880,10 @@ class FollowUp(models.Model): def get_markdown(self): return get_markdown(self.comment) + @property + def time_spent_formated(self): + return format_time_spent(self.time_spent) + class TicketChange(models.Model): """ diff --git a/helpdesk/serializers.py b/helpdesk/serializers.py index bacd96cc..bb7fca5d 100644 --- a/helpdesk/serializers.py +++ b/helpdesk/serializers.py @@ -1,6 +1,7 @@ from rest_framework import serializers from .models import Ticket +from .lib import format_time_spent from django.contrib.humanize.templatetags import humanize @@ -53,7 +54,7 @@ class TicketSerializer(serializers.ModelSerializer): return ("None") def get_time_spent(self, obj): - return str(obj.time_spent) + return format_time_spent(obj.time_spent) def get_row_class(self, obj): return (obj.get_priority_css_class) diff --git a/helpdesk/templates/helpdesk/ticket.html b/helpdesk/templates/helpdesk/ticket.html index 2b6eda2d..2e6b2dbb 100644 --- a/helpdesk/templates/helpdesk/ticket.html +++ b/helpdesk/templates/helpdesk/ticket.html @@ -49,7 +49,7 @@

{{ followup.get_markdown|urlizetrunc:50|num_to_link|linebreaksbr }}

{% endif %} {% if followup.time_spent %} - {% trans "Time spent" %}: {{ followup.time_spent }}

+ {% trans "Time spent" %}: {{ followup.time_spent_formated }}

{% endif %} {% for change in followup.ticketchange_set.all %} {% if forloop.first %}