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

1from django import template 

2from django.contrib.contenttypes.models import ContentType 

3 

4register = template.Library() 

5 

6 

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""" 

11 

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 

34 

35 else: 

36 result = [{"name": "no parameter passed in", "count": "1"}] 

37 return result