From 31488da8b569cb84eb05baefadcc76090b2ecaaa Mon Sep 17 00:00:00 2001 From: Tom Price Date: Tue, 4 Nov 2014 02:44:11 +0000 Subject: [PATCH] Major improvements to pagination, modals and people listing --- .idea/PyRIGS.iml | 2 +- .idea/dataSources.ids | 159 ++++++++++++++++++++++++++- .idea/dataSources.xml | 3 +- PyRIGS/settings.py | 13 ++- RIGS/templates/RIGS/person_list.html | 17 ++- RIGS/templatetags/filters.py | 43 +++++++- RIGS/views.py | 3 +- db.sqlite3 | Bin 62464 -> 111616 bytes requirements.txt | 1 - templates/base.html | 11 +- templates/pagination.html | 48 ++++---- 11 files changed, 267 insertions(+), 33 deletions(-) diff --git a/.idea/PyRIGS.iml b/.idea/PyRIGS.iml index f6cbf3c5..2b9ccb41 100644 --- a/.idea/PyRIGS.iml +++ b/.idea/PyRIGS.iml @@ -11,7 +11,7 @@ - + diff --git a/.idea/dataSources.ids b/.idea/dataSources.ids index b79da580..efee65b5 100644 --- a/.idea/dataSources.ids +++ b/.idea/dataSources.ids @@ -1,6 +1,163 @@ - + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +
+ + + + + + + + + +
+ + + + + + +
+ + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + + + + +
+ + + + + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + +
+ + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ + + +
\ No newline at end of file diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml index f2b8fe89..349ba60d 100644 --- a/.idea/dataSources.xml +++ b/.idea/dataSources.xml @@ -1,10 +1,11 @@ - + sqlite.xerial org.sqlite.JDBC jdbc:sqlite:D:\Users\Ghost\PycharmProjects\pyrigs\db.sqlite3 + .* diff --git a/PyRIGS/settings.py b/PyRIGS/settings.py index 7f0eba3f..b3af52ac 100644 --- a/PyRIGS/settings.py +++ b/PyRIGS/settings.py @@ -62,11 +62,22 @@ WSGI_APPLICATION = 'PyRIGS.wsgi.application' # Database # https://docs.djangoproject.com/en/1.7/ref/settings/#databases - +try: + import pymysql + pymysql.install_as_MySQLdb() +except ImportError: + pass DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), + }, + 'legacy': { + 'ENGINE': 'django.db.backends.mysql', + 'HOST': 'alfie.codedinternet.com', + 'NAME': 'tec_rigs', + 'USER': 'tec_rigs', + 'PASSWORD': 'xMNb(b+Giu]&', } } diff --git a/RIGS/templates/RIGS/person_list.html b/RIGS/templates/RIGS/person_list.html index 7099a9df..e42919a8 100644 --- a/RIGS/templates/RIGS/person_list.html +++ b/RIGS/templates/RIGS/person_list.html @@ -1,13 +1,20 @@ {% extends request.is_ajax|yesno:"base_ajax.html,base.html" %} {% load widget_tweaks %} +{% load paginator from filters %} {% block title %}People list{% endblock %} {% block content %}
-

People

- New -
{% include 'pagination.html' %}
+
+
+

People

+
+
+ New +
+
+
{% paginator %}
@@ -29,7 +36,7 @@
{{ person.phone }} {{ person.notes|yesno|capfirst }} - + @@ -44,6 +51,6 @@
-
{% include 'pagination.html' %}
+
{% paginator %}
{% endblock %} \ No newline at end of file diff --git a/RIGS/templatetags/filters.py b/RIGS/templatetags/filters.py index acb20b96..f679d35f 100644 --- a/RIGS/templatetags/filters.py +++ b/RIGS/templatetags/filters.py @@ -19,4 +19,45 @@ def nice_errors(form, non_field_msg='General form errors'): else: key = form.fields[field].label nice_errors[key] = errors - return nice_errors \ No newline at end of file + return nice_errors + +def paginator(context, adjacent_pages=3): + """ + To be used in conjunction with the object_list generic view. + + Adds pagination context variables for use in displaying first, adjacent and + last page links in addition to those created by the object_list generic + view. + + """ + page = context['page_obj'] + paginator = context['paginator'] + startPage = max(page.number - adjacent_pages, 1) + if startPage <= 3: startPage = 1 + endPage = page.number + adjacent_pages + 1 + if endPage >= paginator.num_pages - 1: endPage = paginator.num_pages + 1 + page_numbers = [n for n in range(startPage, endPage) \ + if n > 0 and n <= paginator.num_pages] + + dict = { + 'is_paginated': paginator.num_pages > 0, + 'page_obj': page, + 'paginator': paginator, + 'results': paginator.per_page, + 'page_numbers': page_numbers, + 'show_first': 1 not in page_numbers, + 'show_last': paginator.num_pages not in page_numbers, + 'first': 1, + 'last': paginator.num_pages, + 'has_next': page.has_next(), + 'has_previous': page.has_previous(), + } + + if page.has_next(): + dict['next'] = page.next_page_number() + if page.has_previous(): + dict['previous'] = page.previous_page_number() + + return dict + +register.inclusion_tag('pagination.html', takes_context=True)(paginator) \ No newline at end of file diff --git a/RIGS/views.py b/RIGS/views.py index a8a43daa..5cee7c30 100644 --- a/RIGS/views.py +++ b/RIGS/views.py @@ -1,7 +1,7 @@ from django.http.response import HttpResponseRedirect from django.core.urlresolvers import reverse_lazy from django.views import generic -import models +from RIGS import models # Create your views here. def login(request, **kwargs): @@ -26,6 +26,7 @@ class CloseModal(generic.TemplateView): class PersonIndex(generic.ListView): model = models.Person + paginate_by = 20 class PersonDetail(generic.DetailView): model = models.Person diff --git a/db.sqlite3 b/db.sqlite3 index 4e0553a280872a2c2886cdbe78417f3e19f92251..1d8517ae2f9d1c9404f0e2df0f1b7df8d9451b27 100644 GIT binary patch literal 111616 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 K3-XG8ss9IQQ`^q~ delta 193 zcmZp8!PfACd4d!lgChe2gDntS0x{=A4Kp?%Pxl$y#*~fh%(IvyHVg9DGEWZWmYA#{ zFD}K-tj}1KT9#T=oSB~&52cy-IGB|;&*M%yz{LwRgps+Gfw>i^ubO#s>*Z=7<300c r1)c{;#AE}G3Plc}S{on+S#ANu) @@ -136,6 +135,16 @@ + {% block js %} {% endblock %} diff --git a/templates/pagination.html b/templates/pagination.html index a8dc4121..d66ed14d 100644 --- a/templates/pagination.html +++ b/templates/pagination.html @@ -1,27 +1,35 @@ -{% if request.is_paginated %} +{% if is_paginated %}
    - {% if page_obj.has_previous %} -
  • + {% if has_previous %} +
  • {% else %} {% endif %} - {% for page in pages %} - {% if page %} - {% ifequal page page_obj.number %} -
  • {{ page }}
  • - {% else %} -
  • {{ page }}
  • - {% endifequal %} - {% else %} - ... - {% endif %} - {% endfor %} - {% if page_obj.has_next %} -
  • - {% else %} - - {% endif %} -
+ + {% if show_first %} +
  • +
  • + {% endif %} + + {% for page in page_numbers %} + {% ifequal page page_obj.number %} +
  • {{ page }}
  • + {% else %} +
  • {{ page }}
  • + {% endifequal %} + {% endfor %} + + {% if show_last %} +
  • +
  • + {% endif %} + + {% if has_next %} +
  • + {% else %} + + {% endif %} +
    {% endif %} \ No newline at end of file