Coverage for app/models/term.py: 91%
35 statements
« prev ^ index » next coverage.py v7.2.5, created at 2023-05-24 14:13 +0000
« prev ^ index » next coverage.py v7.2.5, created at 2023-05-24 14:13 +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)
9 _cache = None
11 @property
12 def academicYearStartingTerm(self):
13 """
14 Saves the term that starts the academic year of the chosen term in a cache
15 to avoid doing multiple queries for the same information.
16 """
17 if self._cache is None:
18 if ("Summer" in self.description) or ("Spring" in self.description):
19 try:
20 self._cache = Term.select().where(Term.year==self.year-1, Term.description == f"Fall {self.year-1}").get()
21 except DoesNotExist:
22 self._cache = self
24 else:
25 self._cache = self
27 return self._cache
29 @property
30 def isFutureTerm(self):
31 """
32 checks to see if the term selected is a current Term.
33 If not, depending on the year and description, it determines whether it is a future term
34 """
35 if not self.isCurrentTerm:
36 currentTerm = Term.select().where(Term.isCurrentTerm == True).get()
37 if currentTerm.year < self.year:
38 return True
39 elif currentTerm.year > self.year:
40 return False
41 else:
42 if ("Fall" in currentTerm.description):
43 return False
44 elif ("Summer" in currentTerm.description) & ("Fall" in self.description):
45 return True
46 elif ("Summer" in currentTerm.description) & ("Spring" in self.description):
47 return False
48 elif ("Spring" in currentTerm.description):
49 return True
50 return False