-
Notifications
You must be signed in to change notification settings - Fork 0
/
legacy_export.py
62 lines (50 loc) · 2 KB
/
legacy_export.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
"""
lecacy_export.py
Exports the minimum amount of data needed for old systems to keep working, as postgresql queries.
"""
import django
import os
import sys
if len(sys.argv) > 1:
settings = sys.argv[1]
else:
settings = 'production'
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'internsidor.settings.{}'.format(settings))
django.setup()
from batadasen import models
output = 'START TRANSACTION;'
for person in models.Person.objects.all():
email = ''
if person.email is not None:
email = person.email.replace('\'', '\'\'')
output += """
UPDATE person SET
fornamn='{fornamn}',
efternamn='{efternamn}',
maillistmail='{maillistmail}'
WHERE medlemsnummer={medlemsnummer};
INSERT INTO person (medlemsnummer, fornamn, efternamn, maillistmail)
SELECT {medlemsnummer}, '{fornamn}', '{efternamn}', '{maillistmail}'
WHERE NOT EXISTS (SELECT 1 FROM person WHERE medlemsnummer = {medlemsnummer});
""".format(
medlemsnummer=person.member_number,
fornamn=person.first_name.replace('\'', '\'\''),
efternamn=person.last_name.replace('\'', '\'\''),
maillistmail=email)
for production in models.Production.objects.all():
output += """
UPDATE uppsattning SET
namn='{namn}',
kortnamn='{kortnamn}',
ar={ar}
WHERE nr={nr};
INSERT INTO uppsattning (nr, namn, kortnamn, ar)
SELECT {nr}, '{namn}', '{kortnamn}', {ar}
WHERE NOT EXISTS (SELECT 1 FROM uppsattning WHERE nr = {nr});
""".format(
nr=production.number,
namn=production.main_title.replace('\'', '\'\''),
kortnamn=production.short_name.replace('\'', '\'\''),
ar=production.year)
output += 'COMMIT;'
sys.stdout.write(output)