export users list pithos/v0.7.10
authorSofia Papagiannaki <papagian@gmail.com>
Tue, 22 Nov 2011 12:05:14 +0000 (14:05 +0200)
committerSofia Papagiannaki <papagian@gmail.com>
Tue, 22 Nov 2011 12:05:14 +0000 (14:05 +0200)
Refs: #1666

pithos/im/templates/invitations_list.html
pithos/im/templates/users_list.html
pithos/im/urls.py
pithos/im/views.py

index 797485f..cb0d1b7 100644 (file)
@@ -67,9 +67,7 @@
 </div>
 {% endif %}
 
-<form action="{% url pithos.im.views.invitations_export %}" method="post">
-<button  type="submit" class="btn primary">Export</button>
-</form>
+<a class="btn success" href="{% url pithos.im.views.invitations_export %}">Export</a>
 
 <br /><br />
 {% endblock body %}
index 67f2790..03679e7 100644 (file)
@@ -66,5 +66,7 @@
 {% endif %}
 
 <a class="btn success" href="{% url pithos.im.views.users_create %}">Create a user</a>
+<a class="btn success" href="{% url pithos.im.views.users_export %}">Export</a>
+
 <br /><br />
 {% endblock body %}
index 6ea46c7..4caf977 100644 (file)
@@ -46,6 +46,7 @@ urlpatterns = patterns('pithos.im.views',
     (r'^admin/users/create$', 'users_create'),
     (r'^admin/users/(\d+)/modify/?$', 'users_modify'),
     (r'^admin/users/(\d+)/delete/?$', 'users_delete'),
+    (r'^admin/users/export/?$', 'users_export'),
     
     (r'^admin/invitations/?$', 'invitations_list'),
     (r'^admin/invitations/export/?$', 'invitations_export'),
index 38f503e..cbc5d6d 100644 (file)
@@ -390,26 +390,54 @@ def invitations_export(request):
 
     writer = csv.writer(response)
     writer.writerow(['ID',
-      'Uniq',
-      'Real Name',
-      'Code',
-      'Inviter Uniq',
-      'Inviter Real Name',
-      'Is_accepted',
-      'Created',
-      'Accepted',])
+                     'Uniq',
+                     'Real Name',
+                     'Code',
+                     'Inviter Uniq',
+                     'Inviter Real Name',
+                     'Is_accepted',
+                     'Created',
+                     'Accepted',])
     invitations = Invitation.objects.order_by('id')
     for inv in invitations:
         writer.writerow([inv.id,
-      inv.uniq,
-      inv.realname.encode("utf-8"),
-      inv.code,
-      inv.inviter.uniq,
-      inv.inviter.realname.encode("utf-8"),
-      inv.is_accepted,
-      inv.created,
-      inv.accepted,
-      ])
+                         inv.uniq.encode("utf-8"),
+                         inv.realname.encode("utf-8"),
+                         inv.code,
+                         inv.inviter.uniq.encode("utf-8"),
+                         inv.inviter.realname.encode("utf-8"),
+                         inv.is_accepted,
+                         inv.created,
+                         inv.accepted])
+
+    return response
+
+
+@requires_admin
+def users_export(request):
+    # Create the HttpResponse object with the appropriate CSV header.
+    response = HttpResponse(mimetype='text/csv')
+    response['Content-Disposition'] = 'attachment; filename=users.csv'
+
+    writer = csv.writer(response)
+    writer.writerow(['ID',
+                     'Uniq',
+                     'Real Name',
+                     'Admin',
+                     'Affiliation',
+                     'State',
+                     'Quota (GiB)',
+                     'Updated',])
+    users = User.objects.order_by('id')
+    for u in users:
+        writer.writerow([u.id,
+                         u.uniq.encode("utf-8"),
+                         u.realname.encode("utf-8"),
+                         u.is_admin,
+                         u.affiliation.encode("utf-8"),
+                         u.state.encode("utf-8"),
+                         u.quota,
+                         u.updated])
 
     return response