summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Long <indirecthit@gmail.com>2006-08-19 18:21:01 +0000
committerChristopher Long <indirecthit@gmail.com>2006-08-19 18:21:01 +0000
commit741df7b44c0ac0f4ff5d2a38a080f5614f06a597 (patch)
treeeb77e2bb4092594c7c4cb0c84a51d2414ae29ce6
parentb5cbbf58c03d79b912a076658f3ae0997fcb1dbe (diff)
downloaddjango-741df7b44c0ac0f4ff5d2a38a080f5614f06a597.tar.gz
[per-object-permissions] Changed pagination to use the paginator tag described on http://code.djangoproject.com/wiki/PaginatorTag
git-svn-id: http://code.djangoproject.com/svn/django/branches/per-object-permissions@3617 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/contrib/admin/media/css/forms.css11
-rw-r--r--django/contrib/admin/templates/admin/paginator.html13
-rw-r--r--django/contrib/admin/templates/admin/row_level_permission.html3
-rw-r--r--django/contrib/admin/templatetags/row_level_permission.py23
-rw-r--r--django/contrib/admin/views/row_level_permissions.py32
5 files changed, 71 insertions, 11 deletions
diff --git a/django/contrib/admin/media/css/forms.css b/django/contrib/admin/media/css/forms.css
index 468e06a8a2..01a2937b7b 100644
--- a/django/contrib/admin/media/css/forms.css
+++ b/django/contrib/admin/media/css/forms.css
@@ -57,4 +57,13 @@ fieldset.monospace textarea { font-family:"Bitstream Vera Sans Mono",Monaco,"Cou
.vURLField { width:30em; }
.vLargeTextField, .vXMLLargeTextField { width:48em; }
.flatpages-flatpage #id_content { height:40.2em; }
-.module table .vPositiveSmallIntegerField { width:2.2em; } \ No newline at end of file
+.module table .vPositiveSmallIntegerField { width:2.2em; }
+
+
+/* PAGINATOR */
+.paginator { padding: .25em .25em .6em .25em; }
+.paginate-pages { padding: 2px 3px; border: 1px solid #ddd; cursor: pointer; text-decoration: underline; }
+.paginate-first, .paginate-last { padding: 2px 6px; border: 1px solid #ddd; font-weight: bold; }
+.paginate-previous, .paginate-next { padding: 2px 3px; border: 1px solid #ddd; }
+.paginate-link { padding: 2px 4px; border: 1px solid #ddd; }
+.paginate-current { padding: 2px 4px; border: 1px solid #ddd; font-weight: bold; background:#417690; color:#f4f379; } \ No newline at end of file
diff --git a/django/contrib/admin/templates/admin/paginator.html b/django/contrib/admin/templates/admin/paginator.html
new file mode 100644
index 0000000000..707dadc3b3
--- /dev/null
+++ b/django/contrib/admin/templates/admin/paginator.html
@@ -0,0 +1,13 @@
+{% spaceless %}
+{% if show_first %}<span class="paginate-first"><a href="?page=1" title="First Page">&laquo;</a></span>{% endif %}
+{% if has_previous %}<span class="paginate-previous"><a href="?page={{ previous }}" title="Previous Page">&lt;</a></span>{% endif %}
+{% for num in page_numbers %}
+ {% ifequal num page %}
+ <span class="paginate-current" title="Current Page">{{ num }}</span>
+ {% else %}
+ <span class="paginate-link"><a href="?page={{ num }}" title="Page {{ num }}">{{ num }}</a></span>
+ {% endifequal %}
+{% endfor %}
+{% if has_next %}<span class="paginate-next"><a href="?page={{ next }}" title="Next Page">&gt;</a></span>{% endif %}
+{% if show_last %}<span class="paginate-last"><a href="?page={{ pages }}" title="Last Page">&raquo;</a></span>{% endif %}
+{% endspaceless %} \ No newline at end of file
diff --git a/django/contrib/admin/templates/admin/row_level_permission.html b/django/contrib/admin/templates/admin/row_level_permission.html
index 354108d66e..ee9f94c911 100644
--- a/django/contrib/admin/templates/admin/row_level_permission.html
+++ b/django/contrib/admin/templates/admin/row_level_permission.html
@@ -135,7 +135,10 @@
{% if is_paginated %}
<tr align="right">
<td colspan="5">
+{% comment %}
{% if has_previous %} <a href="?page={{ previous }}"> &lt;&lt; </a> {% endif %} {% if has_next %} <a href="?page={{ next }}"> &gt;&gt; </a>{% endif %}
+{% endcomment %}
+<div class="paginator">{% paginator %}</div>
</td>
</tr>
{% endif %}
diff --git a/django/contrib/admin/templatetags/row_level_permission.py b/django/contrib/admin/templatetags/row_level_permission.py
index edbd6e09a0..29f435a280 100644
--- a/django/contrib/admin/templatetags/row_level_permission.py
+++ b/django/contrib/admin/templatetags/row_level_permission.py
@@ -34,4 +34,27 @@ def objref(parser, token):
tok = "object"
return objref_class(tok)
+def paginator(context, adjacent_pages=2):
+ """Adds pagination context variables for first, adjacent and next page links
+ in addition to those already populated by the object_list generic view."""
+ page_numbers = [n for n in \
+ range(context["page"] - adjacent_pages, context["page"] + adjacent_pages + 1) \
+ if n > 0 and n <= context["pages"]]
+ print page_numbers
+ return {
+ "hits": context["hits"],
+ "results_per_page": context["results_per_page"],
+ "page": context["page"],
+ "pages": context["pages"],
+ "page_numbers": page_numbers,
+ "next": context["next"],
+ "previous": context["previous"],
+ "has_next": context["has_next"],
+ "has_previous": context["has_previous"],
+ "show_first": 1 not in page_numbers,
+ "show_last": context["pages"] not in page_numbers,
+ }
+
+register.inclusion_tag("admin/paginator.html", takes_context=True)(paginator)
+
register.tag('objref', objref) \ No newline at end of file
diff --git a/django/contrib/admin/views/row_level_permissions.py b/django/contrib/admin/views/row_level_permissions.py
index 40154780e8..f3ecf0f93a 100644
--- a/django/contrib/admin/views/row_level_permissions.py
+++ b/django/contrib/admin/views/row_level_permissions.py
@@ -29,12 +29,7 @@ def view_row_level_permissions(request, app_label, model_name, object_id):
if not request.user.has_perm(RowLevelPermission._meta.app_label + '.' + RowLevelPermission._meta.get_change_permission()):
raise PermissionDenied
- #TODO: For now takes the number per page from the model instance not the RLP object
- paginator = ObjectPaginator(model_instance.row_level_permissions.order_by('owner_ct', 'owner_id'),
- opts.admin.list_per_page)
-
- page = int(request.GET.get('page', 0))
- rlp_list = paginator.get_page(page)
+
c = template.RequestContext(request, {
'title': _('Edit Row Level Permissions'),
@@ -42,13 +37,30 @@ def view_row_level_permissions(request, app_label, model_name, object_id):
'content_type_id':model_ct.id,
'original': model_instance,
'opts':opts,
+ })
+
+
+ #TODO: For now takes the number per page from the model instance not the RLP object
+ list_per_page = opts.admin.list_per_page
+ #list_per_page = 5
+ paginator = ObjectPaginator(model_instance.row_level_permissions.order_by('owner_ct', 'owner_id'),
+ list_per_page)
+ page = int(request.GET.get('page', 1))-1
+ rlp_list = paginator.get_page(page)
+ paginator_context = {
"is_paginated": paginator.has_next_page(0),
"has_next": paginator.has_next_page(page),
"has_previous": paginator.has_previous_page(page),
- "page": page + 1,
- "next": page + 1,
- "previous": page - 1,
- })
+ "page": page+1,
+ "next": page+2,
+ "previous": page,
+ "hits":paginator.hits,
+ "results_per_page":list_per_page,
+ "pages":paginator.pages,
+ "has_next":paginator.has_next_page(page),
+ "has_previous":paginator.has_previous_page(page),
+ }
+ c.update(paginator_context)
rlp_errors = rlp_new_data = {}
add_rlp_manip = AddRLPManipulator(model_instance, model_ct)