45 lines
1.6 KiB
Python
45 lines
1.6 KiB
Python
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
|