| 1 | #!/usr/bin/python |
|---|
| 2 | import sys |
|---|
| 3 | import os |
|---|
| 4 | import csv |
|---|
| 5 | |
|---|
| 6 | if __name__ == '__main__': |
|---|
| 7 | cur_file = os.path.abspath(__file__) |
|---|
| 8 | django_dir = os.path.abspath(os.path.join(os.path.dirname(cur_file), '..')) |
|---|
| 9 | sys.path.append(django_dir) |
|---|
| 10 | os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' |
|---|
| 11 | |
|---|
| 12 | import groups.models |
|---|
| 13 | import datetime |
|---|
| 14 | |
|---|
| 15 | def dictize_line(header, line,): |
|---|
| 16 | line_dict = {} |
|---|
| 17 | for key, elem in zip(header, line, ): |
|---|
| 18 | line_dict[key]=elem |
|---|
| 19 | return line_dict |
|---|
| 20 | |
|---|
| 21 | def canonicalize_email(email): |
|---|
| 22 | if '@' in email: return email |
|---|
| 23 | else: return email + "@mit.edu" |
|---|
| 24 | |
|---|
| 25 | def db_parse_date(string): |
|---|
| 26 | return datetime.datetime.strptime(string, '%d-%b-%y').date() |
|---|
| 27 | |
|---|
| 28 | def convert_to_int(number): |
|---|
| 29 | if number == 'n/a': return None |
|---|
| 30 | if number == '': return None |
|---|
| 31 | if number == 'none': return None |
|---|
| 32 | else: return int(number) |
|---|
| 33 | |
|---|
| 34 | if __name__ == '__main__': |
|---|
| 35 | indb = sys.stdin |
|---|
| 36 | reader = csv.reader(indb) |
|---|
| 37 | header = reader.next() |
|---|
| 38 | for line in reader: |
|---|
| 39 | d = dictize_line(header, line) |
|---|
| 40 | print d |
|---|
| 41 | g = groups.models.Group() |
|---|
| 42 | g.pk = d['ASA_STUDENT_GROUP_KEY'] |
|---|
| 43 | g.name = d['STUDENT_GROUP_NAME'] |
|---|
| 44 | g.abbreviation = d['STUDENT_GROUP_ACRONYM'] |
|---|
| 45 | g.description = d['STUDENT_GROUP_DESCRIPTION'] |
|---|
| 46 | cat_name = d['GROUP_ACTIVITY_CATEGORY'] |
|---|
| 47 | try: |
|---|
| 48 | g.activity_category = groups.models.ActivityCategory.objects.get(name=cat_name) |
|---|
| 49 | except groups.models.ActivityCategory.DoesNotExist: |
|---|
| 50 | print ">> Unknown category '%s' on group '%s'" % (cat_name, g.name, ) |
|---|
| 51 | pass |
|---|
| 52 | g.website_url = d['WEBSITE_URL'] |
|---|
| 53 | g.constitution_url = d['CONSTITUTION_WEB_URL'] |
|---|
| 54 | g.meeting_times = d['MEETING_TIMES'] |
|---|
| 55 | g.advisor_name = d['ADVISOR'] |
|---|
| 56 | g.num_undergrads = convert_to_int(d['NUM_OF_UNDERGRADUATE']) |
|---|
| 57 | g.num_grads = convert_to_int(d['NUM_OF_GRADUATE']) |
|---|
| 58 | g.num_community = convert_to_int(d['NUM_OF_COMMUNITY']) |
|---|
| 59 | g.num_other = convert_to_int(d['NUM_OF_OTHERS']) |
|---|
| 60 | g.group_email = canonicalize_email(d['STUDENT_GROUP_EMAIL']) |
|---|
| 61 | g.officer_email = canonicalize_email(d['OFFICER_EMAIL']) |
|---|
| 62 | g.main_account_id = convert_to_int(d['MAIN_ACCOUNT_ID']) |
|---|
| 63 | g.funding_account_id= convert_to_int(d['FUNDING_ACCOUNT_ID']) |
|---|
| 64 | g.athena_locker = d['ATHENA_LOCKER'] |
|---|
| 65 | g.recognition_date = db_parse_date(d['RECOGNITION_DATE']) |
|---|
| 66 | g.update_date = db_parse_date(d['UPDATE_DATE']) |
|---|
| 67 | g.updater = d['UPDATER'] |
|---|
| 68 | g.save() |
|---|