making slots.
This commit is contained in:
		
							parent
							
								
									f70345ba8a
								
							
						
					
					
						commit
						a7f26de2fe
					
				
					 1 changed files with 28 additions and 10 deletions
				
			
		|  | @ -14,6 +14,7 @@ from collections import  Counter | |||
| from pathlib import Path | ||||
| import csv | ||||
| 
 | ||||
| 
 | ||||
| class Command(BaseCommand): | ||||
|     known_headers = ["date", "start time", "end time", "kind", "rooms"] | ||||
|     SLOTS = 'slots' | ||||
|  | @ -34,7 +35,7 @@ class Command(BaseCommand): | |||
|         date_strs = set() | ||||
|         slotkind_names = set() | ||||
|         room_names = set() | ||||
|         slot = {} | ||||
|         slot_details = {} | ||||
|         slot_type_count = Counter() | ||||
| 
 | ||||
|         conf = current_conference() | ||||
|  | @ -65,19 +66,19 @@ class Command(BaseCommand): | |||
|                 assert kind, "kind cannot be blank" | ||||
| 
 | ||||
|                 slot_type_count[(date, kind)] += 1 | ||||
|                 slot_name = f"{kind} {slot_type_count[(date, kind)]}" | ||||
|                 kindslot = f"{kind} {slot_type_count[(date, kind)]}" | ||||
| 
 | ||||
|                 for room in rooms.split(';'): | ||||
|                     room = room.strip() | ||||
|                     room_names.add(room) | ||||
| 
 | ||||
|                     slot[(date, slot_name, room)] = self.find_or_create_slot( | ||||
|                         date, start_time, end_time, room) | ||||
|                     slot_details[(date, kindslot, room)] = (start_time, end_time) | ||||
| 
 | ||||
|         with open(options[self.TALKS]) as csv_file: | ||||
|             csv_reader = csv.reader(csv_file) | ||||
| 
 | ||||
|             used_rooms = next(csv_reader) | ||||
|             talk = {} | ||||
| 
 | ||||
|             assert used_rooms[0] == '', "Cell (1, 1) must be empty" | ||||
| 
 | ||||
|  | @ -88,7 +89,7 @@ class Command(BaseCommand): | |||
|                 cell = row[0] | ||||
| 
 | ||||
|                 if cell.rsplit(' ', 1)[0] in slotkind_names: | ||||
|                     kind = cell | ||||
|                     kindslot = cell | ||||
| 
 | ||||
|                     for i, room in enumerate(used_rooms[1:], 1): | ||||
|                         talk_id = row[i] | ||||
|  | @ -96,10 +97,9 @@ class Command(BaseCommand): | |||
|                         if not talk_id: | ||||
|                             continue | ||||
| 
 | ||||
|                         assert (date, kind, room) in slot, f"Slot ({date}, '{kind}', '{room}') not found" | ||||
|                         assert (date, kindslot, room) in slot_details, f"Slot ({date}, '{kindslot}', '{room}') not found" | ||||
| 
 | ||||
|                         # TODO set the talk slot to the associated talk | ||||
|                         # place_talk(slot[(date, slot_name)].talk = int(talk_id) | ||||
|                         talk[(date, kindslot, room)] = int(talk_id) | ||||
| 
 | ||||
|                 else: | ||||
|                     assert parse(row[0]), "Not a date: {row[0]}" | ||||
|  | @ -114,14 +114,32 @@ class Command(BaseCommand): | |||
|             print('schedule', type(schedule)) | ||||
|             day, _created = Day.objects.get_or_create( | ||||
|                 schedule=schedule, date=date) | ||||
|             days['date'] = day | ||||
|             days[date] = day | ||||
| 
 | ||||
|         print('days', days) | ||||
| 
 | ||||
|         rooms = {} | ||||
|         for room_name in room_names: | ||||
|             room, _created = Room.objects.get_or_create( | ||||
|                 schedule=schedule, name=room_name, order=used_rooms.index(room_name)) | ||||
| 
 | ||||
|         slotkind = {} | ||||
|         slotkinds = {} | ||||
|         for slotkind_name in slotkind_names: | ||||
|             slotkind, _created = SlotKind.objects.get_or_create(schedule=schedule, label=slotkind_name) | ||||
|             slotkinds[slotkind_name] = slotkind | ||||
| 
 | ||||
|         for details in slot_details: | ||||
|             date, kindslot, room = details | ||||
|             start_time, end_time = slot_details[details] | ||||
| 
 | ||||
|             kind_name = kindslot.rsplit(' ', 1)[0] | ||||
| 
 | ||||
|             # TODO this should not be hard coded | ||||
|             exclusive = kind_name in ["plenary", "morning tea", "afternoon tea"] | ||||
| 
 | ||||
|             slot, _created = Slot.objects.get_or_create( | ||||
|                 day=days[date], | ||||
|                 kind=slotkinds[kind_name], | ||||
|                 start=start_time, end=end_time, | ||||
|                 exclusive=exclusive) | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Clinton Roy
						Clinton Roy