korabo/api/services/generate_availability_contract.py

52 lines
1.4 KiB
Python

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
}
)