Coverage for stats/templatetags/stats_extras.py: 21%
24 statements
« prev ^ index » next coverage.py v7.6.0, created at 2024-07-27 11:19 +0000
« prev ^ index » next coverage.py v7.6.0, created at 2024-07-27 11:19 +0000
1from django import template
2from django.contrib.contenttypes.models import ContentType
4register = template.Library()
7@register.simple_tag
8def create_object_count(app=None):
9 """fetches all models of the passed in app and returns a
10 dict containg the name of each class and the number of instances"""
12 if app:
13 models = ContentType.objects.filter(app_label=app)
14 result = []
15 for x in models:
16 modelname = x.name
17 modelname = modelname.replace(" ", "").lower()
18 try:
19 fetched_model = ContentType.objects.get(
20 app_label=app, model=modelname
21 ).model_class()
22 item = {
23 "name": modelname.title(),
24 "count": fetched_model.objects.count(),
25 }
26 except: # noqa: E722
27 item = {"name": x, "count": "Some error occured"}
28 try:
29 item["link"] = fetched_model.get_listview_url()
30 except AttributeError:
31 item["link"] = None
32 result.append(item)
33 return result
35 else:
36 result = [{"name": "no parameter passed in", "count": "1"}]
37 return result