Coverage for website/activemembers/forms.py: 70.59%

15 statements  

« prev     ^ index     » next       coverage.py v7.6.7, created at 2025-08-14 10:31 +0000

1from django import forms 

2from django.contrib.auth.models import Permission 

3from django.utils.translation import gettext_lazy as _ 

4 

5from activemembers.models import MemberGroupMembership 

6from members.models import Member 

7 

8 

9class MemberGroupMembershipForm(forms.ModelForm): 

10 """Custom form for group memberships that orders the members.""" 

11 

12 member = forms.ModelChoiceField( 

13 queryset=Member.objects.order_by("first_name", "last_name"), 

14 label=_("Member"), 

15 ) 

16 

17 class Meta: 

18 model = MemberGroupMembership 

19 fields = "__all__" 

20 

21 

22class MemberGroupForm(forms.ModelForm): 

23 """Solely here for performance reasons. 

24 

25 Needed because the `__str__()` of `Permission` (which is displayed in the 

26 permissions selection box) also prints the corresponding app and 

27 `content_type` for each permission. 

28 """ 

29 

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

31 super().__init__(*args, **kwargs) 

32 if "permissions" in self.fields: 

33 self.fields["permissions"].queryset = Permission.objects.select_related( 

34 "content_type" 

35 )