mybuddy/core/utils.py

50 lines
1.3 KiB
Python

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from math import floor
from django.utils import timezone
def duration_string(start, end, short=False):
diff = end - start
h = floor(diff.seconds / 3600)
m = floor((diff.seconds - h * 3600) / 60)
s = diff.seconds % 60
duration = ''
if short:
duration = '{}h {}m {}s'.format(h, m, s)
else:
if h > 0:
duration = '{} hour{}'.format(h, 's' if h > 1 else '')
if m > 0:
duration += '{}{} minute{}'.format(
'' if duration is '' else ', ', m, 's' if m > 1 else '')
if s > 0:
duration += '{}{} second{}'.format(
'' if duration is '' else ', ', s, 's' if s > 1 else '')
return duration
def filter_by_params(request, model, available_params):
queryset = model.objects.all()
for param in available_params:
value = request.query_params.get(param, None)
if value is not None:
queryset = queryset.filter(**{param: value})
return queryset
# Stop a timer instance by setting it's end field.
def timer_stop(timer_id, end=None):
if not end:
end = timezone.now()
from .models import Timer
timer_instance = Timer.objects.get(id=timer_id)
timer_instance.end = end
timer_instance.save()