38 lines
1.5 KiB
Python
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
|