filter applications
This commit is contained in:
parent
99d73405fb
commit
8682656f58
5 changed files with 70 additions and 4 deletions
20
apps/gooyal_oauth2/filters.py
Normal file
20
apps/gooyal_oauth2/filters.py
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
import django_filters
|
||||
from django.contrib.auth.models import Permission
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from jalali_date.widgets import AdminJalaliDateWidget
|
||||
from jalali_date.fields import JalaliDateField
|
||||
|
||||
from .models import Application
|
||||
|
||||
|
||||
class JalaliDateFilter(django_filters.DateFilter):
|
||||
field_class = JalaliDateField
|
||||
|
||||
|
||||
class ApplicationFilter(django_filters.FilterSet):
|
||||
class Meta:
|
||||
model = Application
|
||||
fields = {
|
||||
'name': ['contains'],
|
||||
'client_id': ['contains'],
|
||||
}
|
||||
|
|
@ -53,7 +53,6 @@ class ApplicationForm(forms.ModelForm):
|
|||
|
||||
|
||||
class ApplicationCreateForm(forms.ModelForm):
|
||||
available_scopes_list = forms.CharField(widget=forms.Textarea(),required=False)
|
||||
class Meta:
|
||||
model = Application
|
||||
fields = ['name',
|
||||
|
|
|
|||
|
|
@ -4,8 +4,10 @@ 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')
|
||||
|
|
@ -24,7 +26,7 @@ class ApplicationCreateView(CreateView):
|
|||
|
||||
@method_decorator(login_required, name='dispatch')
|
||||
class ApplicationUpdateView(UpdateView):
|
||||
template_name = "gooyal_oauth2/application_create.html"
|
||||
template_name = "gooyal_oauth2/application_update.html"
|
||||
form_class = ApplicationUpdateForm
|
||||
|
||||
def get_queryset(self):
|
||||
|
|
@ -49,10 +51,12 @@ class ApplicationDetailView(DetailView):
|
|||
|
||||
|
||||
@method_decorator(login_required, name='dispatch')
|
||||
class ApplicationListView(ListView):
|
||||
class ApplicationListView(FilterMixin, ListView):
|
||||
model = Application
|
||||
template_name = "gooyal_oauth2/application_list.html"
|
||||
paginate_by = 20
|
||||
filterset_class = ApplicationFilter
|
||||
|
||||
def get_queryset(self):
|
||||
return Application.objects.filter(user=self.request.user)
|
||||
qs = super().get_queryset()
|
||||
return qs.filter(user=self.request.user)
|
||||
|
|
|
|||
23
templates/gooyal_oauth2/application_update.html
Normal file
23
templates/gooyal_oauth2/application_update.html
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
{% extends "base.html" %}
|
||||
{% load static %}
|
||||
{% load crispy_forms_tags %}
|
||||
{% load jalali_tags %}
|
||||
|
||||
{% block title %}Application: update{% endblock %}
|
||||
{% block page_title %}Application: update{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<form action="{{ request.get_full_path }}" method="post" enctype="multipart/form-data" novalidate>
|
||||
{% csrf_token %}
|
||||
<div class="col-md-12 col-lg-12" id="formset">
|
||||
{{ form|crispy }}
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="grid">
|
||||
<div class="d-flex justify-content-end">
|
||||
<input class="btn btn-success ms-2" type="submit" value="ثبت" name="save"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{% endblock %}
|
||||
20
utils/views.py
Normal file
20
utils/views.py
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
import django_filters
|
||||
|
||||
|
||||
class FilterMixin(object):
|
||||
filterset_class:django_filters.FilterSet
|
||||
|
||||
def get_filterset_class(self):
|
||||
return self.filterset_class
|
||||
|
||||
def get_context_data(self, *, object_list=None, **kwargs):
|
||||
context_data = super().get_context_data(**kwargs)
|
||||
filter = self.get_filterset_class()(self.request.GET, queryset=self.get_queryset())
|
||||
context_data['filter'] = filter
|
||||
return context_data
|
||||
|
||||
def get_queryset(self):
|
||||
qs = super().get_queryset()
|
||||
qs = self.get_filterset_class()(self.request.GET, queryset=qs).qs
|
||||
return qs
|
||||
|
||||
Loading…
Add table
Reference in a new issue