mybuddy/core/views.py

240 lines
6.8 KiB
Python
Raw Normal View History

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-18 13:02:31 +00:00
from django.contrib.auth.mixins import PermissionRequiredMixin
from django.urls import reverse
2017-08-18 13:02:31 +00:00
from django.views.generic.base import 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
from .forms import (ChildForm, DiaperChangeForm, FeedingForm, SleepForm,
2017-08-17 01:57:01 +00:00
TimerForm, TummyTimeForm)
from .utils import timer_stop
2017-08-15 19:14:03 +00:00
2017-08-15 20:24:55 +00:00
class ChildList(PermissionRequiredMixin, ListView):
2017-08-16 13:12:49 +00:00
model = Child
permission_required = ('core.view_child',)
2017-08-16 13:12:49 +00:00
class ChildAdd(PermissionRequiredMixin, CreateView):
2017-08-16 12:49:58 +00:00
model = Child
permission_required = ('core.add_child',)
form_class = ChildForm
2017-08-16 13:12:49 +00:00
success_url = '/children'
2017-08-15 20:24:55 +00:00
class ChildUpdate(PermissionRequiredMixin, UpdateView):
2017-08-16 12:49:58 +00:00
model = Child
permission_required = ('core.change_child',)
form_class = ChildForm
2017-08-16 13:12:49 +00:00
success_url = '/children'
2017-08-15 20:24:55 +00:00
class ChildDelete(PermissionRequiredMixin, DeleteView):
2017-08-16 12:49:58 +00:00
model = Child
permission_required = ('core.delete_child',)
2017-08-16 13:43:34 +00:00
success_url = '/children'
2017-08-16 15:16:27 +00:00
class DiaperChangeList(PermissionRequiredMixin, ListView):
2017-08-16 15:16:27 +00:00
model = DiaperChange
permission_required = ('core.view_diaperchange',)
2017-08-16 15:16:27 +00:00
class DiaperChangeAdd(PermissionRequiredMixin, CreateView):
2017-08-16 15:16:27 +00:00
model = DiaperChange
permission_required = ('core.add_diaperchange',)
form_class = DiaperChangeForm
2017-08-16 15:16:27 +00:00
success_url = '/changes'
class DiaperChangeUpdate(PermissionRequiredMixin, UpdateView):
2017-08-16 15:16:27 +00:00
model = DiaperChange
permission_required = ('core.change_diaperchange',)
form_class = DiaperChangeForm
2017-08-16 15:16:27 +00:00
success_url = '/changes'
class DiaperChangeDelete(PermissionRequiredMixin, DeleteView):
2017-08-16 15:16:27 +00:00
model = DiaperChange
permission_required = ('core.delete_diaperchange',)
2017-08-16 15:16:27 +00:00
success_url = '/changes'
class FeedingList(PermissionRequiredMixin, ListView):
2017-08-16 15:16:27 +00:00
model = Feeding
permission_required = ('core.view_feeding',)
2017-08-16 15:16:27 +00:00
class FeedingAdd(PermissionRequiredMixin, CreateView):
2017-08-16 15:16:27 +00:00
model = Feeding
permission_required = ('core.add_feeding',)
form_class = FeedingForm
2017-08-16 15:16:27 +00:00
success_url = '/feedings'
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
class FeedingUpdate(PermissionRequiredMixin, UpdateView):
2017-08-16 15:16:27 +00:00
model = Feeding
permission_required = ('core.change_feeding',)
form_class = FeedingForm
2017-08-16 15:16:27 +00:00
success_url = '/feedings'
class FeedingDelete(PermissionRequiredMixin, DeleteView):
2017-08-16 15:16:27 +00:00
model = Feeding
permission_required = ('core.delete_feeding',)
2017-08-16 15:16:27 +00:00
success_url = '/feedings'
class NoteList(PermissionRequiredMixin, ListView):
2017-08-16 15:16:27 +00:00
model = Note
permission_required = ('core.view_note',)
2017-08-16 15:16:27 +00:00
class NoteAdd(PermissionRequiredMixin, CreateView):
2017-08-16 15:16:27 +00:00
model = Note
permission_required = ('core.add_note',)
2017-08-16 15:16:27 +00:00
fields = ['child', 'note']
success_url = '/notes'
class NoteUpdate(PermissionRequiredMixin, UpdateView):
2017-08-16 15:16:27 +00:00
model = Note
permission_required = ('core.change_note',)
2017-08-16 15:16:27 +00:00
fields = ['child', 'note']
success_url = '/notes'
class NoteDelete(PermissionRequiredMixin, DeleteView):
2017-08-16 15:16:27 +00:00
model = Note
permission_required = ('core.delete_note',)
2017-08-16 15:16:27 +00:00
success_url = '/notes'
class SleepList(PermissionRequiredMixin, ListView):
2017-08-16 15:16:27 +00:00
model = Sleep
permission_required = ('core.view_sleep',)
2017-08-16 15:16:27 +00:00
class SleepAdd(PermissionRequiredMixin, CreateView):
2017-08-16 15:16:27 +00:00
model = Sleep
permission_required = ('core.add_sleep',)
form_class = SleepForm
2017-08-16 15:16:27 +00:00
success_url = '/sleep'
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
class SleepUpdate(PermissionRequiredMixin, UpdateView):
2017-08-16 15:16:27 +00:00
model = Sleep
permission_required = ('core.change_sleep',)
form_class = SleepForm
2017-08-16 15:16:27 +00:00
success_url = '/sleep'
class SleepDelete(PermissionRequiredMixin, DeleteView):
2017-08-16 15:16:27 +00:00
model = Sleep
permission_required = ('core.delete_sleep',)
2017-08-16 15:16:27 +00:00
success_url = '/sleep'
2017-09-09 15:54:34 +00:00
class TimerList(PermissionRequiredMixin, ListView):
model = Timer
permission_required = ('core.view_timer',)
2017-08-18 03:45:56 +00:00
class TimerDetail(PermissionRequiredMixin, DetailView):
model = Timer
permission_required = ('core.view_timer',)
class TimerAdd(PermissionRequiredMixin, CreateView):
2017-08-17 01:57:01 +00:00
model = Timer
permission_required = ('core.add_timer',)
2017-08-17 01:57:01 +00:00
form_class = TimerForm
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()
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)
class TimerStop(PermissionRequiredMixin, RedirectView):
permission_required = ('core.change_timer',)
def get(self, request, *args, **kwargs):
timer_stop(kwargs['pk'])
return super(TimerStop, self).get(request, *args, **kwargs)
def get_redirect_url(self, *args, **kwargs):
return '/timer/{}'.format(kwargs['pk'])
class TimerDelete(PermissionRequiredMixin, DeleteView):
model = Timer
permission_required = ('core.delete_timer',)
success_url = '/'
class TummyTimeList(PermissionRequiredMixin, ListView):
2017-08-16 15:16:27 +00:00
model = TummyTime
permission_required = ('core.view_tummytime',)
2017-08-16 15:16:27 +00:00
class TummyTimeAdd(PermissionRequiredMixin, CreateView):
2017-08-16 15:16:27 +00:00
model = TummyTime
permission_required = ('core.add_tummytime',)
form_class = TummyTimeForm
2017-08-16 15:16:27 +00:00
success_url = '/tummy-time'
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
class TummyTimeUpdate(PermissionRequiredMixin, UpdateView):
2017-08-16 15:16:27 +00:00
model = TummyTime
permission_required = ('core.change_tummytime',)
form_class = TummyTimeForm
2017-08-16 15:16:27 +00:00
success_url = '/tummy-time'
class TummyTimeDelete(PermissionRequiredMixin, DeleteView):
2017-08-16 15:16:27 +00:00
model = TummyTime
permission_required = ('core.delete_tummytime',)
2017-08-16 15:16:27 +00:00
success_url = '/tummy-time'