Coverage for apis_core/relations/forms/fields.py: 0%
22 statements
« prev ^ index » next coverage.py v7.5.3, created at 2025-06-25 10:00 +0000
« prev ^ index » next coverage.py v7.5.3, created at 2025-06-25 10:00 +0000
1from django import forms
2from django.urls import reverse
4from apis_core.core.fields import ApisListSelect2
5from apis_core.relations.utils import relation_content_types
8def list_relation_choices():
9 return [(rel.id, rel.model_class().name()) for rel in relation_content_types()]
12class RelationMultiWidget(forms.MultiWidget):
13 template_name = "relations/relation_multiwidget.html"
14 use_fieldset = False
16 def __init__(self, attrs=None):
17 relation_choices = [(None, "---")] + list_relation_choices()
18 widgets = [
19 forms.widgets.Select(choices=relation_choices),
20 ApisListSelect2(url=reverse("apis_core:apis_entities:autocomplete")),
21 ]
22 super().__init__(widgets)
24 def decompress(self, value):
25 return [value, value]
28class RelationField(forms.MultiValueField):
29 widget = RelationMultiWidget()
31 def __init__(self, *args, **kwargs):
32 fields = (forms.ChoiceField(choices=list_relation_choices()), forms.CharField())
33 super().__init__(fields=fields, *args, **kwargs)
35 def compress(self, data_list):
36 return data_list