mango r244 - in branches/django: . mango www



Author: ovitters
Date: Mon Jun 23 17:29:49 2008
New Revision: 244
URL: http://svn.gnome.org/viewvc/mango?rev=244&view=rev

Log:
	* mango/views.py (list_users): Add pagination to list_users. This is
	way more inefficient than normal models as LdapObject actually creates
	an instance for every user, no matter if it is needed by the paginator
	or not.
	* www/list_users.xsl: Correct link to list_users view.


Modified:
   branches/django/   (props changed)
   branches/django/ChangeLog
   branches/django/mango/views.py
   branches/django/www/list_users.xsl

Modified: branches/django/mango/views.py
==============================================================================
--- branches/django/mango/views.py	(original)
+++ branches/django/mango/views.py	Mon Jun 23 17:29:49 2008
@@ -1,6 +1,6 @@
 from django.http import HttpResponse, Http404, HttpResponseServerError, HttpResponseRedirect
 from django.conf import settings
-from django.core.paginator import InvalidPage, QuerySetPaginator
+from django.core.paginator import InvalidPage, QuerySetPaginator, Paginator
 from django.db.models import Q
 from django.shortcuts import get_object_or_404
 import datetime
@@ -81,25 +81,31 @@
 
 def list_users(request):
     doc, root = get_xmldoc('List Users', request)
-    el = ET.SubElement(root, 'listusers')
+    pagenode = ET.SubElement(root, 'listusers')
 
     l = models.LdapUtil().handle
     if not l:
         return HttpResponseServerError('Cannot connect to LDAP?')
 
-    users = models.Users.search()
+    queryset = models.Users.search()
     
-    for user in users:
-        usernode = ET.SubElement(el, 'user')
+    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)
+    for obj in page.object_list:
+        usernode = ET.SubElement(pagenode, 'user')
         
         node = ET.SubElement(usernode, 'uid')
-        node.text = user.uid
+        node.text = obj.uid
 
         node = ET.SubElement(usernode, 'name')
-        node.text = user.cn
+        node.text = obj.cn
 
         node = ET.SubElement(usernode, 'email')
-        node.text = user.mail
+        node.text = obj.mail
 
     return get_xmlresponse(doc, "list_users.xsl")
 

Modified: branches/django/www/list_users.xsl
==============================================================================
--- branches/django/www/list_users.xsl	(original)
+++ branches/django/www/list_users.xsl	Mon Jun 23 17:29:49 2008
@@ -7,7 +7,7 @@
 
   <xsl:include href="common.xsl" />
 
-  <xsl:variable name="script" select="'list_users.php'"/>
+  <xsl:variable name="script" select="'.'"/>
 
   <xsl:template match="listusers">
    <xsl:apply-templates select="error"/>



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]