aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Joe Banks <[email protected]>2024-05-26 04:53:43 +0100
committerGravatar Joe Banks <[email protected]>2024-05-26 05:00:31 +0100
commit0654e66d14f2f7b320b9bef084b1e96b9e4a4f1a (patch)
tree58f150223928db1c64987597c330c9700a9a4f5c
parentAdd serializer for mod_settings response key on User objects (diff)
Add method for PATCHing new moderator settings
-rw-r--r--pydis_site/apps/api/viewsets/bot/user.py23
1 files changed, 22 insertions, 1 deletions
diff --git a/pydis_site/apps/api/viewsets/bot/user.py b/pydis_site/apps/api/viewsets/bot/user.py
index ce712a93..ba6d25b9 100644
--- a/pydis_site/apps/api/viewsets/bot/user.py
+++ b/pydis_site/apps/api/viewsets/bot/user.py
@@ -15,10 +15,11 @@ from rest_framework.viewsets import ModelViewSet
from pydis_site.apps.api.models.bot.infraction import Infraction
from pydis_site.apps.api.models.bot.metricity import Metricity, NotFoundError
-from pydis_site.apps.api.models.bot.user import User, UserAltRelationship
+from pydis_site.apps.api.models.bot.user import User, UserAltRelationship, UserModSettings
from pydis_site.apps.api.serializers import (
UserSerializer,
UserAltRelationshipSerializer,
+ UserModSettingsSerializer,
UserWithAltsSerializer
)
@@ -367,6 +368,26 @@ class UserViewSet(ModelViewSet):
return Response(serializer.data, status=status.HTTP_200_OK)
+ @action(detail=True, methods=["PATCH"], name='mod-settings-update')
+ def mod_settings(self, request: Request, pk: str) -> Response:
+ """Update the mod settings for a given user."""
+ user = self.get_object()
+ maybe_mod_settings = UserModSettings.objects.filter(moderator=user).first()
+
+ mod_settings_data = ChainMap({'moderator': user.id}, request.data)
+
+ if maybe_mod_settings:
+ mod_settings = UserModSettingsSerializer(maybe_mod_settings, data=mod_settings_data)
+ else:
+ mod_settings = UserModSettingsSerializer(data=mod_settings_data)
+
+ mod_settings.is_valid(raise_exception=True)
+
+ mod_settings.save()
+
+ return Response(mod_settings.data, status=status.HTTP_200_OK)
+
+
@action(detail=True, methods=['POST'], name="Add alternate account",
url_name='alts', url_path='alts')
def add_alt(self, request: Request, pk: str) -> Response: