Source code for derobertis_cv.pltemplates.academic_employment
from typing import Any, List, Optional, Sequence, Union
import pyexlatex as pl
import pyexlatex.resume as lr
from derobertis_cv.models.course import CourseModel
[docs]
class AcademicEmployment(lr.Employment):
[docs]
def __init__(
self,
contents,
company_name: str,
employed_dates: str,
job_title: str,
location: str,
courses_taught: Optional[Sequence[CourseModel]] = None,
extra_contents: Optional[Any] = None,
):
if extra_contents is None:
extra_contents = []
if courses_taught is not None:
# TODO [#2]: don't use raw, use latex objects
taught_bullet_contents = []
for course in courses_taught:
from pyexlatex.logic.builder import _build
# Put each part of course taught on left and right side
course_contents = [
course.name_score_description,
pl.Raw(r"\itemsep -0.5em \vspace{-0.5em}"),
]
bullet_contents: List[Union[list, str]] = []
if course.website_url:
bullet_contents.append(
[
"Course Website:",
pl.Hyperlink(
course.website_url,
pl.Bold(
pl.TextColor(
course.website_url,
color=pl.RGB(
50, 82, 209, color_name="darkblue"
),
)
),
),
]
)
bullet_contents.append(pl.Raw(r"\itemsep -0.3em \vspace{-0.3em}"))
bullet_contents.append("Semesters: " + course.periods_taught_str)
course_contents.append(pl.UnorderedList(bullet_contents))
course_item_str = _build(course_contents)
taught_bullet_contents.append(course_item_str)
taught_bullet_contents.append(
pl.Raw(r"\itemsep -0.3em \vspace{-0.3em}")
)
del taught_bullet_contents[-1] # remove spacing after last item
taught_contents = [
"",
pl.Bold("Courses taught:"),
pl.Raw(r"\itemsep -0.5em \vspace{-0.5em}"),
pl.UnorderedList(taught_bullet_contents),
]
extra_contents[:0] = taught_contents
super().__init__(
contents,
company_name=company_name,
employed_dates=employed_dates,
job_title=job_title,
location=location,
extra_contents=extra_contents,
)