Coverage for utilities/forms/fields/content_types.py: 75%

16 statements  

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

1from django import forms 

2 

3from utilities.object_types import object_type_name 

4 

5__all__ = ( 

6 'ContentTypeChoiceField', 

7 'ContentTypeMultipleChoiceField', 

8) 

9 

10 

11class ContentTypeChoiceMixin: 

12 

13 def __init__(self, queryset, *args, **kwargs): 

14 # Order ContentTypes by app_label 

15 queryset = queryset.order_by('app_label', 'model') 

16 super().__init__(queryset, *args, **kwargs) 

17 

18 def label_from_instance(self, obj): 

19 try: 

20 return object_type_name(obj) 

21 except AttributeError: 

22 return super().label_from_instance(obj) 

23 

24 

25class ContentTypeChoiceField(ContentTypeChoiceMixin, forms.ModelChoiceField): 

26 """ 

27 Selection field for a single content type. 

28 """ 

29 pass 

30 

31 

32class ContentTypeMultipleChoiceField(ContentTypeChoiceMixin, forms.ModelMultipleChoiceField): 

33 """ 

34 Selection field for one or more content types. 

35 """ 

36 pass