def get_stamp(argument, date): ''' argument is a 3-tuple such as ('10', '14', 'A') : 1014 HRS on date ('10', '4', 'P') : 2204 HRS on date ''' hours_24_format = int(argument[0]) # Note: # 12 PM is 1200 HRS # 12 AM is 0000 HRS if argument[2] == 'P' and hours_24_format != 12: hours_24_format = (hours_24_format + 12) % 24 if argument[2] == 'A' and hours_24_format == 12: hours_24_format = 0 return build_event.generateIndiaTime(date.year, date.month, date.day, hours_24_format, int(argument[1]))
import json import datetime import sys import re from icalendar import Calendar, Event import build_event DEBUG = False GENERATE_ICS = True TIMETABLE_DICT_RE ='([0-9]{1,2}):([0-9]{1,2}):([AP])M-([0-9]{1,2}):([0-9]{1,2}):([AP])M' timetable_dict_parser = re.compile(TIMETABLE_DICT_RE) OUTPUT_FILENAME = "timetable.ics" UNTIL = build_event.generateIndiaTime(2017, 11, 30, 23, 59) cal = Calendar() cal.add('prodid', '-//Your Timetable generated by GYFT//mxm.dk//') cal.add('version', '1.0') def next_weekday(d, weekday): days_ahead = weekday - d.weekday() if days_ahead <= 0: # Target day already happened this week days_ahead += 7 return d + datetime.timedelta(days_ahead) def get_stamp(argument, date): ''' argument is a 3-tuple such as ('10', '14', 'A') : 1014 HRS on date
from __future__ import print_function import build_event import datetime import pytz import sys # SEM_BEGIN=datetime.datetime.now(pytz.timezone('Asia/Kolkata')) SEM_BEGIN = build_event.generateIndiaTime(2020, 1, 2, 0, 0) MID_TERM_BEGIN = build_event.generateIndiaTime(2020, 2, 17, 0, 0) MID_TERM_END = build_event.generateIndiaTime(2020, 2, 25, 23, 59) END_TERM_BEGIN = build_event.generateIndiaTime(2020, 4, 20, 0, 0) # Recurrence strings from above dates GYFT_RECUR_STRS = [[ 'RRULE:FREQ=WEEKLY;UNTIL={}'.format( END_TERM_BEGIN.strftime('%Y%m%dT000000Z')) ], [ 'RRULE:FREQ=WEEKLY;UNTIL={}'.format( MID_TERM_BEGIN.strftime('%Y%m%dT000000Z')) ], [ 'RRULE:FREQ=WEEKLY;UNTIL={}'.format( END_TERM_BEGIN.strftime('%Y%m%dT070000Z')) ], [ 'RRULE:FREQ=WEEKLY;UNTIL={}'.format( MID_TERM_BEGIN.strftime('%Y%m%dT080000Z')) ]]
from __future__ import print_function import build_event import datetime import pytz import sys # SEM_BEGIN=datetime.datetime.now(pytz.timezone('Asia/Kolkata')) SEM_BEGIN = build_event.generateIndiaTime(2019, 7, 15, 0, 0) MID_TERM_BEGIN = build_event.generateIndiaTime(2019, 9, 16, 0, 0) MID_TERM_END = build_event.generateIndiaTime(2019, 9, 24, 23, 59) END_TERM_BEGIN = build_event.generateIndiaTime(2019, 11, 18, 0, 0) ## Sanity check sanity = [ SEM_BEGIN < MID_TERM_BEGIN, MID_TERM_BEGIN < MID_TERM_END, MID_TERM_END < END_TERM_BEGIN ] # check if anything is False sanity_check = [item for item in sanity if not item] if len(sanity_check) > 0: print("Check the dates you have entered") print("Note: SEM_BEGIN < MID_TERM_BEGIN < MID_TERM_END < END_TERM_BEGIN") sys.exit(1) '''
from __future__ import print_function import build_event # import datetime # import pytz # SEM_BEGIN = datetime.datetime.now(pytz.timezone('Asia/Kolkata')) # SEM BEGIN, and MID_TERM_BEGIN are one day before due to weird calculations SEM_BEGIN = build_event.generateIndiaTime(2022, 1, 4, 0, 0) MID_TERM_BEGIN = build_event.generateIndiaTime(2022, 2, 21, 0, 0) MID_TERM_END = build_event.generateIndiaTime(2022, 2, 25, 23, 59) END_TERM_BEGIN = build_event.generateIndiaTime(2022, 4, 7, 0, 0) # Sanity check sanity = [ SEM_BEGIN < MID_TERM_BEGIN, MID_TERM_BEGIN < MID_TERM_END, MID_TERM_END < END_TERM_BEGIN, ] # check if anything is False sanity_check = [item for item in sanity if not item] if len(sanity_check) > 0: print("Check the dates you have entered") print("Note: SEM_BEGIN < MID_TERM_BEGIN < MID_TERM_END < END_TERM_BEGIN") import os os._exit(1)
from __future__ import print_function import build_event import datetime import pytz SEM_BEGIN = datetime.datetime.now(pytz.timezone('Asia/Kolkata')) # SEM_BEGIN=build_event.generateIndiaTime(2017, 7, 16, 0, 0) MID_TERM_BEGIN = build_event.generateIndiaTime(2018, 2, 19, 0, 0) MID_TERM_END = build_event.generateIndiaTime(2018, 2, 27, 23, 59) END_TERM_BEGIN = build_event.generateIndiaTime(2018, 4, 19, 0, 0) ## Sanity check sanity = [ SEM_BEGIN < MID_TERM_BEGIN, MID_TERM_BEGIN < MID_TERM_END, MID_TERM_END < END_TERM_BEGIN ] # check if anything is False sanity_check = [item for item in sanity if not item] if len(sanity_check) > 0: print("Check the dates you have entered") print("Note: SEM_BEGIN < MID_TERM_BEGIN < MID_TERM_END < END_TERM_BEGIN") ''' Returns a list of lists denoting the time periods of working days '''
from __future__ import print_function import build_event import datetime import pytz import sys # SEM_BEGIN=datetime.datetime.now(pytz.timezone('Asia/Kolkata')) SEM_BEGIN=build_event.generateIndiaTime(2018, 7, 17, 0, 0) MID_TERM_BEGIN=build_event.generateIndiaTime(2018, 9, 17, 0, 0) MID_TERM_END=build_event.generateIndiaTime(2018, 9, 26, 23, 59) END_TERM_BEGIN=build_event.generateIndiaTime(2018, 11, 16, 0, 0) ## Sanity check sanity = [ SEM_BEGIN < MID_TERM_BEGIN, MID_TERM_BEGIN < MID_TERM_END, MID_TERM_END < END_TERM_BEGIN ] # check if anything is False sanity_check = [item for item in sanity if not item] if len(sanity_check) > 0: print("Check the dates you have entered") print("Note: SEM_BEGIN < MID_TERM_BEGIN < MID_TERM_END < END_TERM_BEGIN") sys.exit(1)
from __future__ import print_function import build_event import datetime import pytz # SEM_BEGIN=datetime.datetime.now(pytz.timezone('Asia/Kolkata')) SEM_BEGIN = build_event.generateIndiaTime(2021, 1, 4, 0, 0) MID_TERM_BEGIN = build_event.generateIndiaTime(2021, 2, 27, 0, 0) MID_TERM_END = build_event.generateIndiaTime(2021, 3, 3, 23, 59) END_TERM_BEGIN = build_event.generateIndiaTime(2021, 4, 14, 0, 0) ## Sanity check sanity = [ SEM_BEGIN < MID_TERM_BEGIN, MID_TERM_BEGIN < MID_TERM_END, MID_TERM_END < END_TERM_BEGIN ] # check if anything is False sanity_check = [item for item in sanity if not item] if len(sanity_check) > 0: print("Check the dates you have entered") print("Note: SEM_BEGIN < MID_TERM_BEGIN < MID_TERM_END < END_TERM_BEGIN") ''' Returns a list of lists denoting the time periods of working days '''
from __future__ import print_function import build_event import datetime import pytz import sys # SEM_BEGIN=datetime.datetime.now(pytz.timezone('Asia/Kolkata')) SEM_BEGIN = build_event.generateIndiaTime(2020, 9, 1, 0, 0) MID_TERM_BEGIN = build_event.generateIndiaTime(2020, 10, 23, 0, 0) MID_TERM_END = build_event.generateIndiaTime(2020, 10, 27, 23, 59) END_TERM_BEGIN = build_event.generateIndiaTime(2020, 11, 26, 0, 0) # Recurrence strings from above dates GYFT_RECUR_STRS = [['RRULE:FREQ=WEEKLY;UNTIL={}'.format(END_TERM_BEGIN.strftime('%Y%m%dT000000Z'))], ['RRULE:FREQ=WEEKLY;UNTIL={}'.format(MID_TERM_BEGIN.strftime('%Y%m%dT000000Z'))], ['RRULE:FREQ=WEEKLY;UNTIL={}'.format(END_TERM_BEGIN.strftime('%Y%m%dT070000Z'))], ['RRULE:FREQ=WEEKLY;UNTIL={}'.format(MID_TERM_BEGIN.strftime('%Y%m%dT080000Z'))]] ## Sanity check sanity = [ SEM_BEGIN < MID_TERM_BEGIN, MID_TERM_BEGIN < MID_TERM_END, MID_TERM_END < END_TERM_BEGIN ] # check if anything is False sanity_check = [item for item in sanity if not item] if len(sanity_check) > 0:
from __future__ import print_function import build_event import datetime import pytz import sys # SEM_BEGIN=datetime.datetime.now(pytz.timezone('Asia/Kolkata')) SEM_BEGIN = build_event.generateIndiaTime(2019, 1, 1, 0, 0) MID_TERM_BEGIN = build_event.generateIndiaTime(2019, 2, 17, 0, 0) MID_TERM_END = build_event.generateIndiaTime(2019, 2, 26, 23, 59) END_TERM_BEGIN = build_event.generateIndiaTime(2019, 4, 21, 0, 0) ## Sanity check sanity = [ SEM_BEGIN < MID_TERM_BEGIN, MID_TERM_BEGIN < MID_TERM_END, MID_TERM_END < END_TERM_BEGIN ] # check if anything is False sanity_check = [item for item in sanity if not item] if len(sanity_check) > 0: print("Check the dates you have entered") print("Note: SEM_BEGIN < MID_TERM_BEGIN < MID_TERM_END < END_TERM_BEGIN") sys.exit(1)
from __future__ import print_function import build_event import datetime import pytz SEM_BEGIN = datetime.datetime.now(pytz.timezone('Asia/Kolkata')) # SEM_BEGIN=build_event.generateIndiaTime(2017, 7, 16, 0, 0) MID_TERM_BEGIN = build_event.generateIndiaTime(2017, 9, 15, 0, 0) MID_TERM_END = build_event.generateIndiaTime(2017, 9, 25, 23, 59) END_TERM_BEGIN = build_event.generateIndiaTime(2017, 11, 20, 23, 59) ## Sanity check sanity = [ SEM_BEGIN < MID_TERM_BEGIN, MID_TERM_BEGIN < MID_TERM_END, MID_TERM_END < END_TERM_BEGIN ] # check if anything is False sanity_check = [item for item in sanity if not item] if len(sanity_check) > 0: print("Check the dates you have entered") print("Note: SEM_BEGIN < MID_TERM_BEGIN < MID_TERM_END < END_TERM_BEGIN") import os os.exit(1) '''
from __future__ import print_function import build_event import datetime import pytz import sys # SEM_BEGIN=datetime.datetime.now(pytz.timezone('Asia/Kolkata')) SEM_BEGIN = build_event.generateIndiaTime(2019, 1, 1, 0, 0) MID_TERM_BEGIN = build_event.generateIndiaTime(2019, 2, 17, 0, 0) MID_TERM_END = build_event.generateIndiaTime(2019, 2, 26, 23, 59) END_TERM_BEGIN = build_event.generateIndiaTime(2019, 4, 21, 0, 0) ## Sanity check sanity = [ SEM_BEGIN < MID_TERM_BEGIN, MID_TERM_BEGIN < MID_TERM_END, MID_TERM_END < END_TERM_BEGIN ] # check if anything is False sanity_check = [item for item in sanity if not item] if len(sanity_check) > 0: print("Check the dates you have entered") print("Note: SEM_BEGIN < MID_TERM_BEGIN < MID_TERM_END < END_TERM_BEGIN") sys.exit(1) '''