source: asadb/space/annotate_for_db.py

space-accessstablestage
Last change on this file was a86a924, checked in by Alex Dehnert <adehnert@…>, 14 years ago

Office access: start building basic models

  • Property mode set to 100755
File size: 1.7 KB
Line 
1#!/usr/bin/python
2import csv
3import os
4import sys
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
13
14def process_spaces(in_spaces, out_spaces):
15    offices = set()
16    lockers = set()
17    for line in in_spaces:
18        space = line['space']
19        locker_number = ""
20        if space.count("-") > 1:
21            res = space.rsplit("-", 1)
22            office_number, locker_number = res
23            lockers.add(office_number)
24        else:
25            office_number = space
26            offices.add(office_number)
27        if space.count(","):
28            office_number = "???"
29
30        group_name = line['group']
31        found_name = ""
32        try:
33            group = groups.models.Group.objects.get(name__startswith=group_name)
34            #group = groups.models.Group.objects.get(name=group_name)
35            group_id = group.pk
36            found_name = group.name
37        except groups.models.Group.MultipleObjectsReturned:
38            group_id = -2
39        except groups.models.Group.DoesNotExist:
40            group_id = -1
41
42        out_spaces.writerow((space, group_name, found_name, group_id, office_number, locker_number, ))
43   
44    print >>sys.stderr, "lockers=%s;   offices=%s;    both=%s" % (lockers, sorted(offices), lockers & offices, )
45       
46if __name__ == '__main__':
47    reader = csv.DictReader(sys.stdin)
48    writer = csv.writer(sys.stdout)
49    writer.writerow(("space", "group", "found_name", "group_id", "office_number", "locker_number", ))
50    process_spaces(reader, writer)
Note: See TracBrowser for help on using the repository browser.