Coverage for website/members/api/v2/serializers/profile.py: 91.67%
30 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 members.models import Profile
4from thaliawebsite.api.v2.serializers import ThumbnailSerializer
5from thaliawebsite.api.v2.serializers.cleaned_model_serializer import (
6 CleanedModelSerializer,
7)
10class ProfileSerializer(CleanedModelSerializer):
11 def __init__(self, *args, **kwargs):
12 # Don't pass the 'fields' arg up to the superclass
13 fields = kwargs.pop("fields", None)
14 self.force_show_birthday = kwargs.pop("force_show_birthday", False)
16 # Instantiate the superclass normally
17 super().__init__(*args, **kwargs)
19 if fields: 19 ↛ exitline 19 didn't return from function '__init__' because the condition on line 19 was always true
20 allowed = set(fields)
21 existing = set(self.fields.keys())
22 for field_name in existing - allowed:
23 self.fields.pop(field_name)
25 class Meta:
26 model = Profile
27 fields = "__all__"
28 read_only_fields = ["name", "starting_year", "programme", "birthday"]
30 display_name = serializers.SerializerMethodField("_display_name")
31 short_display_name = serializers.SerializerMethodField("_short_display_name")
32 birthday = serializers.SerializerMethodField("_birthday")
34 photo = ThumbnailSerializer(
35 size_small="small",
36 size_medium="medium",
37 size_large="avatar_large",
38 placeholder="members/images/default-avatar.jpg",
39 )
41 def _short_display_name(self, instance):
42 return instance.short_display_name()
44 def _display_name(self, instance):
45 return instance.display_name()
47 def _birthday(self, instance):
48 if instance.show_birthday or self.force_show_birthday: 48 ↛ 50line 48 didn't jump to line 50 because the condition on line 48 was always true
49 return instance.birthday
50 return None