source: asadb/util/import_db.py @ 1f94b84

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

Do better importing groups with categories

  • Property mode set to 100755
File size: 2.4 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 db_parse_date(string):
22    return datetime.datetime.strptime(string, '%d-%b-%y').date()
23
24def convert_to_int(number):
25    if number == 'n/a': return None
26    if number == '': return None
27    if number == 'none': return None
28    else: return int(number)
29
30if __name__ == '__main__':
31    indb = sys.stdin
32    reader = csv.reader(indb, delimiter='$')
33    header = reader.next()
34    for line in reader:
35        d = dictize_line(header, line)
36        print d
37        g = groups.models.Group()
38        g.pk                = d['ASA_STUDENT_GROUP_KEY']
39        g.name              = d['STUDENT_GROUP_NAME']
40        g.abbreviation      = d['STUDENT_GROUP_ACRONYM']
41        g.description       = d['STUDENT_GROUP_DESCRIPTION']
42        cat_name = d['GROUP_ACTIVITY_CATEGORY']
43        try:
44            g.activity_category = groups.models.ActivityCategory.objects.get(name=cat_name)
45        except groups.models.ActivityCategory.DoesNotExist:
46            print ">> Unknown category '%s' on group '%s'" % (cat_name, g.name, )
47            pass
48        g.website_url       = d['WEBSITE_URL']
49        g.constitution_url  = d['CONSTITUTION_WEB_URL']
50        g.meeting_times     = d['MEETING_TIMES']
51        g.advisor_name      = d['ADVISOR']
52        g.num_undergrads    = convert_to_int(d['NUM_OF_UNDERGRADUATE'])
53        g.num_grads         = convert_to_int(d['NUM_OF_GRADUATE'])
54        g.num_community     = convert_to_int(d['NUM_OF_COMMUNITY'])
55        g.num_other         = convert_to_int(d['NUM_OF_OTHERS'])
56        g.group_email       = d['STUDENT_GROUP_EMAIL']
57        g.officer_email     = d['OFFICER_EMAIL']
58        g.main_account_id   = convert_to_int(d['MAIN_ACCOUNT_ID'])
59        g.funding_account_id= convert_to_int(d['FUNDING_ACCOUNT_ID'])
60        g.athena_locker     = d['ATHENA_LOCKER']
61        g.recognition_date  = db_parse_date(d['RECOGNITION_DATE'])
62        g.update_date       = db_parse_date(d['UPDATE_DATE'])
63        g.updater           = d['UPDATER']
64        g.save()
Note: See TracBrowser for help on using the repository browser.