Coverage for apis_core/entities/templatetags/entities.py: 73%

15 statements  

« prev     ^ index     » next       coverage.py v7.15.2, created at 2026-09-14 10:55 +0000

1from django import template 

2from django.apps import apps 

3from django.contrib.contenttypes.models import ContentType 

4 

5from apis_core.entities.abc import Entity 

6 

7register = template.Library() 

8 

9 

10def is_entity(content_type: ContentType): 

11 model_class = content_type.model_class() 

12 return model_class is not None and issubclass(model_class, Entity) 

13 

14 

15@register.simple_tag 

16def entities_content_types(): 

17 """ 

18 Retrieve all models which inherit from Entity class 

19 and return their ContentType. 

20 """ 

21 entities = list( 

22 filter( 

23 lambda content_type: is_entity(content_type), 

24 ContentType.objects.all(), 

25 ) 

26 ) 

27 return entities 

28 

29 

30@register.simple_tag 

31def get_entitymodels() -> list[Entity]: 

32 """ 

33 Return a list of `Entity` models 

34 """ 

35 return list(filter(lambda x: issubclass(x, Entity), apps.get_models()))