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

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 

9 _cache = None 

10 

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 

23 

24 else: 

25 self._cache = self 

26 

27 return self._cache 

28 

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