mybuddy/dashboard/views.py

40 lines
1.4 KiB
Python
Raw Normal View History

2017-08-18 13:02:31 +00:00
# -*- coding: utf-8 -*-
from django.http import HttpResponseRedirect
2017-08-18 13:02:31 +00:00
from django.urls import reverse
2017-11-09 12:24:32 +00:00
from django.views.generic.base import TemplateView
2017-08-18 13:02:31 +00:00
from django.views.generic.detail import DetailView
from babybuddy.mixins import LoginRequiredMixin, PermissionRequiredMixin
2017-08-18 13:02:31 +00:00
from core.models import Child
class Dashboard(LoginRequiredMixin, TemplateView):
# TODO: Use .card-deck in this template once BS4 is finalized.
template_name = 'dashboard/dashboard.html'
2017-08-18 13:02:31 +00:00
# Show the overall dashboard or a child dashboard if one Child instance.
def get(self, request, *args, **kwargs):
children = Child.objects.count()
if children == 0:
2017-12-03 21:52:27 +00:00
return HttpResponseRedirect(reverse('babybuddy:welcome'))
elif children == 1:
return HttpResponseRedirect(
2017-12-03 21:52:27 +00:00
reverse(
'dashboard:dashboard-child',
args={Child.objects.first().slug}
)
)
return super(Dashboard, self).get(request, *args, **kwargs)
2017-08-18 13:02:31 +00:00
def get_context_data(self, **kwargs):
context = super(Dashboard, self).get_context_data(**kwargs)
context['objects'] = Child.objects.all() \
.order_by('last_name', 'first_name', 'id')
return context
2017-08-18 13:02:31 +00:00
class ChildDashboard(PermissionRequiredMixin, DetailView):
2017-08-18 13:02:31 +00:00
model = Child
permission_required = ('core.view_child',)
template_name = 'dashboard/child.html'