Add endpoint to get moderator roles

This commit is contained in:
Dustin Pianalto 2019-12-16 19:22:09 -09:00
parent cb984387e4
commit f6b9218d11
3 changed files with 29 additions and 1 deletions

View File

@ -2,7 +2,7 @@ from django.urls import path
from .views import GuildsAPI, GuildDetail from .views import GuildsAPI, GuildDetail
from .views import RolesAPI, RoleDetailAPI from .views import RolesAPI, RoleDetailAPI
from .views import AdminRolesAPI from .views import AdminRolesAPI, ModeratorRolesAPI
app_name = "guilds_api" app_name = "guilds_api"
urlpatterns = [ urlpatterns = [
@ -10,5 +10,6 @@ urlpatterns = [
path("<str:id>/", view=GuildDetail.as_view(), name='detail'), path("<str:id>/", view=GuildDetail.as_view(), name='detail'),
path("<str:guild_id>/roles/", view=RolesAPI.as_view(), name="list"), path("<str:guild_id>/roles/", view=RolesAPI.as_view(), name="list"),
path("<str:guild_id>/roles/admin/", view=AdminRolesAPI.as_view(), name='admin'), path("<str:guild_id>/roles/admin/", view=AdminRolesAPI.as_view(), name='admin'),
path("<str:guild_id>/roles/moderator/", view=ModeratorRolesAPI.as_view(), name='moderator'),
path("<str:guild_id>/roles/<str:id>/", view=RoleDetailAPI.as_view(), name='detail'), path("<str:guild_id>/roles/<str:id>/", view=RoleDetailAPI.as_view(), name='detail'),
] ]

View File

@ -124,6 +124,13 @@ class Role(models.Model):
@classmethod @classmethod
def get_admin_roles(cls, guild_id): 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: try:
return cls.get_guild_roles(guild_id).filter(role_type__gte=90) return cls.get_guild_roles(guild_id).filter(role_type__gte=90)
except ObjectDoesNotExist: except ObjectDoesNotExist:

View File

@ -107,6 +107,26 @@ class AdminRolesAPI(APIView):
status=status.HTTP_404_NOT_FOUND) 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): class RoleDetailAPI(APIView):
permission_classes = [IsAuthenticated] permission_classes = [IsAuthenticated]