From f341849f850e2a6dea13d96757c64240709a4775 Mon Sep 17 00:00:00 2001 From: kurasova Date: Thu, 16 Jul 2026 16:46:33 -0400 Subject: [PATCH 1/3] Seemingly fixed issue 1747 --- app/controllers/minor/routes.py | 9 ++++--- app/logic/utils.py | 43 +++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 3 deletions(-) diff --git a/app/controllers/minor/routes.py b/app/controllers/minor/routes.py index 64575ba4f..cc599a708 100644 --- a/app/controllers/minor/routes.py +++ b/app/controllers/minor/routes.py @@ -7,7 +7,7 @@ from app.models.term import Term from app.models.attachmentUpload import AttachmentUpload from app.logic.fileHandler import FileHandler -from app.logic.utils import selectSurroundingTerms, getFilesFromRequest +from app.logic.utils import selectSurroundingTerms, getFilesFromRequest, selectAllSummerTerms from app.logic.minor import ( changeProposalStatus, createOtherEngagement, @@ -117,13 +117,16 @@ def createSummerExperienceRequest(username): createSummerExperience(username, request.form) flash("Proposal successfully created.", "success") return redirect(url_for('minor.viewCceMinor', username=username, tab="manageProposals")) + + student = User.get_by_id(username) + year_name = User.rawClassLevel - summerTerms = selectSurroundingTerms(g.current_term, summerOnly=True) + summerTerms = selectAllSummerTerms(g.current_term, student) return render_template("minor/summerExperience.html", selectableTerms = summerTerms, contentAreas = [], - user = User.get_by_id(username), + user = student, ) @minor_bp.route('/cceMinor//getEngagementInformation///', methods=['GET']) diff --git a/app/logic/utils.py b/app/logic/utils.py index 87e5c3f0e..e225c6f8f 100644 --- a/app/logic/utils.py +++ b/app/logic/utils.py @@ -36,6 +36,49 @@ def selectSurroundingTerms(currentTerm, prevTerms=2, summerOnly=False): return surroundingTerms +def selectAllSummerTerms(currentTerm, student): + """ + Selects all summer terms for CCE Minor. + """ + year_name = student.rawClassLevel + order = currentTerm.termOrder.split('-') + + match year_name: + case "Freshman": + year = 1 + case "Sophomore": + year = 2 + case "Junior": + year = 3 + case "Senior": + year = 4 + + match order[1]: + case "1": + timeOfTheYear = "Fall" + case "2": + timeOfTheYear = "Spring" + case "3": + timeOfTheYear = "Summer" + + if student.hasGraduated: + return [] + elif timeOfTheYear == "Fall" and year == 1: + firstSummer = currentTerm.year + 1 + lastSummer = currentTerm.year + 3 + else: + firstSummer = currentTerm.year + lastSummer = currentTerm.year + (4 - year) + # because we do not know whether the student came to Berea in the Fall or in the Spring, + # we have an extra summer in the list just in case. + + surroundingTerms = (Term.select() + .where(Term.year >= firstSummer, Term.year <= lastSummer) + .order_by(Term.termOrder) + .where(Term.isSummer)) + + return surroundingTerms + def getStartofCurrentAcademicYear(currentTerm): if ("Summer" in currentTerm.description) or ("Spring" in currentTerm.description): fallTerm = Term.select().where(Term.year==currentTerm.year-1, Term.description == f"Fall {currentTerm.year-1}").get() From 061529779a97262dfab6ccbff433dcdb191517c4 Mon Sep 17 00:00:00 2001 From: kurasova Date: Thu, 16 Jul 2026 17:02:06 -0400 Subject: [PATCH 2/3] Adding an edge case scenario for graduating students and superseniors --- app/logic/utils.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/logic/utils.py b/app/logic/utils.py index e225c6f8f..21183731d 100644 --- a/app/logic/utils.py +++ b/app/logic/utils.py @@ -52,6 +52,8 @@ def selectAllSummerTerms(currentTerm, student): year = 3 case "Senior": year = 4 + case _: + year = 5 match order[1]: case "1": From 36ef8eb8942ba0109b9d9b7b92fd83b092e93df6 Mon Sep 17 00:00:00 2001 From: kurasova Date: Fri, 17 Jul 2026 11:47:44 -0400 Subject: [PATCH 3/3] Correctly displaying previous years reflecting the academic year of a student --- app/logic/utils.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/app/logic/utils.py b/app/logic/utils.py index 21183731d..09595c910 100644 --- a/app/logic/utils.py +++ b/app/logic/utils.py @@ -62,17 +62,23 @@ def selectAllSummerTerms(currentTerm, student): timeOfTheYear = "Spring" case "3": timeOfTheYear = "Summer" + if student.hasGraduated: return [] - elif timeOfTheYear == "Fall" and year == 1: - firstSummer = currentTerm.year + 1 - lastSummer = currentTerm.year + 3 + elif timeOfTheYear == "Fall": + firstSummer = currentTerm.year - year + 2 + lastSummer = currentTerm.year + (4 + 1 - year) + # because we do not know whether the student came to Berea in the Fall or in the Spring, + # we have an extra summer (+1) in the list just in case. else: - firstSummer = currentTerm.year - lastSummer = currentTerm.year + (4 - year) + firstSummer = currentTerm.year - year + 1 + lastSummer = currentTerm.year + (3 + 1 - year) # because we do not know whether the student came to Berea in the Fall or in the Spring, - # we have an extra summer in the list just in case. + # we have an extra summer (+1) in the list just in case. + + # this condition assumes that your raw class level changes every fall, so + # your academic year is the same for the spring and summer. surroundingTerms = (Term.select() .where(Term.year >= firstSummer, Term.year <= lastSummer)