From 0654e66d14f2f7b320b9bef084b1e96b9e4a4f1a Mon Sep 17 00:00:00 2001 From: Joe Banks Date: Sun, 26 May 2024 04:53:43 +0100 Subject: Add method for PATCHing new moderator settings --- pydis_site/apps/api/viewsets/bot/user.py | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) 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: -- cgit v1.2.3