Skip to content

Commit 369bdb6

Browse files
committed
Update serializers to validate mod settings correctly
1 parent 6eec364 commit 369bdb6

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

pydis_site/apps/api/serializers.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -709,7 +709,8 @@ def to_representation(self, instance: User) -> dict:
709709
if hasattr(instance, 'mod_settings') and instance.mod_settings is not None:
710710
ret['mod_settings'] = UserModSettingsSerializer(instance.mod_settings).data
711711
else:
712-
del ret['mod_settings']
712+
if 'mod_settings' in ret:
713+
del ret['mod_settings']
713714

714715
return ret
715716

@@ -752,11 +753,21 @@ def get_alts(self, user: User) -> list[dict]:
752753
class UserModSettingsSerializer(ModelSerializer):
753754
"""A class to serialize the moderator settings for a user."""
754755

756+
def validate(self, data: dict) -> dict:
757+
"""Validate the moderator settings contain the necessary fields."""
758+
if data.get("pings_schedule_start") and not data.get("pings_schedule_end"):
759+
raise ValidationError("missing pings_schedule_end")
760+
761+
if data.get("pings_schedule_end") and not data.get("pings_schedule_start"):
762+
raise ValidationError("missing pings_schedule_start")
763+
764+
return data
765+
755766
class Meta:
756767
"""Meta settings for the user moderator settings serializer."""
757768

758769
model = UserModSettings
759-
fields = ('pings_disabled_until', 'pings_schedule_start', 'pings_schedule_end')
770+
fields = ('moderator', 'pings_disabled_until', 'pings_schedule_start', 'pings_schedule_end')
760771

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

0 commit comments

Comments
 (0)