]> git.0d.be Git - panikdb.git/blob - panikdb/aa/management/commands/load-csv-users.py
add new command to load users from a csv file
[panikdb.git] / panikdb / aa / management / commands / load-csv-users.py
1 import csv
2 from optparse import make_option
3
4 from django.core.management.base import BaseCommand, CommandError
5 from django.utils.text import slugify
6
7 from ...models import User, Emission
8
9
10 class Command(BaseCommand):
11     args = 'filename'
12
13     def handle(self, filename, verbosity, **kwargs):
14         self.verbose = (verbosity > 1)
15         for line in csv.reader(file(filename)):
16             lastname, firstname, email = [unicode(x.strip(), 'utf-8') for x in line[:3]]
17             emission_slugs = [x.strip().lower() for x in line[6:] if x]
18             if not email or not emission_slugs:
19                 continue
20             if firstname and lastname:
21                 username = slugify(u'%s-%s' % (firstname, lastname))
22             elif firstname or lastname:
23                 username = slugify(firstname or lastname)
24             else:
25                 continue
26
27             print username, email, emission_slugs
28             try:
29                 user = User.objects.get(username=username)
30             except User.DoesNotExist:
31                 user = User.objects.create_user(username, email)
32                 user.set_password('panik')
33             user.first_name = firstname
34             user.last_name = lastname
35             emissions = []
36             for slug in emission_slugs:
37                 try:
38                     emissions.append(Emission.objects.get(slug=slug))
39                 except Emission.DoesNotExist:
40                     print 'E: missing emission:', slug
41             user.emissions = emissions
42             user.save()