Update django-sponsors.
[prawokultury.git] / scripts / contacts2csv.py
1 from django.core.management import setup_environ
2 from prawokultury import settings
3 import sys
4
5 if len(sys.argv) < 2:
6         print "give me file name pls"
7         sys.exit(-1)
8
9 setup_environ(settings)
10
11 from contact.models import *
12
13 export_info = [
14         ("Created", 'created_at'),
15         ("ip", 'ip'),
16         ("Contact", 'contact'),
17         ("Form", 'form_tag'),
18         ]
19
20 conts = Contact.objects.all().order_by("created_at")
21
22 import json
23
24 json_fields = tuple(conts[0].body.keys())
25
26 # The inverse of zip is zip
27 headers, fields = zip(*export_info)     
28 rows = [headers + json_fields]
29 for cont in conts:
30         qs = Contact.objects.filter(pk=cont.id)    
31         rows.append([unicode(v) for v in qs.values_list(*fields)[0]] + [unicode(qs[0].body.get(f, 'N/A')) for f in json_fields])
32
33 import csv
34 with open(sys.argv[1],'w') as ofile:
35         o = csv.writer(ofile, dialect='excel')
36         for row in rows:
37                 o.writerow([r.encode('utf-8') for r in row])
38
39
40