Add a Diaper Change types card.

This commit is contained in:
Christopher Charbonneau Wells 2017-08-18 14:01:27 -04:00
parent 63faa0b553
commit c2c708883e
3 changed files with 54 additions and 0 deletions

View File

@ -0,0 +1,26 @@
{% extends 'cards/diaperchange.html' %}
{% block header %}Diaper Change Types{% endblock %}
{% block title %}
<strong>Past 5 Days</strong>
{% endblock %}
{% block content %}
{% for date, info in stats.items %}
<div class="progress mt-3">
<div class="progress-bar bg-info lead"
role="progressbar"
style="width: {{ info.wet_pct }}%; height: 30px; line-height: 30px">{{ info.wet }} wet</div>
<div class="progress-bar bg-dark lead"
role="progressbar"
style="width: {{ info.solid_pct }}%; height: 30px; line-height: 30px">
<strong>{{ info.solid }}</strong> solid</div>
</div>
<div class="text-center text-dark small">
{{ date|date:'D' }}
</div>
{% endfor %}
{% endblock %}
{% block footer %}Last change: {{ last_change.time }}{% endblock %}

View File

@ -10,5 +10,6 @@
{% card_diaperchange_last object %} {% card_diaperchange_last object %}
{% card_tummytime_last object %} {% card_tummytime_last object %}
{% card_sleep_last object %} {% card_sleep_last object %}
{% card_diaperchange_types object %}
</div> </div>
{% endblock %} {% endblock %}

View File

@ -1,7 +1,10 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from __future__ import unicode_literals from __future__ import unicode_literals
from collections import OrderedDict
from django import template from django import template
from django.utils import timezone
from core.models import DiaperChange, Feeding, Sleep, TummyTime from core.models import DiaperChange, Feeding, Sleep, TummyTime
@ -22,6 +25,30 @@ def card_diaperchange_last(child):
return {'change': instance} return {'change': instance}
@register.inclusion_tag('cards/diaperchange_types.html')
def card_diaperchange_types(child):
"""Diaper change statistics for the last five days including today."""
limit = timezone.now() - timezone.timedelta(days=4)
instances = DiaperChange.objects.filter(
child=child).filter(time__gt=limit.date()).order_by('-time')
stats = OrderedDict()
for instance in instances:
date = instance.time.date()
if date not in stats.keys():
stats[date] = {'wet': 0, 'solid': 0}
if instance.wet:
stats[date]['wet'] += 1
if instance.solid:
stats[date]['solid'] += 1
for date, info in stats.items():
total = info['wet'] + info['solid']
stats[date]['wet_pct'] = info['wet'] / total * 100
stats[date]['solid_pct'] = info['solid'] / total * 100
return {'stats': stats, 'last_change': instances.last()}
@register.inclusion_tag('cards/tummytime_last.html') @register.inclusion_tag('cards/tummytime_last.html')
def card_tummytime_last(child): def card_tummytime_last(child):
instance = TummyTime.objects.filter(child=child).order_by('-end').first() instance = TummyTime.objects.filter(child=child).order_by('-end').first()