mirror of
https://gitlab2.federez.net/re2o/re2o
synced 2024-08-20 06:03:40 +00:00
Factorisation de paginator + pagination des machines dans profil
This commit is contained in:
parent
ec076fb4bf
commit
3affe08d29
8 changed files with 39 additions and 148 deletions
|
@ -28,7 +28,6 @@ import os
|
|||
|
||||
from django.urls import reverse
|
||||
from django.shortcuts import render, redirect
|
||||
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
|
||||
from django.core.validators import MaxValueValidator
|
||||
from django.contrib.auth.decorators import login_required, permission_required
|
||||
from django.contrib import messages
|
||||
|
@ -45,7 +44,7 @@ from users.models import User
|
|||
from re2o.settings import LOGO_PATH
|
||||
from re2o import settings
|
||||
from re2o.views import form
|
||||
from re2o.utils import SortTable
|
||||
from re2o.utils import SortTable, re2o_paginator
|
||||
from re2o.acl import (
|
||||
can_create,
|
||||
can_edit,
|
||||
|
@ -455,14 +454,7 @@ def control(request):
|
|||
fields=('control', 'valid'),
|
||||
extra=0
|
||||
)
|
||||
paginator = Paginator(facture_list, pagination_number)
|
||||
page = request.GET.get('page')
|
||||
try:
|
||||
facture_list = paginator.page(page)
|
||||
except PageNotAnInteger:
|
||||
facture_list = paginator.page(1)
|
||||
except EmptyPage:
|
||||
facture_list = paginator.page(paginator.num.pages)
|
||||
facture_list = re2o_paginator(request, facture_list, pagination_number)
|
||||
controlform = controlform_set(request.POST or None, queryset=facture_list.object_list)
|
||||
if controlform.is_valid():
|
||||
controlform.save()
|
||||
|
@ -517,16 +509,7 @@ def index(request):
|
|||
request.GET.get('order'),
|
||||
SortTable.COTISATIONS_INDEX
|
||||
)
|
||||
paginator = Paginator(facture_list, pagination_number)
|
||||
page = request.GET.get('page')
|
||||
try:
|
||||
facture_list = paginator.page(page)
|
||||
except PageNotAnInteger:
|
||||
# If page is not an integer, deliver first page.
|
||||
facture_list = paginator.page(1)
|
||||
except EmptyPage:
|
||||
# If page is out of range (e.g. 9999), deliver last page of results.
|
||||
facture_list = paginator.page(paginator.num_pages)
|
||||
facture_list = re2o_paginator(request, facture_list, pagination_number)
|
||||
return render(request, 'cotisations/index.html', {
|
||||
'facture_list': facture_list
|
||||
})
|
||||
|
|
|
@ -39,7 +39,6 @@ from __future__ import unicode_literals
|
|||
|
||||
from django.urls import reverse
|
||||
from django.shortcuts import render, redirect
|
||||
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
|
||||
from django.contrib import messages
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.db.models import Count, Max
|
||||
|
@ -100,6 +99,7 @@ from re2o.utils import (
|
|||
all_baned,
|
||||
all_has_access,
|
||||
all_adherent,
|
||||
re2o_paginator,
|
||||
)
|
||||
from re2o.acl import (
|
||||
can_view_all,
|
||||
|
@ -139,17 +139,7 @@ def index(request):
|
|||
request.GET.get('order'),
|
||||
SortTable.LOGS_INDEX
|
||||
)
|
||||
paginator = Paginator(versions, pagination_number)
|
||||
page = request.GET.get('page')
|
||||
try:
|
||||
versions = paginator.page(page)
|
||||
except PageNotAnInteger:
|
||||
# If page is not an integer, deliver first page.
|
||||
versions = paginator.page(1)
|
||||
except EmptyPage:
|
||||
# If page is out of range (e.g. 9999), deliver last page of results.
|
||||
versions = paginator.page(paginator.num_pages)
|
||||
|
||||
versions = re2o_paginator(request, versions, pagination_number)
|
||||
# Force to have a list instead of QuerySet
|
||||
versions.count(0)
|
||||
# Items to remove later because invalid
|
||||
|
@ -191,16 +181,7 @@ def stats_logs(request):
|
|||
request.GET.get('order'),
|
||||
SortTable.LOGS_STATS_LOGS
|
||||
)
|
||||
paginator = Paginator(revisions, pagination_number)
|
||||
page = request.GET.get('page')
|
||||
try:
|
||||
revisions = paginator.page(page)
|
||||
except PageNotAnInteger:
|
||||
# If page is not an integer, deliver first page.
|
||||
revisions = paginator.page(1)
|
||||
except EmptyPage:
|
||||
# If page is out of range (e.g. 9999), deliver last page of results.
|
||||
revisions = paginator.page(paginator.num_pages)
|
||||
revisions = re2o_paginator(request, revisions, pagination_number)
|
||||
return render(request, 'logs/stats_logs.html', {
|
||||
'revisions_list': revisions
|
||||
})
|
||||
|
|
|
@ -33,7 +33,6 @@ from django.http import HttpResponse
|
|||
from django.shortcuts import render, redirect
|
||||
from django.shortcuts import get_object_or_404
|
||||
from django.template.context_processors import csrf
|
||||
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
|
||||
from django.template import Context, RequestContext, loader
|
||||
from django.contrib import messages
|
||||
from django.contrib.auth.decorators import login_required, permission_required
|
||||
|
@ -123,6 +122,7 @@ from re2o.utils import (
|
|||
all_has_access,
|
||||
filter_active_interfaces,
|
||||
SortTable,
|
||||
re2o_paginator,
|
||||
)
|
||||
from re2o.acl import (
|
||||
can_create,
|
||||
|
@ -863,16 +863,7 @@ def index(request):
|
|||
request.GET.get('order'),
|
||||
SortTable.MACHINES_INDEX
|
||||
)
|
||||
paginator = Paginator(machines_list, pagination_large_number)
|
||||
page = request.GET.get('page')
|
||||
try:
|
||||
machines_list = paginator.page(page)
|
||||
except PageNotAnInteger:
|
||||
# If page is not an integer, deliver first page.
|
||||
machines_list = paginator.page(1)
|
||||
except EmptyPage:
|
||||
# If page is out of range (e.g. 9999), deliver last page of results.
|
||||
machines_list = paginator.page(paginator.num_pages)
|
||||
machines_list = re2o_paginator(request, machines_list, pagination_large_number)
|
||||
return render(request, 'machines/index.html', {'machines_list': machines_list})
|
||||
|
||||
@login_required
|
||||
|
|
|
@ -32,7 +32,6 @@ from __future__ import unicode_literals
|
|||
|
||||
from django.urls import reverse
|
||||
from django.shortcuts import render, redirect
|
||||
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
|
||||
from django.contrib import messages
|
||||
from django.contrib.auth.decorators import login_required, permission_required
|
||||
from django.db.models import ProtectedError
|
||||
|
|
|
@ -42,6 +42,7 @@ from django.db.models import Q
|
|||
from django.contrib import messages
|
||||
from django.shortcuts import redirect
|
||||
from django.urls import reverse
|
||||
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
|
||||
|
||||
from cotisations.models import Cotisation, Facture, Paiement, Vente
|
||||
from machines.models import Domain, Interface, Machine
|
||||
|
@ -280,6 +281,22 @@ class SortTable:
|
|||
else:
|
||||
return request
|
||||
|
||||
def re2o_paginator(request, query_set, pagination_number):
|
||||
"""Paginator script for list display in re2o.
|
||||
:request:
|
||||
:query_set: Query_set to paginate
|
||||
:pagination_number: Number of entries to display"""
|
||||
paginator = Paginator(query_set, pagination_number)
|
||||
page = request.GET.get('page')
|
||||
try:
|
||||
results = paginator.page(page)
|
||||
except PageNotAnInteger:
|
||||
# If page is not an integer, deliver first page.
|
||||
results = paginator.page(1)
|
||||
except EmptyPage:
|
||||
# If page is out of range (e.g. 9999), deliver last page of results.
|
||||
results = paginator.page(paginator.num_pages)
|
||||
return results
|
||||
|
||||
def remove_user_room(room):
|
||||
""" Déménage de force l'ancien locataire de la chambre """
|
||||
|
|
|
@ -31,7 +31,6 @@ from django.urls import reverse
|
|||
from django.shortcuts import render, redirect
|
||||
from django.template.context_processors import csrf
|
||||
from django.contrib.auth.decorators import login_required, permission_required
|
||||
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
|
||||
from reversion.models import Version
|
||||
from django.contrib import messages
|
||||
from preferences.models import Service
|
||||
|
@ -42,6 +41,7 @@ import os
|
|||
import time
|
||||
from itertools import chain
|
||||
import users, preferences, cotisations, topologie, machines
|
||||
from .utils import re2o_paginator
|
||||
|
||||
def form(ctx, template, request):
|
||||
"""Form générique, raccourci importé par les fonctions views du site"""
|
||||
|
@ -150,16 +150,7 @@ def history(request, application, object_name, object_id):
|
|||
if hasattr(instance, 'linked_objects'):
|
||||
for related_object in chain(instance.linked_objects()):
|
||||
reversions = reversions | Version.objects.get_for_object(related_object)
|
||||
paginator = Paginator(reversions, pagination_number)
|
||||
page = request.GET.get('page')
|
||||
try:
|
||||
reversions = paginator.page(page)
|
||||
except PageNotAnInteger:
|
||||
# If page is not an integer, deliver first page.
|
||||
reversions = paginator.page(1)
|
||||
except EmptyPage:
|
||||
# If page is out of range (e.g. 9999), deliver last page of result
|
||||
reversions = paginator.page(paginator.num_pages)
|
||||
reversions = re2o_paginator(request, reversions, pagination_number)
|
||||
return render(
|
||||
request,
|
||||
're2o/history.html',
|
||||
|
|
|
@ -43,7 +43,6 @@ from django.db import IntegrityError
|
|||
from django.db import transaction
|
||||
from django.db.models import ProtectedError, Prefetch
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
|
||||
|
||||
from topologie.models import (
|
||||
Switch,
|
||||
|
@ -66,7 +65,7 @@ from topologie.forms import (
|
|||
EditAccessPointForm
|
||||
)
|
||||
from users.views import form
|
||||
from re2o.utils import SortTable
|
||||
from re2o.utils import re2o_paginator, SortTable
|
||||
from re2o.acl import (
|
||||
can_create,
|
||||
can_edit,
|
||||
|
@ -103,16 +102,7 @@ def index(request):
|
|||
SortTable.TOPOLOGIE_INDEX
|
||||
)
|
||||
pagination_number = GeneralOption.get_cached_value('pagination_number')
|
||||
paginator = Paginator(switch_list, pagination_number)
|
||||
page = request.GET.get('page')
|
||||
try:
|
||||
switch_list = paginator.page(page)
|
||||
except PageNotAnInteger:
|
||||
# If page is not an integer, deliver first page.
|
||||
switch_list = paginator.page(1)
|
||||
except EmptyPage:
|
||||
# If page is out of range (e.g. 9999), deliver last page of results.
|
||||
switch_list = paginator.page(paginator.num_pages)
|
||||
switch_list = re2o_paginator(request, switch_list, pagination_number)
|
||||
return render(request, 'topologie/index.html', {
|
||||
'switch_list': switch_list
|
||||
})
|
||||
|
@ -158,16 +148,7 @@ def index_room(request):
|
|||
SortTable.TOPOLOGIE_INDEX_ROOM
|
||||
)
|
||||
pagination_number = GeneralOption.get_cached_value('pagination_number')
|
||||
paginator = Paginator(room_list, pagination_number)
|
||||
page = request.GET.get('page')
|
||||
try:
|
||||
room_list = paginator.page(page)
|
||||
except PageNotAnInteger:
|
||||
# If page is not an integer, deliver first page.
|
||||
room_list = paginator.page(1)
|
||||
except EmptyPage:
|
||||
# If page is out of range (e.g. 9999), deliver last page of results.
|
||||
room_list = paginator.page(paginator.num_pages)
|
||||
room_list = re2o_paginator(request, room_list, pagination_number)
|
||||
return render(request, 'topologie/index_room.html', {
|
||||
'room_list': room_list
|
||||
})
|
||||
|
@ -189,16 +170,7 @@ def index_ap(request):
|
|||
SortTable.TOPOLOGIE_INDEX_BORNE
|
||||
)
|
||||
pagination_number = GeneralOption.get_cached_value('pagination_number')
|
||||
paginator = Paginator(ap_list, pagination_number)
|
||||
page = request.GET.get('page')
|
||||
try:
|
||||
ap_list = paginator.page(page)
|
||||
except PageNotAnInteger:
|
||||
# If page is not an integer, deliver first page.
|
||||
ap_list = paginator.page(1)
|
||||
except EmptyPage:
|
||||
# If page is out of range (e.g. 9999), deliver last page of results.
|
||||
ap_list = paginator.page(paginator.num_pages)
|
||||
ap_list = re2o_paginator(request, ap_list, pagination_number)
|
||||
return render(request, 'topologie/index_ap.html', {
|
||||
'ap_list': ap_list
|
||||
})
|
||||
|
|
|
@ -37,7 +37,6 @@ from __future__ import unicode_literals
|
|||
|
||||
from django.urls import reverse
|
||||
from django.shortcuts import get_object_or_404, render, redirect
|
||||
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
|
||||
from django.contrib import messages
|
||||
from django.contrib.auth.decorators import login_required, permission_required
|
||||
from django.db.models import ProtectedError, Q
|
||||
|
@ -95,6 +94,7 @@ from re2o.views import form
|
|||
from re2o.utils import (
|
||||
all_has_access,
|
||||
SortTable,
|
||||
re2o_paginator
|
||||
)
|
||||
from re2o.acl import (
|
||||
can_create,
|
||||
|
@ -572,16 +572,7 @@ def index(request):
|
|||
request.GET.get('order'),
|
||||
SortTable.USERS_INDEX
|
||||
)
|
||||
paginator = Paginator(users_list, pagination_number)
|
||||
page = request.GET.get('page')
|
||||
try:
|
||||
users_list = paginator.page(page)
|
||||
except PageNotAnInteger:
|
||||
# If page is not an integer, deliver first page.
|
||||
users_list = paginator.page(1)
|
||||
except EmptyPage:
|
||||
# If page is out of range (e.g. 9999), deliver last page of results.
|
||||
users_list = paginator.page(paginator.num_pages)
|
||||
users_list = re2o_paginator(request, users_list, pagination_number)
|
||||
return render(request, 'users/index.html', {'users_list': users_list})
|
||||
|
||||
|
||||
|
@ -597,16 +588,7 @@ def index_clubs(request):
|
|||
request.GET.get('order'),
|
||||
SortTable.USERS_INDEX
|
||||
)
|
||||
paginator = Paginator(clubs_list, pagination_number)
|
||||
page = request.GET.get('page')
|
||||
try:
|
||||
clubs_list = paginator.page(page)
|
||||
except PageNotAnInteger:
|
||||
# If page is not an integer, deliver first page.
|
||||
clubs_list = paginator.page(1)
|
||||
except EmptyPage:
|
||||
# If page is out of range (e.g. 9999), deliver last page of results.
|
||||
clubs_list = paginator.page(paginator.num_pages)
|
||||
clubs_list = re2o_paginator(request, clubs_list, pagination_number)
|
||||
return render(request, 'users/index_clubs.html', {'clubs_list': clubs_list})
|
||||
|
||||
|
||||
|
@ -622,16 +604,7 @@ def index_ban(request):
|
|||
request.GET.get('order'),
|
||||
SortTable.USERS_INDEX_BAN
|
||||
)
|
||||
paginator = Paginator(ban_list, pagination_number)
|
||||
page = request.GET.get('page')
|
||||
try:
|
||||
ban_list = paginator.page(page)
|
||||
except PageNotAnInteger:
|
||||
# If page isn't an integer, deliver first page
|
||||
ban_list = paginator.page(1)
|
||||
except EmptyPage:
|
||||
# If page is out of range (e.g. 9999), deliver last page of results.
|
||||
ban_list = paginator.page(paginator.num_pages)
|
||||
ban_list = re2o_paginator(request, ban_list, pagination_number)
|
||||
return render(request, 'users/index_ban.html', {'ban_list': ban_list})
|
||||
|
||||
|
||||
|
@ -647,16 +620,7 @@ def index_white(request):
|
|||
request.GET.get('order'),
|
||||
SortTable.USERS_INDEX_BAN
|
||||
)
|
||||
paginator = Paginator(white_list, pagination_number)
|
||||
page = request.GET.get('page')
|
||||
try:
|
||||
white_list = paginator.page(page)
|
||||
except PageNotAnInteger:
|
||||
# If page isn't an integer, deliver first page
|
||||
white_list = paginator.page(1)
|
||||
except EmptyPage:
|
||||
# If page is out of range (e.g. 9999), deliver last page of results.
|
||||
white_list = paginator.page(paginator.num_pages)
|
||||
white_list = re2o_paginator(request, white_list, pagination_number)
|
||||
return render(
|
||||
request,
|
||||
'users/index_whitelist.html',
|
||||
|
@ -676,16 +640,7 @@ def index_school(request):
|
|||
request.GET.get('order'),
|
||||
SortTable.USERS_INDEX_SCHOOL
|
||||
)
|
||||
paginator = Paginator(school_list, pagination_number)
|
||||
page = request.GET.get('page')
|
||||
try:
|
||||
school_list = paginator.page(page)
|
||||
except PageNotAnInteger:
|
||||
# If page isn't an integer, deliver first page
|
||||
school_list = paginator.page(1)
|
||||
except EmptyPage:
|
||||
# If page is out of range (e.g. 9999), deliver last page of results.
|
||||
school_list = paginator.page(paginator.num_pages)
|
||||
school_list = re2o_paginator(request, school_list, pagination_number)
|
||||
return render(
|
||||
request,
|
||||
'users/index_schools.html',
|
||||
|
@ -754,6 +709,8 @@ def profil(request, users, userid):
|
|||
request.GET.get('order'),
|
||||
SortTable.MACHINES_INDEX
|
||||
)
|
||||
pagination_large_number = GeneralOption.get_cached_value('pagination_large_number')
|
||||
machines = re2o_paginator(request, machines, pagination_large_number)
|
||||
factures = Facture.objects.filter(user=users)
|
||||
factures = SortTable.sort(
|
||||
factures,
|
||||
|
|
Loading…
Reference in a new issue