Add endpoint to get moderator roles
This commit is contained in:
parent
cb984387e4
commit
f6b9218d11
@ -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'),
|
||||
]
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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]
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user