-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathimport_excel.py
89 lines (68 loc) · 2.4 KB
/
import_excel.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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
"""
Script to import members from excel sheets
"""
# Make sure django setting environment is set
import os
from datetime import datetime
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "temas_db.settings")
# Make sure Application registry is setup properly
import django
django.setup()
import pandas as pd
from restapi.models import *
def create_and_subscribe_member(row, course_name):
member = Member.objects.get_or_create(first_name=row['Vorname'],
last_name=row['Nachname'],
birthday=parse_birthday(row['Geburtsdatum']),
address=parse_address(row['Straße'], row['PLZ']),
phone=row['Telefon'],
mail=row['E-Mail'],
guardian=row['Erziehungsberechtigter'],
picked_up=make_boolean(row['Wird Abgeholt? '])
)
course = Course.objects.get(name=course_name)
if Subscription.objects.get(member=member[0]) is None:
subscription = Subscription(member=member[0],
course=course,
start_date=datetime.date(year=2018, month=10, day=1),
value=20)
subscription.save()
def parse_birthday(excel_string):
"""
Parse date string in format DD/MM/YYYY into datetime object
:param excel_string:
:return:
"""
print(excel_string)
if pd.isnull(excel_string):
return datetime.date.today()
else:
return excel_string
def parse_address(street, plz):
"""
Combine address fields street and plz into one
:param street:
:param plz:
:return:
"""
return str(street) + '\n' + str(plz)
def make_boolean(bool_string):
"""
Parse string with "Ja" or "Nein" into boolean
:param bool_string:
:return: bool
"""
if bool_string is 'ja':
return True
else:
return False
if __name__ == "__main__":
dirname = os.path.dirname(__file__)
filename = os.path.join(dirname, '../montag.xlsx')
df = pd.read_excel(filename)
print(df.columns.values)
for index, row in df.iterrows():
if not pd.isnull(row['Vorname']) and not pd.isnull(row['Nachname']):
# only if legitimate member data is in row
create_and_subscribe_member(row, 'Montag - Kinderkurs')
print('done ', index)