]> git.0d.be Git - panikdb.git/blob - panikdb/aa/management/commands/load-csv-users.py
commands: use print as a function
[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             email, lastname, firstname = [unicode(x.strip(), 'utf-8') for x in line[:3]]
17             emission_slugs = [x.strip().lower() for x in line[4:9] 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                 if len(username) < 8:
25                     username = '%s.%s' % (username, slugify(unicode(emission_slugs[0])))
26             else:
27                 continue
28
29             username = username[:28]
30
31             try:
32                 user = User.objects.get(username=username)
33             except User.DoesNotExist:
34                 user = User.objects.create_user(username, email)
35                 user.set_password('panik')
36             user.first_name = firstname
37             user.last_name = lastname
38             emissions = []
39             for slug in emission_slugs:
40                 try:
41                     emissions.append(Emission.objects.get(slug=slug))
42                 except Emission.DoesNotExist:
43                     print('E: missing emission:', slug)
44             user.emissions = emissions
45             user.save()