Coverage for app/models/cceMinorProposal.py: 88%

33 statements  

« prev     ^ index     » next       coverage.py v7.10.2, created at 2025-12-22 18:34 +0000

1from app.models import * 

2from app.models.term import Term 

3from app.models.user import User 

4import datetime 

5 

6 

7class CCEMinorProposal(baseModel): 

8 student = ForeignKeyField(User) 

9 term = ForeignKeyField(Term) 

10 proposalType = CharField() 

11 experienceName = CharField(null=True) 

12 experienceType = CharField(null=True) 

13 contentAreas = TextField(null=True) 

14 experienceDescription = CharField(null=True) 

15 roleDescription = CharField(null=True) 

16 orgName = CharField() 

17 orgAddress = CharField() 

18 orgPhone = CharField() 

19 orgWebsite = CharField() 

20 supervisorPhone = CharField() 

21 supervisorName = CharField() 

22 supervisorEmail = CharField() 

23 totalHours = IntegerField(null=True) 

24 totalWeeks = IntegerField(null=True) 

25 createdOn = DateTimeField(default=datetime.datetime.now) 

26 createdBy = ForeignKeyField(User) 

27 status = CharField(constraints=[Check("status in ('Draft', 'Submitted', 'Approved', 'Denied', 'Completed')")]) 

28 

29 @property 

30 def isOver300Hours(self): 

31 if not int(self.totalHours) or (int(self.totalHours) and int(self.totalHours) >= 300): 

32 return True 

33 return False 

34 

35 @property 

36 def isApproved(self): 

37 return self.status in ['Approved', 'Completed']