Skip to content
19 changes: 19 additions & 0 deletions tcf_website/management/commands/load_semester.py
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,25 @@ def load_course(
attribute.save()
attrs.append(attribute)
course.disciplines.set(attrs)
if not pd.isnull(description): #prerequisites
pre_req_format = "Pre-requisite" if "Pre-requisite" in course.description else "Prerequisite"
if pre_req_format in course.description:
# Get pre_req from beginning to end
from_pre_req_to_end = course.description[course.description.find(pre_req_format) :]
# Get rid of title of "Prerequisite" or "Pre-requisite"
pre_req_no_title = from_pre_req_to_end[from_pre_req_to_end.find(":") + 1 :]

# Check if in-line or not for pre_req
if pre_req_no_title.find(".") > 0:
pre_req_text = pre_req_no_title[: pre_req_no_title.find(".")]
else:
pre_req_text = pre_req_no_title

import re
# Match only on course mnemonic and code
matches = re.findall(r'([A-Z]{2,4}\s?\d{4})', pre_req_text)
prereq_codes = [m.strip().upper() for m in matches]
course.prerequisites = prereq_codes
if not course.description and not pd.isnull(description):
course.description = description
if not course.title and not pd.isnull(title):
Expand Down
2 changes: 2 additions & 0 deletions tcf_website/models/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -547,6 +547,8 @@ class Course(models.Model):
description = models.TextField(blank=True)
# Course disciplines. Optional.
disciplines = models.ManyToManyField(Discipline, blank=True)
# Course prerequisites. Optional.
prerequisites = models.JSONField(default=list, blank=True)

# Course number. Required.
number = models.IntegerField(
Expand Down
Loading