Coverage for apis_core/apis_entities/templatetags/apis_entities.py: 58%

26 statements  

« prev     ^ index     » next       coverage.py v7.6.1, created at 2024-09-18 14:11 +0000

1from django import template 

2from django.contrib.contenttypes.models import ContentType 

3 

4from apis_core.apis_entities.models import AbstractEntity 

5from apis_core.apis_entities.utils import get_entity_classes 

6from apis_core.utils.helpers import triple_sidebar 

7 

8register = template.Library() 

9 

10 

11@register.simple_tag 

12def url_replace(request, field, value): 

13 dict_ = request.GET.copy() 

14 dict_[field] = value 

15 

16 return dict_.urlencode() 

17 

18 

19def is_entity(content_type: ContentType): 

20 model_class = content_type.model_class() 

21 return model_class is not None and issubclass(model_class, AbstractEntity) 

22 

23 

24@register.simple_tag 

25def entities_content_types(): 

26 """ 

27 Retrieve all models which inherit from AbstractEntity class 

28 and return their ContentType. 

29 """ 

30 entities = list( 

31 filter( 

32 lambda content_type: is_entity(content_type), 

33 ContentType.objects.all(), 

34 ) 

35 ) 

36 return entities 

37 

38 

39@register.simple_tag 

40def entities_verbose_name_plural_listview_url(): 

41 """ 

42 Return all entities verbose names together with their list uri, sorted in alphabetical order 

43 USED BY: 

44 * `core/base.html` 

45 """ 

46 ret = { 

47 entity._meta.verbose_name_plural: entity.get_listview_url() 

48 for entity in get_entity_classes() 

49 } 

50 return sorted(ret.items()) 

51 

52 

53@register.simple_tag(takes_context=True) 

54def object_relations(context, detail=True): 

55 obj = context["object"] 

56 return triple_sidebar(obj, context["request"], detail)