Coverage for website/activemembers/api/v2/serializers/member_group.py: 76.74%
35 statements
« prev ^ index » next coverage.py v7.6.7, created at 2025-08-14 10:31 +0000
« prev ^ index » next coverage.py v7.6.7, created at 2025-08-14 10:31 +0000
1from rest_framework import serializers
3from activemembers.api.v2.serializers.member_group_membership import (
4 MemberGroupMembershipSerializer,
5)
6from activemembers.models import MemberGroup
7from thaliawebsite.api.v2.serializers import ThumbnailSerializer
8from thaliawebsite.api.v2.serializers.cleaned_model_serializer import (
9 CleanedModelSerializer,
10)
13class MemberGroupSerializer(CleanedModelSerializer):
14 """API serializer for member groups."""
16 def __init__(self, *args, **kwargs):
17 super().__init__(*args, **kwargs)
19 if "get_memberships" not in self.context and "members" in self.fields:
20 self.fields.pop("members")
22 class Meta:
23 """Meta class for the serializer."""
25 model = MemberGroup
26 fields = (
27 "pk",
28 "name",
29 "type",
30 "description",
31 "since",
32 "until",
33 "contact_address",
34 "photo",
35 "members",
36 )
38 members = serializers.SerializerMethodField("_members")
39 type = serializers.SerializerMethodField("_type")
40 photo = ThumbnailSerializer(placeholder="activemembers/images/placeholder.png")
42 def _members(self, instance):
43 memberships = self.context["get_memberships"](instance).prefetch_related(
44 "member__membergroupmembership_set"
45 )
46 return MemberGroupMembershipSerializer(
47 many=True, context=self.context
48 ).to_representation(memberships)
50 def _type(self, instance):
51 if hasattr(instance, "board"): 51 ↛ 52line 51 didn't jump to line 52 because the condition on line 51 was never true
52 return "board"
53 if hasattr(instance, "committee"): 53 ↛ 55line 53 didn't jump to line 55 because the condition on line 53 was always true
54 return "committee"
55 if hasattr(instance, "society"):
56 return "society"
57 return None
60class MemberGroupListSerializer(MemberGroupSerializer):
61 class Meta:
62 """Meta class for the serializer."""
64 model = MemberGroup
65 fields = (
66 "pk",
67 "name",
68 "type",
69 "description",
70 "since",
71 "until",
72 "contact_address",
73 "photo",
74 )
77class MemberGroupShortSerializer(MemberGroupListSerializer):
78 class Meta:
79 model = MemberGroup
80 fields = (
81 "pk",
82 "name",
83 "type",
84 "since",
85 "until",
86 "contact_address",
87 )