"""
Generates an HTML schedule for CSSE 120 from the list of
learning objectives and relevant information about the term dates.
Author: David Mutchler and his colleagues.
"""
from Constants import * # All constants, and only constants, are in ALL_CAPS.
from TermInfo import TermInfo
from ScheduleSession import SessionMaker
import HTMLWriter
class HomePageMaker:
""" Generates HTML for CSSE 120 Home (Schedule) Page for a given term. """
def __init__(self, banner_term: str):
"""
The parameter banner_term should be a string like 202110
(for the fall term of the 2020-21 academic year).
"""
self.term_info = TermInfo(banner_term)
self.learning_objectives = SessionMaker(SESSION_TITLES_FILENAME)
self.schedule = HTMLWriter.Schedule(self.term_info,
self.learning_objectives.sessions)
self.home_page = HomePage(self.term_info, self.schedule)
def make_html(self) -> str:
return self.home_page.make_html()
def write_html_file(self):
with open(HOME_PAGE, "w") as file_handle:
file_handle.write(self.make_html())
class HomePage:
def __init__(self, term_info: TermInfo, schedule: HTMLWriter.Schedule):
self.term_info = term_info
self.schedule = schedule
with open(HOME_PAGE_TEMPLATE, "r") as file_handle:
self.template = file_handle.read()
with open(NAVIGATION_BAR_TEMPLATE, "r") as file_handle:
self.navigation_bar = file_handle.read()
with open(FOOTER_TEMPLATE, "r") as file_handle:
self.footer = file_handle.read()
def make_html(self) -> str:
print("\nMaking the HTML for the Home Page")
return self.template.replace(
"NAVIGATION_BAR", self.navigation_bar).replace(
"SCHEDULE", self.schedule.make_html()).replace(
"FOOTER", self.footer).replace(
"TERM_AND_YEAR", self.term_info.term_and_year).replace(
"TERM_PER_BANNER", self.term_info.banner_term).replace(
"__PIAZZA_URL__", self.term_info.piazza_url)
def main():
""" Make the HTML for the CSSE 120 HomePage for the indicated term. """
# html = gfm.markdown(xx)
maker = HomePageMaker(TERM)
maker.write_html_file()
# ----------------------------------------------------------------------
# If this module is running at the top level (as opposed to being
# imported by another module), then call the 'main' function.
# ----------------------------------------------------------------------
if __name__ == '__main__':
main()