diff --git a/calendar/generate_dates/app.py b/calendar/generate_dates/app.py index b22893d..6e73221 100644 --- a/calendar/generate_dates/app.py +++ b/calendar/generate_dates/app.py @@ -4,56 +4,9 @@ import sys from generate_dates import TeachingCalendar, config, templates -from generate_dates.config import parse_command_line - - -class PeriodError(KeyError): - pass - -class PaperError(KeyError): - pass - -class LectureStyleError(KeyError): - pass - - -def parse_config(config, args): - """Validate and filter the top-level configuration. - - Returns separate references to the period configuration and the - paper configuration, as applicable. (Yes, the period configuration - includes the paper configuration, but it may also include other - papers, so it's more convenient to return a separate reference - for the specified paper.) - - The configuration file will normally contain specifications for - several teaching periods and papers. We don't need all of this: - usually we're only interested in one teaching period and one - paper (if relevant). - """ - period_config = paper_config = None - # this is all irrelevant if we're going ISO style - if args.style != "iso": - if args.period not in config.keys(): - raise PeriodError() - - period_config = config[args.period] - # raises KeyError if source key is missing - period_config["name"] and period_config["weeks"] - - # papers are irrelevant in "calendar" style - if args.style == "lecture": - if "papers" in period_config.keys(): - if args.paper in period_config["papers"].keys(): - paper_config = period_config["papers"][args.paper] - # we expect at least a "lectures" entry - paper_config["lectures"] - else: - raise PaperError() - else: - raise LectureStyleError() - - return period_config, paper_config +from generate_dates.config import ( + LectureStyleError, PaperError, PeriodError, + parse_command_line, parse_config) def run():