@@ -709,7 +709,8 @@ def to_representation(self, instance: User) -> dict:
709
709
if hasattr (instance , 'mod_settings' ) and instance .mod_settings is not None :
710
710
ret ['mod_settings' ] = UserModSettingsSerializer (instance .mod_settings ).data
711
711
else :
712
- del ret ['mod_settings' ]
712
+ if 'mod_settings' in ret :
713
+ del ret ['mod_settings' ]
713
714
714
715
return ret
715
716
@@ -752,11 +753,21 @@ def get_alts(self, user: User) -> list[dict]:
752
753
class UserModSettingsSerializer (ModelSerializer ):
753
754
"""A class to serialize the moderator settings for a user."""
754
755
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
+
755
766
class Meta :
756
767
"""Meta settings for the user moderator settings serializer."""
757
768
758
769
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' )
760
771
761
772
class NominationEntrySerializer (ModelSerializer ):
762
773
"""A class providing (de-)serialization of `NominationEntry` instances."""
0 commit comments