Display per-child timer lists on dashboard card

This commit is contained in:
Christopher C. Wells 2020-01-28 22:36:08 -08:00 committed by Christopher Charbonneau Wells
parent e5a5e330b9
commit eb9e2f3927
2 changed files with 13 additions and 5 deletions

View File

@ -13,7 +13,7 @@
<div id="dashboard-child" class="card-columns"> <div id="dashboard-child" class="card-columns">
{% card_feeding_last object %} {% card_feeding_last object %}
{% card_feeding_last_method object %} {% card_feeding_last_method object %}
{% card_timer_list %} {% card_timer_list object %}
{% card_statistics object %} {% card_statistics object %}
{% card_sleep_last object %} {% card_sleep_last object %}
{% card_sleep_day object %} {% card_sleep_day object %}

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django import template from django import template
from django.db.models import Avg, Count, Sum from django.db.models import Avg, Count, Q, Sum
from django.db.models.functions import TruncDate from django.db.models.functions import TruncDate
from django.utils import timezone from django.utils import timezone
from django.utils.translation import gettext as _ from django.utils.translation import gettext as _
@ -324,12 +324,20 @@ def _weight_statistics(child):
@register.inclusion_tag('cards/timer_list.html') @register.inclusion_tag('cards/timer_list.html')
def card_timer_list(): def card_timer_list(child=None):
""" """
Filters for currently active Timer instances. Filters for currently active Timer instances, optionally by child.
:param child: an instance of the Child model.
:returns: a dictionary with a list of active Timer instances. :returns: a dictionary with a list of active Timer instances.
""" """
instances = models.Timer.objects.filter(active=True).order_by('-start') if child:
# Get active instances for the selected child _or_ None (no child).
instances = models.Timer.objects.filter(
Q(active=True),
Q(child=child) | Q(child=None)
).order_by('-start')
else:
instances = models.Timer.objects.filter(active=True).order_by('-start')
return {'type': 'timer', 'instances': list(instances)} return {'type': 'timer', 'instances': list(instances)}