Add ability to create a Timer.

This commit is contained in:
Christopher Charbonneau Wells 2017-08-16 21:57:01 -04:00
parent 387535a200
commit 72b1f3e37b
8 changed files with 47 additions and 16 deletions

View File

@ -3,7 +3,7 @@ from __future__ import unicode_literals
from django import forms from django import forms
from .models import Child, DiaperChange, Feeding, Sleep, TummyTime from .models import Child, DiaperChange, Feeding, Sleep, Timer, TummyTime
class ChildForm(forms.ModelForm): class ChildForm(forms.ModelForm):
@ -68,6 +68,14 @@ class SleepForm(forms.ModelForm):
} }
class TimerForm(forms.ModelForm):
next = forms.CharField(required=False)
class Meta:
model = Timer
fields = ['name']
class TummyTimeForm(forms.ModelForm): class TummyTimeForm(forms.ModelForm):
class Meta: class Meta:
model = TummyTime model = TummyTime

View File

@ -131,6 +131,7 @@ class Timer(models.Model):
def save(self, *args, **kwargs): def save(self, *args, **kwargs):
self.active = self.end is None self.active = self.end is None
self.name = self.name or 'Unnamed Timer'
super(Timer, self).save(*args, **kwargs) super(Timer, self).save(*args, **kwargs)

View File

@ -62,6 +62,7 @@
</div> </div>
<div class="col-lg-2"> <div class="col-lg-2">
<h1>Timers</h1> <h1>Timers</h1>
{% add_timer request.path %}
{% list_timers %} {% list_timers %}
</div> </div>
</div> </div>

View File

@ -0,0 +1,13 @@
<div class="card border-primary text-center mb-2">
<div class="card-header text-white bg-primary ">New Timer</div>
<div class="card-body text-primary">
<form action="{% url 'timer-add' %}" class="form-inline" role="form" method="post">
{% csrf_token %}
<input type="hidden" name="success_url" value="{{ success_url }}" />
<div class="input-group input-group-sm">
<input name="name" value="" class="form-control" id="id_name" maxlength="255" type="text" placeholder="Timer Name (optional)">
<button type="submit" class="input-group-addon btn btn-primary">Start</button>
</div>
</form>
</div>
</div>

View File

@ -1,16 +1,3 @@
<div class="card border-primary text-center mb-2">
<div class="card-header text-white bg-primary ">New Timer</div>
<div class="card-body text-primary">
<form class="form-inline" role="form" method="post">
{% csrf_token %}
<div class="input-group input-group-sm">
<input name="name" value="" class="form-control" id="id_name" maxlength="255" type="text" placeholder="Timer Name (optional)">
<button type="submit" class="input-group-addon btn btn-primary">Start</button>
</div>
</form>
</div>
</div>
{% for timer in timers %} {% for timer in timers %}
<div class="card border-success text-center mb-2"> <div class="card border-success text-center mb-2">
<div class="card-header text-white bg-success ">{{ timer.name }}</div> <div class="card-header text-white bg-success ">{{ timer.name }}</div>

View File

@ -13,3 +13,9 @@ register = template.Library()
def list_timers(active=True): def list_timers(active=True):
timers = Timer.objects.filter(active=active) timers = Timer.objects.filter(active=active)
return {'timers': timers} return {'timers': timers}
@register.inclusion_tag('timer_add.html')
def add_timer(success_url):
return {'success_url': success_url}

View File

@ -45,6 +45,8 @@ urlpatterns = [
url(r'sleep/(?P<pk>[0-9]+)/delete/$', views.SleepDelete.as_view(), url(r'sleep/(?P<pk>[0-9]+)/delete/$', views.SleepDelete.as_view(),
name='sleep-delete'), name='sleep-delete'),
url(r'timer/add/$', views.TimerAdd.as_view(), name='timer-add'),
url(r'tummy-time/$', views.TummyTimeList.as_view(), name='tummytime-list'), url(r'tummy-time/$', views.TummyTimeList.as_view(), name='tummytime-list'),
url(r'tummy-time/add/$', views.TummyTimeAdd.as_view(), url(r'tummy-time/add/$', views.TummyTimeAdd.as_view(),
name='tummytime-add'), name='tummytime-add'),

View File

@ -1,14 +1,15 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from __future__ import unicode_literals from __future__ import unicode_literals
from django.core.urlresolvers import resolve
from django.contrib.auth.mixins import LoginRequiredMixin from django.contrib.auth.mixins import LoginRequiredMixin
from django.views.generic.base import TemplateView from django.views.generic.base import TemplateView
from django.views.generic.edit import CreateView, UpdateView, DeleteView from django.views.generic.edit import CreateView, UpdateView, DeleteView
from django.views.generic.list import ListView from django.views.generic.list import ListView
from .models import Child, DiaperChange, Feeding, Note, Sleep, TummyTime from .models import Child, DiaperChange, Feeding, Note, Sleep, Timer, TummyTime
from .forms import (ChildForm, DiaperChangeForm, FeedingForm, SleepForm, from .forms import (ChildForm, DiaperChangeForm, FeedingForm, SleepForm,
TummyTimeForm) TimerForm, TummyTimeForm)
class Dashboard(LoginRequiredMixin, TemplateView): class Dashboard(LoginRequiredMixin, TemplateView):
@ -120,6 +121,18 @@ class SleepDelete(LoginRequiredMixin, DeleteView):
success_url = '/sleep' success_url = '/sleep'
class TimerAdd(LoginRequiredMixin, CreateView):
model = Timer
form_class = TimerForm
def get_success_url(self):
if resolve(self.request.POST['success_url']).url_name:
url = self.request.POST['success_url']
else:
url = '/'
return url
class TummyTimeList(LoginRequiredMixin, ListView): class TummyTimeList(LoginRequiredMixin, ListView):
model = TummyTime model = TummyTime