source: asadb/space/import_into_db.py @ d85ba8f

space-accessstablestage
Last change on this file since d85ba8f 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.4 KB
Line 
1#!/usr/bin/python
2import csv
3import datetime
4import os
5import sys
6
7if __name__ == '__main__':
8    cur_file = os.path.abspath(__file__)
9    django_dir = os.path.abspath(os.path.join(os.path.dirname(cur_file), '..'))
10    sys.path.append(django_dir)
11    os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
12
13import groups.models
14import space.models
15
16max_date = datetime.datetime.max
17today = datetime.date.today()
18
19def process_row(line):
20    group_id = int(line['group_id'])
21    if group_id < 0:
22        print "Ignoring missing group: %s: %s" % (line['group'], line, )
23        return
24    the_space, created = space.models.Space.objects.get_or_create(number=line['office_number'])
25    group = groups.models.Group.objects.get(id=group_id)
26    try:
27        assignment = space.models.SpaceAssignment.objects.get(group=group, space=the_space, locker_num=line['locker_number'], end__gte=today)
28        assignment.end = max_date
29    except space.models.SpaceAssignment.DoesNotExist:
30        assignment = space.models.SpaceAssignment(
31            group=group,
32            space=the_space,
33            start=today,
34            end=max_date,
35            locker_num=line['locker_number'],
36        )
37    assignment.save()
38
39def process_spaces(reader):
40    space.models.SpaceAssignment.objects.filter(end=max_date).update(end=today)
41    for line in reader:
42        process_row(line)
43
44if __name__ == '__main__':
45    reader = csv.DictReader(sys.stdin)
46    process_spaces(reader)
Note: See TracBrowser for help on using the repository browser.