Source code for activemembers.api.serializers
"""DRF serializers defined by the activemembers package"""
from rest_framework import serializers
from activemembers.models import MemberGroup, MemberGroupMembership
from members.api.serializers import MemberListSerializer
[docs]class MemberGroupSerializer(serializers.ModelSerializer):
"""MemberGroup serializer"""
members = MemberListSerializer(many=True)
chair = serializers.SerializerMethodField("_chair")
type = serializers.SerializerMethodField("_type")
def _chair(self, instance):
membership = (
MemberGroupMembership.objects.filter(chair=True, group=instance)
.select_related("member")
.first()
)
if membership:
return MemberListSerializer(context=self.context).to_representation(
membership.member
)
return None
def _type(self, instance):
if hasattr(instance, "board"):
return "board"
if hasattr(instance, "committee"):
return "committee"
if hasattr(instance, "society"):
return "society"