mirror of https://github.com/snachodog/mybuddy.git
Move timer_stop to a model method and add a restart method.
This commit is contained in:
parent
4def741d37
commit
a9bc52dfff
|
@ -5,7 +5,6 @@ from django import forms
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
|
|
||||||
from .models import Child, DiaperChange, Feeding, Sleep, Timer, TummyTime
|
from .models import Child, DiaperChange, Feeding, Sleep, Timer, TummyTime
|
||||||
from .utils import timer_stop
|
|
||||||
|
|
||||||
|
|
||||||
# Sets the default Child instance if only one exists in the database.
|
# Sets the default Child instance if only one exists in the database.
|
||||||
|
@ -94,7 +93,8 @@ class FeedingForm(forms.ModelForm):
|
||||||
def save(self, commit=True):
|
def save(self, commit=True):
|
||||||
instance = super(FeedingForm, self).save(commit=False)
|
instance = super(FeedingForm, self).save(commit=False)
|
||||||
if self.timer_id:
|
if self.timer_id:
|
||||||
timer_stop(self.timer_id, instance.end)
|
timer = Timer.objects.get(id=self.timer_id)
|
||||||
|
timer.stop(instance.end)
|
||||||
instance.save()
|
instance.save()
|
||||||
return instance
|
return instance
|
||||||
|
|
||||||
|
@ -125,7 +125,8 @@ class SleepForm(forms.ModelForm):
|
||||||
def save(self, commit=True):
|
def save(self, commit=True):
|
||||||
instance = super(SleepForm, self).save(commit=False)
|
instance = super(SleepForm, self).save(commit=False)
|
||||||
if self.timer_id:
|
if self.timer_id:
|
||||||
timer_stop(self.timer_id, instance.end)
|
timer = Timer.objects.get(id=self.timer_id)
|
||||||
|
timer.stop(instance.end)
|
||||||
instance.save()
|
instance.save()
|
||||||
return instance
|
return instance
|
||||||
|
|
||||||
|
@ -174,6 +175,7 @@ class TummyTimeForm(forms.ModelForm):
|
||||||
def save(self, commit=True):
|
def save(self, commit=True):
|
||||||
instance = super(TummyTimeForm, self).save(commit=False)
|
instance = super(TummyTimeForm, self).save(commit=False)
|
||||||
if self.timer_id:
|
if self.timer_id:
|
||||||
timer_stop(self.timer_id, instance.end)
|
timer = Timer.objects.get(id=self.timer_id)
|
||||||
|
timer.stop(instance.end)
|
||||||
instance.save()
|
instance.save()
|
||||||
return instance
|
return instance
|
||||||
|
|
|
@ -171,6 +171,21 @@ class Timer(models.Model):
|
||||||
else:
|
else:
|
||||||
return timezone.now() - self.start
|
return timezone.now() - self.start
|
||||||
|
|
||||||
|
def restart(self):
|
||||||
|
"""Restart the timer."""
|
||||||
|
self.start = timezone.now()
|
||||||
|
self.end = None
|
||||||
|
self.duration = None
|
||||||
|
self.active = True
|
||||||
|
self.save()
|
||||||
|
|
||||||
|
def stop(self, end=None):
|
||||||
|
"""Stop the timer."""
|
||||||
|
if not self.end:
|
||||||
|
self.end = timezone.now()
|
||||||
|
self.end = end
|
||||||
|
self.save()
|
||||||
|
|
||||||
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 None
|
self.name = self.name or None
|
||||||
|
|
|
@ -22,34 +22,38 @@
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
{% if perms.core.add_feeding %}
|
{% if perms.core.add_feeding %}
|
||||||
<a class="btn btn-success btn-lg btn-block p-3 mb-3"
|
<a class="btn btn-success btn-lg btn-block mb-3"
|
||||||
href="{% url 'feeding-add' %}?timer={{ timer.id }}"
|
href="{% url 'feeding-add' %}?timer={{ timer.id }}"
|
||||||
role="button"><i class="fa fa-spoon" aria-hidden="true"></i> Feeding</a>
|
role="button"><i class="fa fa-spoon" aria-hidden="true"></i> Feeding</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if perms.core.add_sleep %}
|
{% if perms.core.add_sleep %}
|
||||||
<a class="btn btn-success btn-lg btn-block p-3 mb-3"
|
<a class="btn btn-success btn-lg btn-block mb-3"
|
||||||
href="{% url 'sleep-add' %}?timer={{ timer.id }}"
|
href="{% url 'sleep-add' %}?timer={{ timer.id }}"
|
||||||
role="button"><i class="fa fa-bed" aria-hidden="true"></i> Sleep</a>
|
role="button"><i class="fa fa-bed" aria-hidden="true"></i> Sleep</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if perms.core.add_tummytime %}
|
{% if perms.core.add_tummytime %}
|
||||||
<a class="btn btn-success btn-lg btn-block p-3 mb-3"
|
<a class="btn btn-success btn-lg btn-block mb-3"
|
||||||
href="{% url 'tummytime-add' %}?timer={{ timer.id }}"
|
href="{% url 'tummytime-add' %}?timer={{ timer.id }}"
|
||||||
role="button"><i class="fa fa-smile-o" aria-hidden="true"></i> Tummy Time</a>
|
role="button"><i class="fa fa-smile-o" aria-hidden="true"></i> Tummy Time</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if perms.core.delete_timer %}
|
<div class="btn-group btn-group-lg center-block" role="group" aria-label="Timer actions">
|
||||||
<a class="btn btn-danger btn-lg btn-block p-3 mb-3"
|
|
||||||
href="{% url 'timer-delete' timer.id %}"
|
|
||||||
role="button"><i class="fa fa-trash" aria-hidden="true"></i> Delete Timer</a>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if object.active and perms.core.change_timer %}
|
{% if perms.core.delete_timer %}
|
||||||
<a class="btn btn-warning btn-lg btn-block p-3 mb-3"
|
<a class="btn btn-danger"
|
||||||
href="{% url 'timer-stop' timer.id %}"
|
href="{% url 'timer-delete' timer.id %}"
|
||||||
role="button"><i class="fa fa-stop" aria-hidden="true"></i> Stop Timer</a>
|
role="button"><i class="fa fa-trash" aria-hidden="true"></i></a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
{% if object.active and perms.core.change_timer %}
|
||||||
|
<a class="btn btn-warning"
|
||||||
|
href="{% url 'timer-stop' timer.id %}"
|
||||||
|
role="button"><i class="fa fa-stop" aria-hidden="true"></i></a>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
|
|
@ -15,16 +15,6 @@ def filter_by_params(request, model, available_params):
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
|
|
||||||
def timer_stop(timer_id, end=None):
|
|
||||||
"""Stop a timer instance by setting the end field value."""
|
|
||||||
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()
|
|
||||||
|
|
||||||
|
|
||||||
def duration_string(duration):
|
def duration_string(duration):
|
||||||
"""Format hours, minutes and seconds in a human-friendly way (e.g. "2
|
"""Format hours, minutes and seconds in a human-friendly way (e.g. "2
|
||||||
hours, 25 minutes, 31 seconds")"""
|
hours, 25 minutes, 31 seconds")"""
|
||||||
|
|
|
@ -12,7 +12,6 @@ from django.views.generic.list import ListView
|
||||||
from .models import Child, DiaperChange, Feeding, Note, Sleep, Timer, 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,
|
||||||
TimerForm, TummyTimeForm)
|
TimerForm, TummyTimeForm)
|
||||||
from .utils import timer_stop
|
|
||||||
|
|
||||||
|
|
||||||
class ChildList(PermissionRequiredMixin, ListView):
|
class ChildList(PermissionRequiredMixin, ListView):
|
||||||
|
@ -191,11 +190,24 @@ class TimerAddQuick(PermissionRequiredMixin, RedirectView):
|
||||||
return super(TimerAddQuick, self).get(request, *args, **kwargs)
|
return super(TimerAddQuick, self).get(request, *args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
class TimerRestart(PermissionRequiredMixin, RedirectView):
|
||||||
|
permission_required = ('core.change_timer',)
|
||||||
|
|
||||||
|
def get(self, request, *args, **kwargs):
|
||||||
|
instance = Timer.objects.get(id=kwargs['pk'])
|
||||||
|
instance.restart()
|
||||||
|
return super(TimerRestart, self).get(request, *args, **kwargs)
|
||||||
|
|
||||||
|
def get_redirect_url(self, *args, **kwargs):
|
||||||
|
return '/timer/{}'.format(kwargs['pk'])
|
||||||
|
|
||||||
|
|
||||||
class TimerStop(PermissionRequiredMixin, RedirectView):
|
class TimerStop(PermissionRequiredMixin, RedirectView):
|
||||||
permission_required = ('core.change_timer',)
|
permission_required = ('core.change_timer',)
|
||||||
|
|
||||||
def get(self, request, *args, **kwargs):
|
def get(self, request, *args, **kwargs):
|
||||||
timer_stop(kwargs['pk'])
|
instance = Timer.objects.get(id=kwargs['pk'])
|
||||||
|
instance.stop()
|
||||||
return super(TimerStop, self).get(request, *args, **kwargs)
|
return super(TimerStop, self).get(request, *args, **kwargs)
|
||||||
|
|
||||||
def get_redirect_url(self, *args, **kwargs):
|
def get_redirect_url(self, *args, **kwargs):
|
||||||
|
|
Loading…
Reference in New Issue