preferences/apps/crud/views.py
2024-07-29 17:13:32 +03:30

38 lines
1.5 KiB
Python

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