66 lines
2.3 KiB
Python
66 lines
2.3 KiB
Python
import csv
|
|
import datetime
|
|
from config import *
|
|
|
|
step = datetime.timedelta(days = 1)
|
|
day = 1;
|
|
for i in range(offset):
|
|
start_date += step
|
|
|
|
|
|
with open('calendar.csv', mode='w') as calendar:
|
|
calendar_writer = csv.writer(calendar, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
|
|
calendar_writer.writerow(['Subject', 'Start Date', 'Start Time','End Date','End Time', 'All day event', 'Description' ,'Location'])
|
|
|
|
def period_to_time(start,period):
|
|
if start:
|
|
return start_times[period].strftime("%H:%M")
|
|
|
|
else:
|
|
return end_times[period].strftime("%H:%M")
|
|
|
|
def write_file(subject,date,long):
|
|
with open('calendar.csv', mode='a') as calendar:
|
|
calendar_writer = csv.writer(calendar, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
|
|
p2 = subject.period
|
|
if long:
|
|
p2 +=1
|
|
calendar_writer.writerow([subject.name, str(date.month) + "/"+ str(date.day) + "/" +str(date.year), period_to_time(True,subject.period),str(date.month) + "/"+ str(date.day) + "/" +str(date.year),period_to_time(False,p2),"FALSE", day])
|
|
|
|
current_date = start_date-step
|
|
|
|
while True:
|
|
current_date += step
|
|
school = True;
|
|
for vacation in vacation_days:
|
|
if(len(vacation)>1):
|
|
if current_date >= vacation[0] and current_date <= vacation[1]:
|
|
school = False
|
|
break
|
|
else:
|
|
if current_date == vacation[0]:
|
|
school = False
|
|
break
|
|
for exception in exceptions:
|
|
if exception[0] == current_date:
|
|
day = exception[1]
|
|
if not school:
|
|
continue
|
|
if current_date > end_date:
|
|
break
|
|
if current_date.weekday() == 5 or current_date.weekday() == 6:
|
|
continue
|
|
schedule = schedule_dict[day]
|
|
for period_order, period_id in enumerate(schedule):
|
|
class_object = classes[period_id-1]
|
|
class_object.period = period_order + 1
|
|
long_period = False
|
|
if period_order < len(schedule_dict) and schedule[period_order+1] == period_id and merge_periods:
|
|
long_period = True
|
|
if period_order > 0 and schedule[period_order-1] == period_id and merge_periods:
|
|
continue
|
|
write_file(class_object, current_date, long_period)
|
|
day += 1
|
|
if day > len(schedule_dict):
|
|
day = 1
|