mango r255 - in branches/django: . mango
- From: ovitters svn gnome org
- To: svn-commits-list gnome org,gnome-sysadmin gnome org
- Subject: mango r255 - in branches/django: . mango
- Date: Tue, 24 Jun 2008 21:56:47 +0000 (UTC)
Author: ovitters
Date: Tue Jun 24 21:56:47 2008
New Revision: 255
URL: http://svn.gnome.org/viewvc/mango?rev=255&view=rev
Log:
* mango/views.py (setup_xml_paginator, list_users, list_accounts,
list_mirrors, list_foundationmembers, list_modules): Expand
add_paginator_to_xml functionality and rename the function to
setup_xml_paginator. It now also creates the paginator and gets the
selected objects. Change existing usage of this function to match
new functionality (meaning: remove duplicate lines).
Modified:
branches/django/ (props changed)
branches/django/ChangeLog
branches/django/mango/views.py
Modified: branches/django/mango/views.py
==============================================================================
--- branches/django/mango/views.py (original)
+++ branches/django/mango/views.py Tue Jun 24 21:56:47 2008
@@ -2,6 +2,7 @@
from django.conf import settings
from django.core.paginator import InvalidPage, QuerySetPaginator, Paginator
from django.db.models import Q
+from django.db.models.query import QuerySet
from django.shortcuts import get_object_or_404
import datetime
@@ -52,11 +53,22 @@
doc.write(response, 'utf-8')
return response
-def add_paginator_to_xml(root, page):
+def setup_xml_paginator(request, root, queryset):
"""Add paginator information to the XML node specified by root
Note:
- In the PHP version, the XML also had the elements result_num and page_size"""
+
+ if isinstance(queryset, QuerySet):
+ paginator = QuerySetPaginator(queryset, 25)
+ else:
+ paginator = Paginator(queryset, 25)
+
+ try:
+ page = paginator.page(request.GET.get('page', 1))
+ except InvalidPage:
+ raise Http404('Invalid page')
+
pagednode = ET.SubElement(root, 'pagedresults')
node = ET.SubElement(pagednode, 'total_results')
node.text = unicode(page.paginator.count)
@@ -65,6 +77,8 @@
node = ET.SubElement(pagednode, 'page_num')
node.text = unicode(page.number)
+ return page
+
def add_form_errors_to_xml(root, form):
"""Adds form errors to the XML node specified by root"""
@@ -90,12 +104,7 @@
queryset = models.Users.search(attrlist=('uid', 'cn', 'mail'))
- paginator = Paginator(queryset, 25)
- try:
- page = paginator.page(request.GET.get('page', 1))
- except InvalidPage:
- raise Http404('Invalid page')
- add_paginator_to_xml(pagenode, page)
+ page = setup_xml_paginator(request, pagenode, queryset)
for obj in page.object_list:
usernode = ET.SubElement(pagenode, 'user')
@@ -146,12 +155,8 @@
doc, pagenode = get_xmldoc('List Accounts', request, 'listaccounts')
queryset = models.AccountRequest.objects.filter(status='S')
- paginator = QuerySetPaginator(queryset, 25)
- try:
- page = paginator.page(request.GET.get('page', 1))
- except InvalidPage:
- raise Http404('Invalid page')
- add_paginator_to_xml(pagenode, page)
+
+ page = setup_xml_paginator(request, pagenode, queryset)
for obj in page.object_list:
el2 = ET.SubElement(pagenode, 'account', dict([a for a in obj.__dict__.iteritems() if a[0] not in ('id', 'timestamp')]))
el2g = ET.SubElement(el2, 'groups')
@@ -197,12 +202,7 @@
else:
queryset = models.Ftpmirrors.objects.all()
- paginator = QuerySetPaginator(queryset, 25)
- try:
- page = paginator.page(request.GET.get('page', 1))
- except InvalidPage:
- raise Http404('Invalid page')
- add_paginator_to_xml(pagenode, page)
+ page = setup_xml_paginator(request, pagenode, queryset)
for obj in page.object_list:
ftpnode = ET.SubElement(pagenode, 'ftpmirror')
@@ -258,13 +258,9 @@
def list_foundationmembers(request):
doc, pagenode = get_xmldoc('List Foundation Members', request, 'listfoundationmembers')
- members = models.Foundationmembers.objects.all()
- paginator = QuerySetPaginator(members, 25)
- try:
- page = paginator.page(request.GET.get('page', 1))
- except InvalidPage:
- raise Http404('Invalid page')
- add_paginator_to_xml(pagenode, page)
+ queryset = models.Foundationmembers.objects.all()
+
+ page = setup_xml_paginator(request, pagenode, queryset)
for member in page.object_list:
membernode = ET.SubElement(pagenode, 'foundationmember')
membernode.set('id', unicode(member.id))
@@ -292,12 +288,7 @@
queryset = models.Modules.search()
- paginator = Paginator(queryset, 25)
- try:
- page = paginator.page(request.GET.get('page', 1))
- except InvalidPage:
- raise Http404('Invalid page')
- add_paginator_to_xml(pagenode, page)
+ page = setup_xml_paginator(request, pagenode, queryset)
for obj in page.object_list:
modulenode = ET.SubElement(pagenode, 'module')
obj.add_to_xml(ET, modulenode)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]