From 8a085f6ff1195ab05ddc4f6347c2c2d21f0ab013 Mon Sep 17 00:00:00 2001 From: zawn Date: Fri, 21 Mar 2025 17:06:42 -0400 Subject: [PATCH 01/42] term missed and term added --- app/logic/certification.py | 34 ++++++++++++++++++++--- app/templates/admin/bonnerManagement.html | 1 + app/templates/main/userProfile.html | 12 ++++++-- 3 files changed, 41 insertions(+), 6 deletions(-) diff --git a/app/logic/certification.py b/app/logic/certification.py index 70c3beb03..809c188e3 100644 --- a/app/logic/certification.py +++ b/app/logic/certification.py @@ -1,9 +1,38 @@ from peewee import JOIN, DoesNotExist, Case - +from app.models.term import Term from app.models.certification import Certification from app.models.certificationRequirement import CertificationRequirement from app.models.requirementMatch import RequirementMatch from app.models.eventParticipant import EventParticipant +from app.models.user import User + +def termsAttended(certification=None, username=None): + termsAttended = 0 + if certification: + if username: + attendance = RequirementMatch.select(RequirementMatch).where(RequirementMatch.requirement == certification).get() + termsAttended = attendance.count() + return termsAttended + +def termsMissed(certification=None, username=None): + classLevel = ["Freshman", "Sophomore", "Junior", "Senior"] + termMissed = 0 + currentTerm = Term.select(Term).where(Term.isCurrentTerm == True).get() + + if currentTerm.isSummer == True: + current = f'Fall {currentTerm.year}' + currentTerm = Term.select(Term).where(Term.description == current).get() + else: + current = currentTerm.description + + for level in range(4): + if User.classLevel == classLevel[level] and current == f'Spring {currentTerm.year}': + termMissed = level + elif User.classLevel == classLevel[level]: + termMissed = level*2 + + return termMissed - termsAttended(certification, username) + def getCertRequirementsWithCompletion(*, certification, username): """ @@ -28,7 +57,6 @@ def getCertRequirements(certification=None, username=None): reqList = (Certification.select(Certification, CertificationRequirement) .join(CertificationRequirement, JOIN.LEFT_OUTER, attr="requirement") .order_by(Certification.id, CertificationRequirement.order.asc(nulls="LAST"))) - if certification: if username: # I don't know how to add something to a select, so we have to recreate the whole query :( @@ -40,7 +68,6 @@ def getCertRequirements(certification=None, username=None): .join(EventParticipant, JOIN.LEFT_OUTER, on=(RequirementMatch.event == EventParticipant.event)) .where(EventParticipant.user.is_null(True) | (EventParticipant.user == username)) .order_by(Certification.id, CertificationRequirement.order.asc(nulls="LAST"))) - # we have to add the is not null check so that `cert.requirement` always exists reqList = reqList.where(Certification.id == certification, CertificationRequirement.id.is_null(False)) reqList = reqList.distinct() @@ -61,7 +88,6 @@ def getCertRequirements(certification=None, username=None): if getattr(cert, 'requirement', None): certs[cert.id]["requirements"].append(cert.requirement) - return certs def updateCertRequirements(certId, newRequirements): diff --git a/app/templates/admin/bonnerManagement.html b/app/templates/admin/bonnerManagement.html index dfdc80e27..5e3a2c20b 100644 --- a/app/templates/admin/bonnerManagement.html +++ b/app/templates/admin/bonnerManagement.html @@ -150,6 +150,7 @@

diff --git a/app/templates/main/userProfile.html b/app/templates/main/userProfile.html index d7ebb0377..2991b6316 100644 --- a/app/templates/main/userProfile.html +++ b/app/templates/main/userProfile.html @@ -45,7 +45,7 @@

{{volunteer.firstName}} {{volunteer.lastName}}

{{volunteer.major}}
{% endif %} {% if volunteer.classLevel -%} -
{{volunteer.classLevel}}
+
{{volunteer.classLevel}}
{% endif %} {% if volunteer.cpoNumber %}
@@ -513,8 +513,16 @@
Requirement Progress
  • {{req.name}} {% if req.completed %} - {% else %} + {% elif req.completed == False and req.frequency == "once" %} + {% elif req.completed == False and req.frequency == "twice" %} + {% for i in range(2) %} + + {% endfor %} + {% elif req.completed == False and req.frequency == "term"%} + {% for i in range(2) %} + + {% endfor %} {% endif %}
  • {% endfor %} From c0f13eb1e38d8af947b9ba335171adf3f0cc3b68 Mon Sep 17 00:00:00 2001 From: zawn Date: Mon, 24 Mar 2025 19:11:51 -0400 Subject: [PATCH 02/42] almost there --- app/controllers/admin/routes.py | 1 + app/logic/certification.py | 20 ++++++++++---------- app/templates/main/userProfile.html | 17 +++++++++++------ 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/app/controllers/admin/routes.py b/app/controllers/admin/routes.py index 12ed866d3..901968cab 100644 --- a/app/controllers/admin/routes.py +++ b/app/controllers/admin/routes.py @@ -177,6 +177,7 @@ def createEvent(templateid, programid): requirements, bonnerCohorts = [], [] if eventData['program'] is not None and eventData['program'].isBonnerScholars: requirements = getCertRequirements(Certification.BONNER) + print("ccceee", requirements) rawBonnerCohorts = getBonnerCohorts(limit=5) bonnerCohorts = {} diff --git a/app/logic/certification.py b/app/logic/certification.py index 809c188e3..4ef3db1ba 100644 --- a/app/logic/certification.py +++ b/app/logic/certification.py @@ -6,32 +6,29 @@ from app.models.eventParticipant import EventParticipant from app.models.user import User -def termsAttended(certification=None, username=None): - termsAttended = 0 +def termsAttended(certification, username=None): if certification: if username: - attendance = RequirementMatch.select(RequirementMatch).where(RequirementMatch.requirement == certification).get() - termsAttended = attendance.count() + attendance = RequirementMatch.select().where(RequirementMatch.requirement_id == certification) + termsAttended = len(attendance) + print("ssdt", termsAttended) return termsAttended def termsMissed(certification=None, username=None): classLevel = ["Freshman", "Sophomore", "Junior", "Senior"] - termMissed = 0 currentTerm = Term.select(Term).where(Term.isCurrentTerm == True).get() - if currentTerm.isSummer == True: current = f'Fall {currentTerm.year}' currentTerm = Term.select(Term).where(Term.description == current).get() else: current = currentTerm.description - for level in range(4): if User.classLevel == classLevel[level] and current == f'Spring {currentTerm.year}': termMissed = level elif User.classLevel == classLevel[level]: termMissed = level*2 - - return termMissed - termsAttended(certification, username) + termMissed = termMissed - termsAttended(certification, username) + return termMissed def getCertRequirementsWithCompletion(*, certification, username): @@ -76,7 +73,11 @@ def getCertRequirements(certification=None, username=None): for cert in reqList: if username: cert.requirement.completed = bool(cert.__dict__['completed']) + if cert.requirement.frequency == "term": + cert.requirement.missedTerms = termsMissed(cert.requirement.id, username) + cert.requirement.attendedTerms = termsAttended(cert.requirement.id, username) certs.append(cert.requirement) + print("ccceee", certs) return certs #return [cert.requirement for cert in reqList] @@ -85,7 +86,6 @@ def getCertRequirements(certification=None, username=None): for cert in reqList: if cert.id not in certs.keys(): certs[cert.id] = {"data": cert, "requirements": []} - if getattr(cert, 'requirement', None): certs[cert.id]["requirements"].append(cert.requirement) return certs diff --git a/app/templates/main/userProfile.html b/app/templates/main/userProfile.html index 2991b6316..98f2ffcc2 100644 --- a/app/templates/main/userProfile.html +++ b/app/templates/main/userProfile.html @@ -509,20 +509,25 @@
    Notes
    Requirement Progress