import copy from datetime import date, timedelta, time from django.shortcuts import get_object_or_404 from web.models.event import Event DIVISION_MAP = { 1: [time(i).strftime('%I %p') for i in range(24)], 2: ["Morning", "Afternoon", "Night"] } class AvailabilityContractGenerator: def __init__(self, event_id): self.event_id = event_id self.event = get_object_or_404(Event, pk=event_id) self.availability_contract = { 'unavailable': False, 'dates': {} } def main(self): dates = self.generate_date_list() self.generate_availability_contract(dates) return self.availability_contract def generate_date_list(self): start_date = copy.deepcopy(self.event.start_date) delta = timedelta(days=1) dates = [] while start_date <= self.event.end_date: dates.append(start_date.isoformat()) start_date += delta return dates def generate_availability_contract(self, dates): for event_date in dates: self.availability_contract['dates'][event_date] = {'divisions': []} for division in DIVISION_MAP.get(self.event.division.id): self.availability_contract['dates'][event_date]['divisions'].append( { "name": division, "status": None } )