Source code for derobertis_cv.models.course
from dataclasses import dataclass
from typing import Any, Optional, Sequence
from derobertis_cv.models.category import CategoryModel
from derobertis_cv.models.grades.main import GradingModel
from derobertis_cv.models.prereq import CoursePrerequsitesModel
from derobertis_cv.models.resources import ResourceSection
from derobertis_cv.models.textbook import TextbookModel
from derobertis_cv.models.university import UniversityModel
from derobertis_cv.pltemplates.software.project import SoftwareProject
[docs]
@dataclass
class CourseModel:
title: str
description: str
highlight_description: Optional[str] = None
long_description: Optional[str] = None
periods_taught: Optional[Sequence[str]] = None
evaluation_score: Optional[float] = None
evaluation_max_score: int = 5
university: Optional[UniversityModel] = None
course_id: Optional[str] = None
textbook: Optional[TextbookModel] = None
instructor: str = "Nick DeRobertis"
instructor_email: Optional[str] = "derobertisna@ufl.edu"
office_location: Optional[str] = "Stuzin 301A"
office_hours: Optional[str] = None
daily_prep: Optional[str] = None
prerequisites: Optional[CoursePrerequsitesModel] = None
class_structure_body: Any = None
grading: Optional[GradingModel] = None
topics: Optional[Sequence[CategoryModel]] = None
current_period: Optional[str] = None
current_time: Optional[str] = None
website_url: Optional[str] = None
software_projects: Optional[Sequence[SoftwareProject]] = None
resources: Optional[Sequence[ResourceSection]] = None
@property
def periods_taught_str(self) -> str:
if self.periods_taught is None:
return ""
return ", ".join(self.periods_taught)
@property
def name_score_description(self) -> str:
if self.highlight_description is not None:
desc = self.highlight_description
else:
desc = self.description
if self.evaluation_score is not None:
eval_str = (
f", {self.evaluation_score}/{self.evaluation_max_score} evaluations"
)
else:
eval_str = ""
if desc or eval_str:
extra_info = f" ({desc}{eval_str})"
else:
extra_info = ""
name_score_desc_str = f"{self.title}{extra_info}"
return name_score_desc_str