Coverage for app/models/term.py: 90%
51 statements
« prev ^ index » next coverage.py v7.10.2, created at 2026-08-24 19:35 +0000
« prev ^ index » next coverage.py v7.10.2, created at 2026-08-24 19:35 +0000
1from app.models import *
2class Term(baseModel):
3 description = CharField()
4 year = IntegerField()
5 academicYear = CharField()
6 isSummer = BooleanField(default=False)
7 isCurrentTerm = BooleanField(default=False)
8 termOrder = CharField()
9 volunteerHandbook = CharField(null=True)
10 laborHandbook = CharField(null=True)
12 _cache = None
14 @property
15 def previousAcademicYear(self):
16 """
17 Returns the previous academic year.
18 """
19 years = self.academicYear.split('-')
20 return f"{int(years[0])-1}-{int(years[1])-1}"
22 @property
23 def academicYearStartingTerm(self):
24 """
25 Saves the term that starts the academic year of the chosen term in a cache
26 to avoid doing multiple queries for the same information.
27 """
28 if self._cache is None:
29 if ("Summer" in self.description) or ("Spring" in self.description):
30 try:
31 self._cache = Term.select().where(Term.year==self.year-1, Term.description == f"Fall {self.year-1}").get()
32 except DoesNotExist:
33 self._cache = self
35 else:
36 self._cache = self
38 return self._cache
40 @property
41 def isFutureTerm(self):
42 """
43 checks to see if the term selected is a current Term.
44 If not, depending on the year and description, it determines whether it is a future term
45 """
46 if not self.isCurrentTerm:
47 currentTerm = Term.select().where(Term.isCurrentTerm == True).get()
48 if currentTerm.year < self.year:
49 return True
50 elif currentTerm.year > self.year:
51 return False
52 else:
53 if ("Fall" in currentTerm.description):
54 return False
55 elif ("Summer" in currentTerm.description) & ("Fall" in self.description):
56 return True
57 elif ("Summer" in currentTerm.description) & ("Spring" in self.description):
58 return False
59 elif ("Spring" in currentTerm.description):
60 return True
61 return False
63 @staticmethod
64 def convertDescriptionToTermOrder(description):
65 semester,year = description.split()
66 if semester == "Spring":
67 return year + "-1"
68 elif semester == "Summer" or semester == "May":
69 return year + "-2"
70 elif semester == "Fall":
71 return year + '-3'