* Add import script to import persons from the old system.
[matthijs/projects/xerxes.git] / import.py
1 import sys
2 import os
3
4 sys.path = sys.path + ['/home/matthijs/docs/src/django']
5 os.environ['DJANGO_SETTINGS_MODULE']='ee.settings'
6
7 import MySQLdb
8 from django.contrib.auth.models import User
9 from ee.base.models import UserProfile
10 from datetime import datetime
11
12 conn = MySQLdb.connect(
13     user = 'ee_inschrijving',
14     passwd = '3c6b362d17aa96d132544fb63f7c8b74',
15     db = 'ee_inschrijving',
16     charset = 'latin1',
17 )
18
19 c = conn.cursor()
20 c.execute("SELECT "
21 "    accountName,"
22 "    permissions,"
23 "    id"
24 "    FROM person"
25 )
26
27 for row in c.fetchall():
28     username = row[0]
29     try:
30         u = User.objects.get(username=username)
31     except User.DoesNotExist:
32         u = User(username=username)
33
34     c.execute("SELECT dyn_prop.name, dyn_prop_value.value"
35     " FROM dyn_prop_value, dyn_prop WHERE"
36     " dyn_prop_value.dynamicPropertyObjectId=%s AND"
37     " dyn_prop_value.dynamicPropertyId = dyn_prop.id", row[2])
38
39     props = {}
40     for row in c.fetchall():
41         props[row[0]] = row[1]
42         
43     if row[1]:
44         su = 1
45     else:
46         su = 0
47     u.is_superuser = su
48     u.is_staff     = su
49     names = props.get('Naam','').split(' ', 1)
50     u.first_name   = names[0]
51     if (len(names) > 1):
52         u.last_name    = names[1]
53     if username != 'matthijs' and username != 'admin':
54         u.email        = props.get('Email', '')
55     u.set_unusable_password()
56     u.save()
57     try:
58         p = u.get_profile()
59     except UserProfile.DoesNotExist:
60         p = UserProfile(user=u)
61     p.address        = props.get('Adres', '')
62     p.zipcode        = props.get('Postcode', '')
63     p.town           = props.get('Woonplaats', '')
64     #p.birthdate      = props.get('Geboortedatum', '')
65     p.birthdate      = datetime.now()
66     p.telephone      = props.get('Telefoonnummer', '')
67     if ('Vegatarisch' in props):
68         p.vegetarian     = props['Vegetarisch'][0].lower() == 'j'
69     else:
70         p.vegetarian = False
71     p.foodallergies  = props.get('Voedselallergie', '')
72     p.otherallergies = props.get('Allergie', '')
73     p.bloodgroup     = props.get('Bloedgroep', '')
74     p.othermedical   = props.get('Verschijnselen', '')
75     p.warnname       = props.get('WaarschuwenNaam', '')
76     p.warntelephone  = props.get('WaarschuwenTelefoon', '')
77     p.anonymous      = False
78     try:
79         p.save()
80     except Exception:
81         print props