Skip to content

Commit d9ddde5

Browse files
committed
Add serializer for mod_settings response key on User objects
1 parent b16a2ad commit d9ddde5

File tree

1 file changed

+26
-2
lines changed

1 file changed

+26
-2
lines changed

pydis_site/apps/api/serializers.py

+26-2
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@
3737
Reminder,
3838
Role,
3939
User,
40-
UserAltRelationship
40+
UserAltRelationship,
41+
UserModSettings
4142
)
4243

4344
class FrozenFieldsMixin:
@@ -701,11 +702,23 @@ class UserSerializer(ModelSerializer):
701702
# ID field must be explicitly set as the default id field is read-only.
702703
id = IntegerField(min_value=0)
703704

705+
def to_representation(self, instance: User) -> dict:
706+
"""Serialize the user to a dictionary, serializing the moderator settings."""
707+
ret = super().to_representation(instance)
708+
709+
if hasattr(instance, 'mod_settings') and instance.mod_settings is not None:
710+
ret['mod_settings'] = UserModSettingsSerializer(instance.mod_settings).data
711+
else:
712+
del ret['mod_settings']
713+
714+
return ret
715+
704716
class Meta:
705717
"""Metadata defined for the Django REST Framework."""
706718

707719
model = User
708-
fields = ('id', 'name', 'display_name', 'discriminator', 'roles', 'in_guild')
720+
fields = ('id', 'name', 'display_name', 'discriminator', 'roles',
721+
'in_guild', 'mod_settings')
709722
depth = 1
710723
list_serializer_class = UserListSerializer
711724

@@ -717,6 +730,7 @@ def create(self, validated_data: dict) -> User:
717730
raise ValidationError({"id": ["User with ID already present."]})
718731

719732

733+
<<<<<<< HEAD
720734
class UserWithAltsSerializer(FrozenFieldsMixin, UserSerializer):
721735
"""A class providing (de-)serialization of `User` instances, expanding their alternate accounts."""
722736

@@ -736,6 +750,16 @@ def get_alts(self, user: User) -> list[dict]:
736750
for alt in user.alts.through.objects.filter(source=user)
737751
]
738752

753+
=======
754+
class UserModSettingsSerializer(ModelSerializer):
755+
"""A class to serialize the moderator settings for a user."""
756+
757+
class Meta:
758+
"""Meta settings for the user moderator settings serializer."""
759+
760+
model = UserModSettings
761+
fields = ('pings_disabled_until', 'pings_schedule_start', 'pings_schedule_end')
762+
>>>>>>> d672a0ab (Add serializer for mod_settings response key on User objects)
739763

740764
class NominationEntrySerializer(ModelSerializer):
741765
"""A class providing (de-)serialization of `NominationEntry` instances."""

0 commit comments

Comments
 (0)