Export user info as a CSV, fixes #368
[oweals/karmaworld.git] / karmaworld / apps / users / admin.py
1 #!/usr/bin/env python
2 # -*- coding:utf8 -*-
3 # Copyright (C) 2013  FinalsClub Foundation
4 from django.contrib import admin
5 import csv
6 import StringIO
7 from django.contrib.admin import ModelAdmin
8 from django.http import HttpResponse
9 from karmaworld.apps.users.models import UserProfile, NoteKarmaEvent, CourseKarmaEvent, GenericKarmaEvent
10
11 def user_export(modeladmin, request, queryset):
12     f = StringIO.StringIO()
13     writer = csv.writer(f, dialect='excel')
14     writer.writerow(['First Name', 'Last Name', 'Email'])
15     for user_profile in queryset:
16         user = user_profile.user
17         writer.writerow([user.first_name, user.last_name, user.email])
18     return HttpResponse(f.getvalue())
19 user_export.short_description = "Download a CSV file with users' information"
20
21
22 class UserProfileAdmin(ModelAdmin):
23     actions = (user_export,)
24
25 admin.site.register(UserProfile, UserProfileAdmin)
26 admin.site.register(GenericKarmaEvent)
27 admin.site.register(NoteKarmaEvent)
28 admin.site.register(CourseKarmaEvent)