2017-08-18 13:02:31 +00:00
|
|
|
# -*- coding: utf-8 -*-
|
2017-11-06 21:24:21 +00:00
|
|
|
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
|
|
|
|
|
2021-09-17 02:34:33 +00:00
|
|
|
from babybuddy.mixins import LoginRequiredMixin, PermissionRequiredMixin
|
2017-08-18 13:02:31 +00:00
|
|
|
from core.models import Child
|
|
|
|
|
|
|
|
|
2017-11-06 21:24:21 +00:00
|
|
|
class Dashboard(LoginRequiredMixin, TemplateView):
|
|
|
|
# TODO: Use .card-deck in this template once BS4 is finalized.
|
2022-02-10 00:00:30 +00:00
|
|
|
template_name = "dashboard/dashboard.html"
|
2017-11-06 21:24:21 +00:00
|
|
|
|
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):
|
2017-08-24 12:04:54 +00:00
|
|
|
children = Child.objects.count()
|
|
|
|
if children == 0:
|
2022-02-10 00:00:30 +00:00
|
|
|
return HttpResponseRedirect(reverse("babybuddy:welcome"))
|
2017-08-24 12:04:54 +00:00
|
|
|
elif children == 1:
|
2017-11-06 21:24:21 +00:00
|
|
|
return HttpResponseRedirect(
|
2022-02-10 00:00:30 +00:00
|
|
|
reverse("dashboard:dashboard-child", args={Child.objects.first().slug})
|
2017-12-03 21:52:27 +00:00
|
|
|
)
|
2017-11-06 21:24:21 +00:00
|
|
|
return super(Dashboard, self).get(request, *args, **kwargs)
|
2017-08-18 13:02:31 +00:00
|
|
|
|
2017-08-24 17:09:41 +00:00
|
|
|
def get_context_data(self, **kwargs):
|
|
|
|
context = super(Dashboard, self).get_context_data(**kwargs)
|
2022-02-10 00:00:30 +00:00
|
|
|
context["objects"] = Child.objects.all().order_by(
|
|
|
|
"last_name", "first_name", "id"
|
|
|
|
)
|
2017-08-24 17:09:41 +00:00
|
|
|
return context
|
|
|
|
|
2017-08-18 13:02:31 +00:00
|
|
|
|
2021-09-17 02:34:33 +00:00
|
|
|
class ChildDashboard(PermissionRequiredMixin, DetailView):
|
2017-08-18 13:02:31 +00:00
|
|
|
model = Child
|
2022-02-10 00:00:30 +00:00
|
|
|
permission_required = ("core.view_child",)
|
|
|
|
template_name = "dashboard/child.html"
|