accounts/apps/gooyal_oauth2/views/pages.py
2024-08-05 13:30:00 +03:30

66 lines
2.3 KiB
Python

from django.contrib.auth.decorators import login_required
from django.urls import resolve, reverse_lazy
from django.utils.decorators import method_decorator
from django.views.generic import CreateView, DetailView, ListView, UpdateView
from oauth2_provider.models import get_application_model
from apps.gooyal_oauth2.filters import ApplicationFilter
from apps.gooyal_oauth2.forms import ApplicationCreateForm, ApplicationUpdateForm
from apps.gooyal_oauth2.models import Application
from utils.views import FilterMixin
@method_decorator(login_required, name='dispatch')
class ApplicationCreateView(CreateView):
template_name = "gooyal_oauth2/application_create.html"
form_class = ApplicationCreateForm
def get_success_url(self):
return reverse_lazy("gooyal_oauth2:application_detail", kwargs={"pk": self.object.pk})
def form_valid(self, form):
form.instance.user = self.request.user
form.instance.client_type = Application.CLIENT_PUBLIC
return super().form_valid(form)
@method_decorator(login_required, name='dispatch')
class ApplicationUpdateView(UpdateView):
template_name = "gooyal_oauth2/application_update.html"
form_class = ApplicationUpdateForm
def get_queryset(self):
return Application.objects.filter(user=self.request.user)
def get_success_url(self):
return reverse_lazy("gooyal_oauth2:application_detail", kwargs={"pk": self.object.pk})
def form_valid(self, form):
# form.instance.user = self.request.user
# form.instance.client_type = Application.CLIENT_PUBLIC
return super().form_valid(form)
@method_decorator(login_required, name='dispatch')
class ApplicationDetailView(DetailView):
model = Application
template_name = "gooyal_oauth2/application_detail.html"
def get_queryset(self):
return Application.objects.filter(user=self.request.user)
@method_decorator(login_required, name='dispatch')
class ApplicationListView(FilterMixin, ListView):
model = Application
template_name = "gooyal_oauth2/application_list.html"
paginate_by = 2
filterset_class = ApplicationFilter
def get_ordering(self):
ordering = self.request.GET.get('ordering', 'name')
return ordering
def get_queryset(self):
qs = super().get_queryset()
return qs.filter(user=self.request.user)