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

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) 

11 

12 _cache = None 

13 

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}" 

21 

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 

34 

35 else: 

36 self._cache = self 

37 

38 return self._cache 

39 

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 

62 

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'