2017-08-15 19:14:03 +00:00
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
from __future__ import unicode_literals
|
|
|
|
|
2017-08-17 01:57:01 +00:00
|
|
|
from django.core.urlresolvers import resolve
|
2017-08-17 17:18:14 +00:00
|
|
|
from django.contrib.auth.mixins import (LoginRequiredMixin,
|
|
|
|
PermissionRequiredMixin)
|
2017-08-18 04:48:26 +00:00
|
|
|
from django.urls import reverse
|
2017-08-18 03:10:07 +00:00
|
|
|
from django.views.generic.base import TemplateView, RedirectView
|
2017-08-18 03:45:56 +00:00
|
|
|
from django.views.generic.detail import DetailView
|
2017-08-15 20:24:55 +00:00
|
|
|
from django.views.generic.edit import CreateView, UpdateView, DeleteView
|
2017-08-16 13:12:49 +00:00
|
|
|
from django.views.generic.list import ListView
|
2017-08-15 19:14:03 +00:00
|
|
|
|
2017-08-17 01:57:01 +00:00
|
|
|
from .models import Child, DiaperChange, Feeding, Note, Sleep, Timer, TummyTime
|
2017-08-16 18:57:46 +00:00
|
|
|
from .forms import (ChildForm, DiaperChangeForm, FeedingForm, SleepForm,
|
2017-08-17 01:57:01 +00:00
|
|
|
TimerForm, TummyTimeForm)
|
2017-08-15 19:14:03 +00:00
|
|
|
|
2017-08-15 20:24:55 +00:00
|
|
|
|
2017-08-16 16:46:26 +00:00
|
|
|
class Dashboard(LoginRequiredMixin, TemplateView):
|
2017-08-15 19:14:03 +00:00
|
|
|
template_name = 'core/index.html'
|
2017-08-15 20:24:55 +00:00
|
|
|
|
|
|
|
|
2017-08-17 17:18:14 +00:00
|
|
|
class ChildList(PermissionRequiredMixin, ListView):
|
2017-08-16 13:12:49 +00:00
|
|
|
model = Child
|
2017-08-17 17:18:14 +00:00
|
|
|
permission_required = ('core.view_child',)
|
2017-08-16 13:12:49 +00:00
|
|
|
|
|
|
|
|
2017-08-17 17:18:14 +00:00
|
|
|
class ChildAdd(PermissionRequiredMixin, CreateView):
|
2017-08-16 12:49:58 +00:00
|
|
|
model = Child
|
2017-08-17 17:18:14 +00:00
|
|
|
permission_required = ('core.add_child',)
|
2017-08-16 18:57:46 +00:00
|
|
|
form_class = ChildForm
|
2017-08-16 13:12:49 +00:00
|
|
|
success_url = '/children'
|
2017-08-15 20:24:55 +00:00
|
|
|
|
|
|
|
|
2017-08-17 17:18:14 +00:00
|
|
|
class ChildUpdate(PermissionRequiredMixin, UpdateView):
|
2017-08-16 12:49:58 +00:00
|
|
|
model = Child
|
2017-08-17 17:18:14 +00:00
|
|
|
permission_required = ('core.change_child',)
|
2017-08-16 18:57:46 +00:00
|
|
|
form_class = ChildForm
|
2017-08-16 13:12:49 +00:00
|
|
|
success_url = '/children'
|
2017-08-15 20:24:55 +00:00
|
|
|
|
|
|
|
|
2017-08-17 17:18:14 +00:00
|
|
|
class ChildDelete(PermissionRequiredMixin, DeleteView):
|
2017-08-16 12:49:58 +00:00
|
|
|
model = Child
|
2017-08-17 17:18:14 +00:00
|
|
|
permission_required = ('core.delete_child',)
|
2017-08-16 13:43:34 +00:00
|
|
|
success_url = '/children'
|
2017-08-16 15:16:27 +00:00
|
|
|
|
|
|
|
|
2017-08-17 17:18:14 +00:00
|
|
|
class DiaperChangeList(PermissionRequiredMixin, ListView):
|
2017-08-16 15:16:27 +00:00
|
|
|
model = DiaperChange
|
2017-08-17 17:18:14 +00:00
|
|
|
permission_required = ('core.view_diaperchange',)
|
2017-08-16 15:16:27 +00:00
|
|
|
|
|
|
|
|
2017-08-17 17:18:14 +00:00
|
|
|
class DiaperChangeAdd(PermissionRequiredMixin, CreateView):
|
2017-08-16 15:16:27 +00:00
|
|
|
model = DiaperChange
|
2017-08-17 17:18:14 +00:00
|
|
|
permission_required = ('core.add_diaperchange',)
|
2017-08-16 18:57:46 +00:00
|
|
|
form_class = DiaperChangeForm
|
2017-08-16 15:16:27 +00:00
|
|
|
success_url = '/changes'
|
|
|
|
|
|
|
|
|
2017-08-17 17:18:14 +00:00
|
|
|
class DiaperChangeUpdate(PermissionRequiredMixin, UpdateView):
|
2017-08-16 15:16:27 +00:00
|
|
|
model = DiaperChange
|
2017-08-17 17:18:14 +00:00
|
|
|
permission_required = ('core.change_diaperchange',)
|
2017-08-16 18:57:46 +00:00
|
|
|
form_class = DiaperChangeForm
|
2017-08-16 15:16:27 +00:00
|
|
|
success_url = '/changes'
|
|
|
|
|
|
|
|
|
2017-08-17 17:18:14 +00:00
|
|
|
class DiaperChangeDelete(PermissionRequiredMixin, DeleteView):
|
2017-08-16 15:16:27 +00:00
|
|
|
model = DiaperChange
|
2017-08-17 17:18:14 +00:00
|
|
|
permission_required = ('core.delete_diaperchange',)
|
2017-08-16 15:16:27 +00:00
|
|
|
success_url = '/changes'
|
|
|
|
|
|
|
|
|
2017-08-17 17:18:14 +00:00
|
|
|
class FeedingList(PermissionRequiredMixin, ListView):
|
2017-08-16 15:16:27 +00:00
|
|
|
model = Feeding
|
2017-08-17 17:18:14 +00:00
|
|
|
permission_required = ('core.view_feeding',)
|
2017-08-16 15:16:27 +00:00
|
|
|
|
|
|
|
|
2017-08-17 17:18:14 +00:00
|
|
|
class FeedingAdd(PermissionRequiredMixin, CreateView):
|
2017-08-16 15:16:27 +00:00
|
|
|
model = Feeding
|
2017-08-17 17:18:14 +00:00
|
|
|
permission_required = ('core.add_feeding',)
|
2017-08-16 18:57:46 +00:00
|
|
|
form_class = FeedingForm
|
2017-08-16 15:16:27 +00:00
|
|
|
success_url = '/feedings'
|
|
|
|
|
2017-08-18 04:42:37 +00:00
|
|
|
def get_form_kwargs(self):
|
|
|
|
kwargs = super(FeedingAdd, self).get_form_kwargs()
|
|
|
|
# Add timer to be used by FeedingForm.__init__
|
|
|
|
kwargs.update({'timer': self.request.GET.get('timer', None)})
|
|
|
|
return kwargs
|
|
|
|
|
2017-08-16 15:16:27 +00:00
|
|
|
|
2017-08-17 17:18:14 +00:00
|
|
|
class FeedingUpdate(PermissionRequiredMixin, UpdateView):
|
2017-08-16 15:16:27 +00:00
|
|
|
model = Feeding
|
2017-08-17 17:18:14 +00:00
|
|
|
permission_required = ('core.change_feeding',)
|
2017-08-16 18:57:46 +00:00
|
|
|
form_class = FeedingForm
|
2017-08-16 15:16:27 +00:00
|
|
|
success_url = '/feedings'
|
|
|
|
|
|
|
|
|
2017-08-17 17:18:14 +00:00
|
|
|
class FeedingDelete(PermissionRequiredMixin, DeleteView):
|
2017-08-16 15:16:27 +00:00
|
|
|
model = Feeding
|
2017-08-17 17:18:14 +00:00
|
|
|
permission_required = ('core.delete_feeding',)
|
2017-08-16 15:16:27 +00:00
|
|
|
success_url = '/feedings'
|
|
|
|
|
|
|
|
|
2017-08-17 17:18:14 +00:00
|
|
|
class NoteList(PermissionRequiredMixin, ListView):
|
2017-08-16 15:16:27 +00:00
|
|
|
model = Note
|
2017-08-17 17:18:14 +00:00
|
|
|
permission_required = ('core.view_note',)
|
2017-08-16 15:16:27 +00:00
|
|
|
|
|
|
|
|
2017-08-17 17:18:14 +00:00
|
|
|
class NoteAdd(PermissionRequiredMixin, CreateView):
|
2017-08-16 15:16:27 +00:00
|
|
|
model = Note
|
2017-08-17 17:18:14 +00:00
|
|
|
permission_required = ('core.add_note',)
|
2017-08-16 15:16:27 +00:00
|
|
|
fields = ['child', 'note']
|
|
|
|
success_url = '/notes'
|
|
|
|
|
|
|
|
|
2017-08-17 17:18:14 +00:00
|
|
|
class NoteUpdate(PermissionRequiredMixin, UpdateView):
|
2017-08-16 15:16:27 +00:00
|
|
|
model = Note
|
2017-08-17 17:18:14 +00:00
|
|
|
permission_required = ('core.change_note',)
|
2017-08-16 15:16:27 +00:00
|
|
|
fields = ['child', 'note']
|
|
|
|
success_url = '/notes'
|
|
|
|
|
|
|
|
|
2017-08-17 17:18:14 +00:00
|
|
|
class NoteDelete(PermissionRequiredMixin, DeleteView):
|
2017-08-16 15:16:27 +00:00
|
|
|
model = Note
|
2017-08-17 17:18:14 +00:00
|
|
|
permission_required = ('core.delete_note',)
|
2017-08-16 15:16:27 +00:00
|
|
|
success_url = '/notes'
|
|
|
|
|
|
|
|
|
2017-08-17 17:18:14 +00:00
|
|
|
class SleepList(PermissionRequiredMixin, ListView):
|
2017-08-16 15:16:27 +00:00
|
|
|
model = Sleep
|
2017-08-17 17:18:14 +00:00
|
|
|
permission_required = ('core.view_sleep',)
|
2017-08-16 15:16:27 +00:00
|
|
|
|
|
|
|
|
2017-08-17 17:18:14 +00:00
|
|
|
class SleepAdd(PermissionRequiredMixin, CreateView):
|
2017-08-16 15:16:27 +00:00
|
|
|
model = Sleep
|
2017-08-17 17:18:14 +00:00
|
|
|
permission_required = ('core.add_sleep',)
|
2017-08-16 18:57:46 +00:00
|
|
|
form_class = SleepForm
|
2017-08-16 15:16:27 +00:00
|
|
|
success_url = '/sleep'
|
|
|
|
|
2017-08-18 04:42:37 +00:00
|
|
|
def get_form_kwargs(self):
|
|
|
|
kwargs = super(SleepAdd, self).get_form_kwargs()
|
|
|
|
# Add timer to be used by SleepForm.__init__
|
|
|
|
kwargs.update({'timer': self.request.GET.get('timer', None)})
|
|
|
|
return kwargs
|
|
|
|
|
2017-08-16 15:16:27 +00:00
|
|
|
|
2017-08-17 17:18:14 +00:00
|
|
|
class SleepUpdate(PermissionRequiredMixin, UpdateView):
|
2017-08-16 15:16:27 +00:00
|
|
|
model = Sleep
|
2017-08-17 17:18:14 +00:00
|
|
|
permission_required = ('core.change_sleep',)
|
2017-08-16 18:57:46 +00:00
|
|
|
form_class = SleepForm
|
2017-08-16 15:16:27 +00:00
|
|
|
success_url = '/sleep'
|
|
|
|
|
|
|
|
|
2017-08-17 17:18:14 +00:00
|
|
|
class SleepDelete(PermissionRequiredMixin, DeleteView):
|
2017-08-16 15:16:27 +00:00
|
|
|
model = Sleep
|
2017-08-17 17:18:14 +00:00
|
|
|
permission_required = ('core.delete_sleep',)
|
2017-08-16 15:16:27 +00:00
|
|
|
success_url = '/sleep'
|
|
|
|
|
|
|
|
|
2017-08-18 03:45:56 +00:00
|
|
|
class TimerDetail(PermissionRequiredMixin, DetailView):
|
|
|
|
model = Timer
|
|
|
|
template_name = 'timer_detail.html' # To be consistent w/Timer templates.
|
|
|
|
permission_required = ('core.view_timer',)
|
|
|
|
|
|
|
|
|
2017-08-17 17:18:14 +00:00
|
|
|
class TimerAdd(PermissionRequiredMixin, CreateView):
|
2017-08-17 01:57:01 +00:00
|
|
|
model = Timer
|
2017-08-17 17:18:14 +00:00
|
|
|
permission_required = ('core.add_timer',)
|
2017-08-17 01:57:01 +00:00
|
|
|
form_class = TimerForm
|
|
|
|
|
2017-08-18 00:42:47 +00:00
|
|
|
def get_form_kwargs(self):
|
|
|
|
kwargs = super(TimerAdd, self).get_form_kwargs()
|
|
|
|
kwargs.update({'user': self.request.user})
|
|
|
|
return kwargs
|
|
|
|
|
2017-08-17 01:57:01 +00:00
|
|
|
def get_success_url(self):
|
|
|
|
if resolve(self.request.POST['success_url']).url_name:
|
|
|
|
url = self.request.POST['success_url']
|
|
|
|
else:
|
|
|
|
url = '/'
|
|
|
|
return url
|
|
|
|
|
|
|
|
|
2017-08-18 03:10:07 +00:00
|
|
|
class TimerAddQuick(PermissionRequiredMixin, RedirectView):
|
|
|
|
permission_required = ('core.add_timer',)
|
|
|
|
|
|
|
|
def get(self, request, *args, **kwargs):
|
|
|
|
instance = Timer.objects.create(user=request.user)
|
|
|
|
instance.save()
|
2017-08-18 04:48:26 +00:00
|
|
|
self.url = request.GET.get(
|
|
|
|
'next', reverse('timer-detail', args={instance.id}))
|
2017-08-18 03:10:07 +00:00
|
|
|
return super(TimerAddQuick, self).get(request, *args, **kwargs)
|
|
|
|
|
|
|
|
|
2017-08-17 17:18:14 +00:00
|
|
|
class TummyTimeList(PermissionRequiredMixin, ListView):
|
2017-08-16 15:16:27 +00:00
|
|
|
model = TummyTime
|
2017-08-17 17:18:14 +00:00
|
|
|
permission_required = ('core.view_tummytime',)
|
2017-08-16 15:16:27 +00:00
|
|
|
|
|
|
|
|
2017-08-17 17:18:14 +00:00
|
|
|
class TummyTimeAdd(PermissionRequiredMixin, CreateView):
|
2017-08-16 15:16:27 +00:00
|
|
|
model = TummyTime
|
2017-08-17 17:18:14 +00:00
|
|
|
permission_required = ('core.add_tummytime',)
|
2017-08-16 18:57:46 +00:00
|
|
|
form_class = TummyTimeForm
|
2017-08-16 15:16:27 +00:00
|
|
|
success_url = '/tummy-time'
|
|
|
|
|
2017-08-18 04:42:37 +00:00
|
|
|
def get_form_kwargs(self):
|
|
|
|
kwargs = super(TummyTimeAdd, self).get_form_kwargs()
|
|
|
|
# Add timer to be used by TummyTimeForm.__init__
|
|
|
|
kwargs.update({'timer': self.request.GET.get('timer', None)})
|
|
|
|
return kwargs
|
|
|
|
|
2017-08-16 15:16:27 +00:00
|
|
|
|
2017-08-17 17:18:14 +00:00
|
|
|
class TummyTimeUpdate(PermissionRequiredMixin, UpdateView):
|
2017-08-16 15:16:27 +00:00
|
|
|
model = TummyTime
|
2017-08-16 18:57:46 +00:00
|
|
|
form_class = TummyTimeForm
|
2017-08-16 15:16:27 +00:00
|
|
|
success_url = '/tummy-time'
|
|
|
|
|
|
|
|
|
2017-08-17 17:18:14 +00:00
|
|
|
class TummyTimeDelete(PermissionRequiredMixin, DeleteView):
|
2017-08-16 15:16:27 +00:00
|
|
|
model = TummyTime
|
|
|
|
success_url = '/tummy-time'
|