initial commit

staff.py changes:
import django core paginator libs
get user setting for tickets per page
get http GET variables for page selection on three tables
use django paginator to get current page tickets only, and pass those to dashboard.html instead of all tickets

dashboard.html changes:
assign the correct HTTP GET argument to each table

tickets.html changes:
add pagination controls below table div, and pass HTTP GET args back to the URL when clicked
This commit is contained in:
Tom Bernens
2020-06-01 16:14:55 -07:00
parent 2041430cd3
commit 03760a921e
3 changed files with 72 additions and 3 deletions

View File

@ -15,6 +15,7 @@ from django.conf import settings
from django.contrib.auth import get_user_model
from django.urls import reverse
from django.core.exceptions import ValidationError, PermissionDenied
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.db.models import Q
from django.http import HttpResponseRedirect, Http404, HttpResponse
from django.shortcuts import render, get_object_or_404
@ -91,6 +92,15 @@ def dashboard(request):
showing ticket counts by queue/status, and a list of unassigned tickets
with options for them to 'Take' ownership of said tickets.
"""
# user settings num tickets per page
tickets_per_page = request.user.usersettings_helpdesk.tickets_per_page
# page vars for the three ticket tables
user_tickets_page = request.GET.get('ut_page', 1)
user_tickets_closed_resolved_page = request.GET.get('utcr_page', 1)
all_tickets_reported_by_current_user_page = request.GET.get('atrbcu_page', 1)
# open & reopened tickets, assigned to current user
tickets = Ticket.objects.select_related('queue').filter(
assigned_to=request.user,
@ -141,6 +151,41 @@ def dashboard(request):
else:
where_clause = """WHERE q.id = t.queue_id"""
# get user assigned tickets page
paginator = Paginator(
tickets, tickets_per_page)
try:
tickets = paginator.page(user_tickets_page)
except PageNotAnInteger:
tickets = paginator.page(1)
except EmptyPage:
tickets = paginator.page(
paginator.num_pages)
# get user completed tickets page
paginator = Paginator(
tickets_closed_resolved, tickets_per_page)
try:
tickets_closed_resolved = paginator.page(
user_tickets_closed_resolved_page)
except PageNotAnInteger:
tickets_closed_resolved = paginator.page(1)
except EmptyPage:
tickets_closed_resolved = paginator.page(
paginator.num_pages)
# get user submitted tickets page
paginator = Paginator(
all_tickets_reported_by_current_user, tickets_per_page)
try:
all_tickets_reported_by_current_user = paginator.page(
all_tickets_reported_by_current_user_page)
except PageNotAnInteger:
all_tickets_reported_by_current_user = paginator.page(1)
except EmptyPage:
all_tickets_reported_by_current_user = paginator.page(
paginator.num_pages)
return render(request, 'helpdesk/dashboard.html', {
'user_tickets': tickets,
'user_tickets_closed_resolved': tickets_closed_resolved,