diff --git a/app/controllers/minor/routes.py b/app/controllers/minor/routes.py index 64575ba4f..099ee6b64 100644 --- a/app/controllers/minor/routes.py +++ b/app/controllers/minor/routes.py @@ -29,6 +29,9 @@ def viewCceMinor(username): """ Load minor management page with community engagements and summer experience """ + if not (g.current_user.isAdmin or g.current_user.username == username or g.current_user.isCeltsStudentStaff): + return abort(403) + sustainedEngagementByTerm = getCommunityEngagementByTerm(username) activeTab = request.args.get("tab", "sustainedCommunityEngagements") diff --git a/app/logic/celtsLabor.py b/app/logic/celtsLabor.py index c32bc2eae..db8c78450 100644 --- a/app/logic/celtsLabor.py +++ b/app/logic/celtsLabor.py @@ -117,14 +117,37 @@ def refreshCeltsLaborRecords(laborDict): def getCeltsLaborHistory(volunteer): laborHistoryList = list(CeltsLabor.select(CeltsLabor.positionTitle, + CeltsLabor.id, Term.description, Term.academicYear, Term.isSummer) .join(Term, on=(CeltsLabor.term == Term.id)) - .where(CeltsLabor.user == volunteer)) - + .where(CeltsLabor.user == volunteer) + .order_by(Term.termOrder.asc())) + termsByAcademicYear = {} + for position in laborHistoryList: + if position.term.isSummer: + continue + academicYear = position.term.academicYear + description = position.term.description + if academicYear not in termsByAcademicYear: + termsByAcademicYear[academicYear] = {"Fall": False,"Spring": False} + if "Fall" in description: + termsByAcademicYear[academicYear]["Fall"] = True + elif "Spring" in description: + termsByAcademicYear[academicYear]["Spring"] = True laborHistoryDict= {} - for position in laborHistoryList: - laborHistoryDict[position.positionTitle] = position.term.description if position.term.isSummer else position.term.academicYear - - return laborHistoryDict + for position in laborHistoryList: + description = position.term.description + academicYear = position.term.academicYear + if position.term.isSummer: + positionTerm = description + else: + hasFall = termsByAcademicYear[academicYear]["Fall"] + hasSpring = termsByAcademicYear[academicYear]["Spring"] + if hasFall and hasSpring: + positionTerm = description + else: + positionTerm = f"AY {academicYear}" + laborHistoryDict[position.id] = (position.positionTitle,positionTerm) + return laborHistoryDict \ No newline at end of file diff --git a/app/logic/searchUsers.py b/app/logic/searchUsers.py index 92ee2c76a..b2cf66c13 100644 --- a/app/logic/searchUsers.py +++ b/app/logic/searchUsers.py @@ -8,14 +8,13 @@ def searchUsers(query, category=None): ''' # add wildcards to each piece of the query splitSearch = query.strip().split() - firstName = splitSearch[0] + "%" - lastName = " ".join(splitSearch[1:]) +"%" - - if len(splitSearch) == 1: # search for query in first OR last name - searchWhere = (User.firstName ** firstName | User.lastName ** firstName | User.username ** splitSearch) - else: # search for first AND last name - searchWhere = (User.firstName ** firstName & User.lastName ** lastName) - + fullSearch = " ".join(splitSearch) + "%" + searchWhere = (User.firstName ** fullSearch | User.lastName ** fullSearch | User.username ** fullSearch) + for splitIndex in range(1, len(splitSearch)): + firstName = " ".join(splitSearch[:splitIndex]) + "%" + lastName = " ".join(splitSearch[splitIndex:]) + "%" + searchWhere |= (User.firstName ** firstName & User.lastName ** lastName) + if category == "instructor": userWhere = (User.isFaculty | User.isStaff) elif category == "admin": diff --git a/app/templates/main/userProfile.html b/app/templates/main/userProfile.html index b4cafbccf..597044883 100644 --- a/app/templates/main/userProfile.html +++ b/app/templates/main/userProfile.html @@ -282,8 +282,8 @@
{{term}}: {{program}}
+ {% for positionTitle, term in participatedInLabor.values() %} +{{term}}: {{positionTitle}}
{% endfor %}