from django.contrib.auth import get_user_model from django.contrib.auth.decorators import login_required from django.contrib.auth.views import LoginView from django.shortcuts import render from django.urls import reverse from django.utils import timezone from django.utils.decorators import method_decorator from django.views.generic import DetailView, UpdateView from oauth2_provider.contrib.rest_framework import IsAuthenticatedOrTokenHasScope from rest_framework import generics, status, permissions from rest_framework.response import Response from rest_framework.views import APIView from apps.gooyal_oauth2.rest_framework import IsAuthenticatedOrTokenMatchesOASRequirements from apps.users.models import User from apps.users.serializers import AccountSerializer UserModel = get_user_model() class AccountView(generics.RetrieveUpdateAPIView): serializer_class = AccountSerializer permission_classes = [IsAuthenticatedOrTokenMatchesOASRequirements] required_alternate_scopes = { "GET": [["accounts.account:retrieve"]], "POST": [["accounts.account:update"]], "PUT": [["accounts.account:update"]], "PATCH": [["accounts.account:update"]], } def get_object(self): return self.request.user def perform_update(self, serializer): serializer.save(last_update=timezone.now()) @method_decorator(login_required, name='dispatch') class ProfileDetailView(DetailView): model = User template_name = 'users/profile_detail.html' pk_url_kwarg = 'uuid' def get_object(self, queryset=None): return self.request.user