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 RolesAPI, RoleDetailAPI
from .views import AdminRolesAPI
from .views import AdminRolesAPI, ModeratorRolesAPI
app_name = "guilds_api"
urlpatterns = [
@ -10,5 +10,6 @@ urlpatterns = [
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/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'),
]

View File

@ -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:

View File

@ -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]