from django.http import Http404 from django.shortcuts import redirect from oauth2_provider.contrib.rest_framework import TokenHasScope from rest_framework import generics from rest_framework.decorators import action from rest_framework.permissions import AllowAny from rest_framework.viewsets import ReadOnlyModelViewSet from ..models import Application from ..rest_framework import IsAuthenticatedOrTokenMatchesOASRequirements from ..serializers import ApplicationSerializer class ApplicationViewSet(ReadOnlyModelViewSet): serializer_class = ApplicationSerializer # lookup_field = 'uuid' permission_classes = [IsAuthenticatedOrTokenMatchesOASRequirements] required_alternate_scopes = { "GET": [['accounts.applications:list_or_retrieve']], } def get_queryset(self): # user = self.request.user # return Application.objects.filter(user=user).all() return Application.objects.filter().all() @action(detail=True, permission_classes=[AllowAny]) def avatar(self, request, pk=None): app: Application = self.get_object() if app.avatar: return redirect(app.avatar.url) else: raise Http404() # @action(detail=True, permission_classes=[AllowAny]) # def tokens(self, request, pk=None): # app: Application = self.get_object()