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):
|
class ApplicationCreateForm(forms.ModelForm):
|
||||||
available_scopes_list = forms.CharField(widget=forms.Textarea(),required=False)
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Application
|
model = Application
|
||||||
fields = ['name',
|
fields = ['name',
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,10 @@ from django.utils.decorators import method_decorator
|
||||||
from django.views.generic import CreateView, DetailView, ListView, UpdateView
|
from django.views.generic import CreateView, DetailView, ListView, UpdateView
|
||||||
from oauth2_provider.models import get_application_model
|
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.forms import ApplicationCreateForm, ApplicationUpdateForm
|
||||||
from apps.gooyal_oauth2.models import Application
|
from apps.gooyal_oauth2.models import Application
|
||||||
|
from utils.views import FilterMixin
|
||||||
|
|
||||||
|
|
||||||
@method_decorator(login_required, name='dispatch')
|
@method_decorator(login_required, name='dispatch')
|
||||||
|
|
@ -24,7 +26,7 @@ class ApplicationCreateView(CreateView):
|
||||||
|
|
||||||
@method_decorator(login_required, name='dispatch')
|
@method_decorator(login_required, name='dispatch')
|
||||||
class ApplicationUpdateView(UpdateView):
|
class ApplicationUpdateView(UpdateView):
|
||||||
template_name = "gooyal_oauth2/application_create.html"
|
template_name = "gooyal_oauth2/application_update.html"
|
||||||
form_class = ApplicationUpdateForm
|
form_class = ApplicationUpdateForm
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
|
|
@ -49,10 +51,12 @@ class ApplicationDetailView(DetailView):
|
||||||
|
|
||||||
|
|
||||||
@method_decorator(login_required, name='dispatch')
|
@method_decorator(login_required, name='dispatch')
|
||||||
class ApplicationListView(ListView):
|
class ApplicationListView(FilterMixin, ListView):
|
||||||
model = Application
|
model = Application
|
||||||
template_name = "gooyal_oauth2/application_list.html"
|
template_name = "gooyal_oauth2/application_list.html"
|
||||||
paginate_by = 20
|
paginate_by = 20
|
||||||
|
filterset_class = ApplicationFilter
|
||||||
|
|
||||||
def get_queryset(self):
|
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