diff --git a/geeksbot_web/guilds/api_urls.py b/geeksbot_web/guilds/api_urls.py index 6b2f3d7..aabe6c4 100644 --- a/geeksbot_web/guilds/api_urls.py +++ b/geeksbot_web/guilds/api_urls.py @@ -2,7 +2,7 @@ from django.urls import path from .views import GuildsAPI, GuildDetail from .views import RolesAPI, RoleDetailAPI -from .views import AdminRolesAPI +from .views import AdminRolesAPI, ModeratorRolesAPI app_name = "guilds_api" urlpatterns = [ @@ -10,5 +10,6 @@ urlpatterns = [ path("/", view=GuildDetail.as_view(), name='detail'), path("/roles/", view=RolesAPI.as_view(), name="list"), path("/roles/admin/", view=AdminRolesAPI.as_view(), name='admin'), + path("/roles/moderator/", view=ModeratorRolesAPI.as_view(), name='moderator'), path("/roles//", view=RoleDetailAPI.as_view(), name='detail'), ] diff --git a/geeksbot_web/guilds/models.py b/geeksbot_web/guilds/models.py index e0d604f..6d40f94 100644 --- a/geeksbot_web/guilds/models.py +++ b/geeksbot_web/guilds/models.py @@ -124,6 +124,13 @@ class Role(models.Model): @classmethod def get_admin_roles(cls, guild_id): + try: + return cls.get_guild_roles(guild_id).filter(role_type__gte=95) + except ObjectDoesNotExist: + return None + + @classmethod + def get_moderator_roles(cls, guild_id): try: return cls.get_guild_roles(guild_id).filter(role_type__gte=90) except ObjectDoesNotExist: diff --git a/geeksbot_web/guilds/views.py b/geeksbot_web/guilds/views.py index 60ee029..10b5467 100644 --- a/geeksbot_web/guilds/views.py +++ b/geeksbot_web/guilds/views.py @@ -107,6 +107,26 @@ class AdminRolesAPI(APIView): status=status.HTTP_404_NOT_FOUND) +class ModeratorRolesAPI(APIView): + permission_classes = [IsAuthenticated] + + def get(self, request, guild_id, format=None): + roles = Role.get_moderator_roles(guild_id) + if roles: + return create_role_success_response(roles, status=status.HTTP_200_OK, many=True) + return create_error_response('There are no admin roles configured', + status=status.HTTP_404_NOT_FOUND) + + def put(self, request, guild_id, format=None): + data = dict(request.data) + role = Role.get_role_by_id(guild_id, data['role']) + if role: + role = role.update_role({'role_type': 90}) + return create_role_success_response(role, status=status.HTTP_202_ACCEPTED) + return create_error_response("That role does not exist", + status=status.HTTP_404_NOT_FOUND) + + class RoleDetailAPI(APIView): permission_classes = [IsAuthenticated]