Coverage for benefits/admin.py: 96%
24 statements
« prev ^ index » next coverage.py v7.6.8, created at 2024-12-02 19:29 +0000
« prev ^ index » next coverage.py v7.6.8, created at 2024-12-02 19:29 +0000
1from django.conf import settings
2from django.contrib import admin
3from django.contrib.auth.models import Group
4from django.template.response import TemplateResponse
5from benefits.core.models import TransitAgency
6from benefits.core import session
9class BenefitsAdminSite(admin.AdminSite):
11 site_title = "Cal-ITP Benefits Administrator"
12 site_header = "Administrator"
13 index_title = "Dashboard"
15 def index(self, request, extra_context=None):
16 """
17 Display the main admin index page if the user is a superuser or a "staff_group" user.
18 Display the agency dashboard index page if the user is an agency user.
19 get_app_list returns a sorted list of all the installed apps that have been
20 registered in this site.
21 """
22 app_list = self.get_app_list(request)
24 context = {
25 **self.each_context(request),
26 "title": self.index_title,
27 "subtitle": None,
28 "app_list": app_list,
29 **(extra_context or {}),
30 }
32 request.current_app = self.name
34 staff_group = Group.objects.get(name=settings.STAFF_GROUP_NAME)
35 if request.user.is_superuser or request.user.groups.filter(name=staff_group).exists():
36 return TemplateResponse(request, "admin/index.html", context)
37 else:
38 agency = TransitAgency.for_user(request.user)
39 session.update(request, agency=agency)
41 if agency is not None: 41 ↛ 53line 41 didn't jump to line 53 because the condition on line 41 was always true
42 has_permission_for_in_person = agency.customer_service_group in request.user.groups.all()
43 transit_processor_portal_url = agency.transit_processor.portal_url
45 context.update(
46 {
47 "has_permission_for_in_person": has_permission_for_in_person,
48 "transit_processor_portal_url": transit_processor_portal_url,
49 "title": f"{agency.long_name} | {self.index_title} | {self.site_title}",
50 }
51 )
53 return TemplateResponse(request, "admin/agency-dashboard-index.html", context)