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..09595c910 100644 --- a/app/logic/utils.py +++ b/app/logic/utils.py @@ -36,6 +36,57 @@ 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 + case _: + year = 5 + + match order[1]: + case "1": + timeOfTheYear = "Fall" + case "2": + timeOfTheYear = "Spring" + case "3": + timeOfTheYear = "Summer" + + + if student.hasGraduated: + return [] + 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 - 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 (+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) + .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()