automated admin check

This commit is contained in:
Corban-Lee Jones 2024-05-07 01:38:45 +01:00
parent bd017482db
commit a5d1a9569c

View File

@ -12,6 +12,7 @@ from rest_framework.authentication import SessionAuthentication, TokenAuthentica
from rest_framework.parsers import MultiPartParser, FormParser
from apps.home.models import SubChannel, Filter, Subscription, SavedGuilds
from apps.authentication.models import DiscordUser
from .serializers import (
SubChannelSerializer,
FilterSerializer,
@ -30,6 +31,12 @@ class DefaultPagination(PageNumberPagination):
max_page_size = 25
def is_automated_admin(user):
print("is automated admin", user.user_type == DiscordUser.USER_TYPES.AUTOMATED_USER and user.is_superuser)
print(user.user_type == DiscordUser.USER_TYPES.AUTOMATED_USER)
print(user.is_superuser)
return user.user_type == DiscordUser.USER_TYPES.AUTOMATED_USER and user.is_superuser
# =================================================================================================
# SubChannel Views
@ -106,6 +113,9 @@ class Filter_ListView(generics.ListCreateAPIView):
search_fields = ["name", "keywords", "regex"]
def get_queryset(self):
if is_automated_admin(self.request.user):
return Filter.objects.all().order_by("id")
saved_guild_ids = SavedGuilds.objects \
.filter(added_by=self.request.user.id) \
.values("guild_id")
@ -145,6 +155,9 @@ class Filter_DetailView(generics.RetrieveUpdateDestroyAPIView):
serializer_class = FilterSerializer
def get_queryset(self):
if is_automated_admin(self.request.user):
return Filter.objects.all().order_by("id")
saved_guild_ids = SavedGuilds.objects \
.filter(added_by=self.request.user.id) \
.values("guild_id")
@ -178,6 +191,9 @@ class Subscription_ListView(generics.ListCreateAPIView):
ordering_fields = ["creation_datetime", "guild_id"]
def get_queryset(self):
if is_automated_admin(self.request.user):
return Subscription.objects.all().order_by("-creation_datetime")
saved_guild_ids = SavedGuilds.objects \
.filter(added_by=self.request.user.id) \
.values("guild_id")
@ -218,6 +234,9 @@ class Subscription_DetailView(generics.RetrieveUpdateDestroyAPIView):
# queryset = Subscription.objects.all().order_by("-creation_datetime")
def get_queryset(self):
if is_automated_admin(self.request.user):
return Subscription.objects.all().order_by("-creation_datetime")
saved_guild_ids = SavedGuilds.objects \
.filter(added_by=self.request.user.id) \
.values("guild_id")
@ -238,20 +257,21 @@ class Subscription_SubChannelView(generics.DestroyAPIView):
def delete(self, *args, **kwargs):
print(kwargs)
if is_automated_admin(self.request.user):
subscriptions = Subscription.objects.all()
else:
saved_guild_ids = SavedGuilds.objects \
.filter(added_by=self.request.user.id) \
.values("guild_id")
saved_guild_ids = SavedGuilds.objects \
.filter(added_by=self.request.user.id) \
.values("guild_id")
subscriptions = Subscription.objects \
.filter(guild_id__in=Subquery(saved_guild_ids))
subscriptions = Subscription.objects \
.filter(guild_id__in=Subquery(saved_guild_ids))
if not subscriptions:
return Response(
{"detail": "You are forbidden from viewing this subscription"},
status=status.HTTP_403_FORBIDDEN
)
if not subscriptions:
return Response(
{"detail": "You are forbidden from viewing this subscription"},
status=status.HTTP_403_FORBIDDEN
)
subscription = subscriptions.filter(id=kwargs["pk"]).first()
@ -288,6 +308,9 @@ class SavedGuild_ListView(generics.ListCreateAPIView):
search_fields = ["name"]
def get_queryset(self):
if is_automated_admin(self.request.user):
return SavedGuilds.objects.all()
return SavedGuilds.objects.filter(added_by=self.request.user)
def post(self, request):
@ -341,4 +364,7 @@ class SavedGuild_DetailView(generics.RetrieveDestroyAPIView):
serializer_class = SavedGuildSerializer
def get_queryset(self):
if is_automated_admin(self.request.user):
return SavedGuilds.objects.all()
return SavedGuilds.objects.filter(added_by=self.request.user)