diff --git a/RIGS/templates/RIGS/person_list.html b/RIGS/templates/RIGS/person_list.html
index e42919a8..c7da422f 100644
--- a/RIGS/templates/RIGS/person_list.html
+++ b/RIGS/templates/RIGS/person_list.html
@@ -1,8 +1,10 @@
{% extends request.is_ajax|yesno:"base_ajax.html,base.html" %}
{% load widget_tweaks %}
{% load paginator from filters %}
+{% load url_replace from filters %}
+{% load orderby from filters %}
-{% block title %}People list{% endblock %}
+{% block title %}People{% endblock %}
{% block content %}
{% paginator %}
@@ -20,7 +29,7 @@
|
- Name |
+ Name |
Email |
Phone |
Notes |
diff --git a/RIGS/templatetags/filters.py b/RIGS/templatetags/filters.py
index fe1f80cc..a6be41ae 100644
--- a/RIGS/templatetags/filters.py
+++ b/RIGS/templatetags/filters.py
@@ -40,6 +40,7 @@ def paginator(context, adjacent_pages=3):
if n > 0 and n <= paginator.num_pages]
dict = {
+ 'request': context['request'],
'is_paginated': paginator.num_pages > 0,
'page_obj': page,
'paginator': paginator,
@@ -59,4 +60,28 @@ def paginator(context, adjacent_pages=3):
dict['previous'] = page.previous_page_number()
return dict
-register.inclusion_tag('pagination.html', takes_context=True)(paginator)
\ No newline at end of file
+register.inclusion_tag('pagination.html', takes_context=True)(paginator)
+
+@register.simple_tag
+def url_replace(request, field, value):
+
+ dict_ = request.GET.copy()
+
+ dict_[field] = value
+
+ return dict_.urlencode()
+
+@register.simple_tag
+def orderby(request, field, attr):
+
+ dict_ = request.GET.copy()
+
+ if dict_[field] == attr:
+ if not dict_[field].startswith("-"):
+ dict_[field] = "-" + attr
+ else:
+ dict_[field] = attr
+ else:
+ dict_[field] = attr
+
+ return dict_.urlencode()
\ No newline at end of file
diff --git a/RIGS/views.py b/RIGS/views.py
index 5cee7c30..2cf03ef0 100644
--- a/RIGS/views.py
+++ b/RIGS/views.py
@@ -1,6 +1,8 @@
from django.http.response import HttpResponseRedirect
from django.core.urlresolvers import reverse_lazy
from django.views import generic
+from django.views.decorators.csrf import csrf_exempt
+from django.db.models import Q
from RIGS import models
# Create your views here.
@@ -28,6 +30,17 @@ class PersonIndex(generic.ListView):
model = models.Person
paginate_by = 20
+ def get_queryset(self):
+ q = self.request.GET.get('q', "")
+ if len(q) >= 3:
+ object_list = self.model.objects.filter(Q(name__icontains=q) | Q(email__icontains=q))
+ else:
+ object_list = self.model.objects.all()
+ orderBy = self.request.GET.get('orderBy', None)
+ if orderBy is not None:
+ object_list = object_list.order_by(orderBy)
+ return object_list
+
class PersonDetail(generic.DetailView):
model = models.Person
diff --git a/templates/pagination.html b/templates/pagination.html
index d66ed14d..ebf0539b 100644
--- a/templates/pagination.html
+++ b/templates/pagination.html
@@ -1,14 +1,15 @@
{% if is_paginated %}
+ {% load url_replace from filters %}