Gather all existing reports on analytics page

This commit is contained in:
Rachid Mrad 2024-02-27 18:43:59 -05:00
parent 348d777260
commit 56cd0b6d15
No known key found for this signature in database
5 changed files with 99 additions and 113 deletions

View file

@ -357,17 +357,58 @@ class MyUserAdmin(BaseUserAdmin):
ordering = ["first_name", "last_name", "email"]
def get_urls(self):
"""Map a new page in admin for analytics."""
urlpatterns = super().get_urls()
# Used to extrapolate a path name, for instance
# name="{app_label}_{model_name}_export_data_type"
domain_path_meta = self.model._meta.app_label, models.Domain._meta.model_name
my_urls = [
path(
"analytics/",
self.admin_site.admin_view(self.user_analytics),
name="user_analytics",
),
path(
"export_data_type/",
self.export_data_type,
name="%s_%s_export_data_type" % domain_path_meta,
),
path(
"export_data_full/",
self.export_data_full,
name="%s_%s_export_data_full" % domain_path_meta,
),
path(
"export_data_federal/",
self.export_data_federal,
name="%s_%s_export_data_federal" % domain_path_meta,
),
]
return my_urls + urlpatterns
def export_data_type(self, request):
# match the CSV example with all the fields
response = HttpResponse(content_type="text/csv")
response["Content-Disposition"] = 'attachment; filename="domains-by-type.csv"'
csv_export.export_data_type_to_csv(response)
return response
def export_data_full(self, request):
# Smaller export based on 1
response = HttpResponse(content_type="text/csv")
response["Content-Disposition"] = 'attachment; filename="current-full.csv"'
csv_export.export_data_full_to_csv(response)
return response
def export_data_federal(self, request):
# Federal only
response = HttpResponse(content_type="text/csv")
response["Content-Disposition"] = 'attachment; filename="current-federal.csv"'
csv_export.export_data_federal_to_csv(response)
return response
def user_analytics(self, request):
last_30_days_applications = models.DomainApplication.objects.filter(
@ -1103,60 +1144,11 @@ class DomainAdmin(ListHeaderAdmin):
search_fields = ["name"]
search_help_text = "Search by domain name."
change_form_template = "django/admin/domain_change_form.html"
change_list_template = "django/admin/domain_change_list.html"
readonly_fields = ["state", "expiration_date", "first_ready", "deleted"]
# Table ordering
ordering = ["name"]
def export_data_type(self, request):
# match the CSV example with all the fields
response = HttpResponse(content_type="text/csv")
response["Content-Disposition"] = 'attachment; filename="domains-by-type.csv"'
csv_export.export_data_type_to_csv(response)
return response
def export_data_full(self, request):
# Smaller export based on 1
response = HttpResponse(content_type="text/csv")
response["Content-Disposition"] = 'attachment; filename="current-full.csv"'
csv_export.export_data_full_to_csv(response)
return response
def export_data_federal(self, request):
# Federal only
response = HttpResponse(content_type="text/csv")
response["Content-Disposition"] = 'attachment; filename="current-federal.csv"'
csv_export.export_data_federal_to_csv(response)
return response
def get_urls(self):
urlpatterns = super().get_urls()
# Used to extrapolate a path name, for instance
# name="{app_label}_{model_name}_export_data_type"
info = self.model._meta.app_label, self.model._meta.model_name
my_url = [
path(
"export_data_type/",
self.export_data_type,
name="%s_%s_export_data_type" % info,
),
path(
"export_data_full/",
self.export_data_full,
name="%s_%s_export_data_full" % info,
),
path(
"export_data_federal/",
self.export_data_federal,
name="%s_%s_export_data_federal" % info,
),
]
return my_url + urlpatterns
def response_change(self, request, obj):
# Create dictionary of action functions
ACTION_FUNCTIONS = {