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
« 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
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')")])
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
35 @property
36 def isApproved(self):
37 return self.status in ['Approved', 'Completed']