Add log_error decorator for debugging.
[matthijs/projects/xerxes.git] / import.py
1 import sys
2 import os
3
4 sys.path = sys.path + [os.path.dirname(os.path.dirname(os.path.abspath(__file__)))]
5 os.environ['DJANGO_SETTINGS_MODULE']='xerxes.settings'
6
7 import MySQLdb
8 from django.contrib.auth.models import User
9 from xerxes.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     if row[1]:
35         su = 1
36     else:
37         su = 0
38
39     c.execute("SELECT dyn_prop.name, dyn_prop_value.value"
40     " FROM dyn_prop_value, dyn_prop WHERE"
41     " dyn_prop_value.dynamicPropertyObjectId=%s AND"
42     " dyn_prop_value.dynamicPropertyId = dyn_prop.id", row[2])
43
44     props = {}
45     for row in c.fetchall():
46         props[row[0]] = row[1]
47         
48     u.is_superuser = su
49     u.is_staff     = su
50     names = props.get('Naam','').split(' ', 1)
51     u.first_name   = names[0]
52     if (len(names) > 1):
53         u.last_name    = names[1]
54     if username != 'matthijs' and username != 'admin':
55         u.email        = props.get('Email', '')
56     u.set_unusable_password()
57     u.save()
58     try:
59         p = u.get_profile()
60     except UserProfile.DoesNotExist:
61         p = UserProfile(user=u)
62     p.address        = props.get('Adres', '')
63     p.zipcode        = props.get('Postcode', '')
64     p.town           = props.get('Woonplaats', '')
65     #p.birthdate      = props.get('Geboortedatum', '')
66     p.birthdate      = datetime.now()
67     p.telephone      = props.get('Telefoonnummer', '')
68     if ('Vegatarisch' in props):
69         p.vegetarian     = props['Vegetarisch'][0].lower() == 'j'
70     else:
71         p.vegetarian = False
72     p.foodallergies  = props.get('Voedselallergie', '')
73     p.otherallergies = props.get('Allergie', '')
74     p.bloodgroup     = props.get('Bloedgroep', '')
75     p.othermedical   = props.get('Verschijnselen', '')
76     p.warnname       = props.get('WaarschuwenNaam', '')
77     p.warntelephone  = props.get('WaarschuwenTelefoon', '')
78     p.anonymous      = False
79     try:
80         p.save()
81     except Exception:
82         print props
83 # vim: set sts=4 sw=4 expandtab: