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

1from django import forms 

2from django.urls import reverse 

3 

4from apis_core.core.fields import ApisListSelect2 

5from apis_core.relations.utils import relation_content_types 

6 

7 

8def list_relation_choices(): 

9 return [(rel.id, rel.model_class().name()) for rel in relation_content_types()] 

10 

11 

12class RelationMultiWidget(forms.MultiWidget): 

13 template_name = "relations/relation_multiwidget.html" 

14 use_fieldset = False 

15 

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) 

23 

24 def decompress(self, value): 

25 return [value, value] 

26 

27 

28class RelationField(forms.MultiValueField): 

29 widget = RelationMultiWidget() 

30 

31 def __init__(self, *args, **kwargs): 

32 fields = (forms.ChoiceField(choices=list_relation_choices()), forms.CharField()) 

33 super().__init__(fields=fields, *args, **kwargs) 

34 

35 def compress(self, data_list): 

36 return data_list