mango r255 - in branches/django: . mango



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]