| 1 | #!/usr/bin/python | 
|---|
| 2 | import csv | 
|---|
| 3 | import os | 
|---|
| 4 | import sys | 
|---|
| 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 |  | 
|---|
| 14 | def 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 |          | 
|---|
| 46 | if __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) | 
|---|