Added “lab” style
1 parent f1858fd commit 0f1385969d95db134782f101ab4ed31fea340371
Nigel Stanger authored on 22 Jul 2021
Showing 7 changed files
View
8
calendar/teachingdates/app.py
print("{prog}: debug: paper config: {c}".format(
prog=PROG, c=dates_config.get_paper_config()))
cal = calendars.TeachingCalendar(dates_config)
if args.debug:
print("Calendar: {cal}".format(cal=cal.calendar()))
print("Lectures: {lec}".format(lec=cal.lecture_dates()))
print("Calendars: {cal}".format(cal=cal.calendars))
print("{cls}: {dates}".format(
cls=dates_config.style.title() + "s",
dates=cal.class_dates()))
print(cal.render(args.style, args.format))
 
except configuration.ConfigurationError as e:
print("{prog}: error: failed to load configuration from "
View
48
calendar/teachingdates/calendars/basecalendar.py
self.mondays[-1].isocalendar()[1] # last ISO week
]}])
self.calendars["iso"] = self.generate_calendar("iso")
 
self.lecture_offsets = []
self.skipped_lectures = []
self.class_offsets = []
self.skipped_classes = []
if self.config.paper:
self.update_lectures(self.config.get_paper_config(self.config.paper))
self.update_classes(
self.config.get_paper_config(self.config.paper),
class_type=self.config.style + "s"
)
 
def make_week(self, week_type, start, end=None):
end = start if end is None else end
return [
print("{prog}: warning: ignored unknown week type "
"'{type}'.".format(prog=PROG, type=t))
return weeks
 
def update_lectures(self, lecture_list):
for l in lecture_list["lectures"]:
def update_classes(self, class_list, class_type="lectures"):
for l in class_list[class_type]:
for t, v in l.items():
if t == "offsets":
self.lecture_offsets = v
self.class_offsets = v
elif t == "skip":
self.skipped_lectures = v
self.skipped_classes = v
else:
print("{prog}: warning: ignored unknown lecture key "
"'{key}'.".format(prog=PROG, key=t))
print("{prog}: warning: ignored unknown {type} key "
"'{key}'.".format(
prog=PROG,
type=class_type[:-1],
key=t))
 
# turn this into a generator?
def generate_calendar(self, period):
result = {}
result[week_num + break_num] = w
return result
 
# turn this into a generator?
def lecture_dates(self):
def class_dates(self):
dates = {}
lecture_num = 1
class_num = 1
teaching_weeks = [t for t in self.calendars[self.config.period].values() if isinstance(t, TeachingWeek)]
for week_index, monday in enumerate(teaching_weeks):
for offset_index, offset in enumerate(self.lecture_offsets):
lec = week_index * 2 + offset_index + 1
if lec in self.skipped_lectures:
for offset_index, offset in enumerate(self.class_offsets):
cls = week_index * 2 + offset_index + 1
if cls in self.skipped_classes:
continue
dates[lecture_num] = monday + datetime.timedelta(offset)
lecture_num += 1
dates[class_num] = monday + datetime.timedelta(offset)
class_num += 1
return dates
 
def render_latex(self, weeks):
env = jinja2.Environment(
calendars=self.calendars,
eow_offset=datetime.timedelta(self.config.end_of_week))
 
def render(self, style, fmt):
if self.config.style == "lecture":
weeks = self.lecture_dates()
if self.config.style in ["lecture", "lab"]:
weeks = self.class_dates()
else:
weeks = self.calendars[self.config.period]
if fmt == "latex":
View
10
calendar/teachingdates/config/cli.py
"c": "calendar",
"calendar": "calendar",
"l": "lecture",
"lecture": "lecture",
"p": "lab",
"lab": "lab",
"i": "iso",
"iso": "iso",
}
 
parser.add_argument(
"--style",
"-s",
default="calendar",
choices=["calendar", "c", "lecture", "l", "iso", "i"],
choices=["calendar", "c", "lecture", "l", "lab", "p", "iso", "i"],
help="output style: 'calendar' for teaching calendars in course "
"outlines, 'lecture' for individual lecture dates, or 'iso'"
"for dates across the entire ISO-8601 year [default 'calendar']")
"outlines, 'lecture'/'lab' for individual lecture/lab dates, "
"or 'iso' for dates across the entire ISO-8601 year [default "
"'calendar']")
 
parser.add_argument("--teaching-period",
"-t",
default=None,
View
calendar/teachingdates/config/config.py
View
calendar/teachingdates/config/config.yml
View
calendar/teachingdates/templates/lab.tex.j2 0 → 100644
View
calendar/teachingdates/templates/lab.txt.j2 0 → 100644