source: asadb/util/import_db.py @ 1753602

fysm-4-1space-accessstablestagetest-hooks
Last change on this file since 1753602 was 1753602, checked in by Alex Dehnert <adehnert@…>, 16 years ago

Add "@mit.edu" to emails without a domain

  • Property mode set to 100755
File size: 2.5 KB
Line 
1#!/usr/bin/python
2import sys
3import os
4import csv
5
6if __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
12import groups.models
13import datetime
14
15def 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
21def canonicalize_email(email):
22    if '@' in email: return email
23    else: return email + "@mit.edu"
24
25def db_parse_date(string):
26    return datetime.datetime.strptime(string, '%d-%b-%y').date()
27
28def 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
34if __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()
Note: See TracBrowser for help on using the repository browser.