66 lines
2.3 KiB
Python
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)
|