from django.http import Http404 from django.shortcuts import render from oauth2_provider.contrib.rest_framework import TokenMatchesOASRequirements from rest_framework import viewsets, mixins from rest_framework.generics import get_object_or_404 from rest_framework.viewsets import GenericViewSet from apps.crud.models import Data, Plan from apps.crud.serializers import DataSerializer from apps.gooyal_oauth2.rest_framework import IsAuthenticatedOrTokenMatchesOASRequirements class DataViewSet(mixins.RetrieveModelMixin, mixins.UpdateModelMixin, mixins.DestroyModelMixin, GenericViewSet): queryset = Data.objects.all() serializer_class = DataSerializer permission_classes = [IsAuthenticatedOrTokenMatchesOASRequirements] required_alternate_scopes = { "GET": [["data_crud.data:retrieve"]], "PATCH": [["data_crud.data:update"]], "PUT": [["data_crud.data:update"]], "DELETE": [["data_crud.data:delete"]], } def get_object(self): user = self.request.user auth = self.request.auth if auth: # plan = Plan.objects.filter(application_id=auth.application_id).first() plan, created = Plan.objects.get_or_create(application_id=auth.application_id) # data, created = Data.objects.get_or_create(plan_id=plan.pk, user=user) data, created = Data.objects.get_or_create(plan_id=plan.pk, user=user) return data raise Http404