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
« 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
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
8register = template.Library()
11@register.simple_tag
12def url_replace(request, field, value):
13 dict_ = request.GET.copy()
14 dict_[field] = value
16 return dict_.urlencode()
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)
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
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())
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)