Skip to content

Created a New Operations Team Role. - #1774

Merged
BrianRamsay merged 17 commits into
developmentfrom
operationsTeam_AC
Aug 7, 2026
Merged

Created a New Operations Team Role.#1774
BrianRamsay merged 17 commits into
developmentfrom
operationsTeam_AC

Conversation

@ACBerea

@ACBerea ACBerea commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

Issue Description

Fixes issue #1761

Create a new role called "Operations Team". Convert "Student Staff" to "Program Manager".

The existing "Student Staff" are "Program Managers". No change, other than consistent naming conventions, are needed to this role. (This change is no longer being implemented.)

Operations Team has all of the same permissions as a Program Manager, plus:

  • They can create events in any program (not just the program they are the manager of), similar to a CELTS admin
  • They can edit background check info for other students, similar to a CELTS admin
  • They can edit the details of all programs (not just the program they are a manager of), similar to a CELTS admin.

Changes

  • Implemented a flag for Operations Team members: isCeltsOperationsTeam.
    • Only works if a member is already Student Staff (isCeltsStudentStaff).
    • Operation Team members can do anything that a student staff can do and anything exclusive to program managers.
  • Enabled Operations Team members to view all Program Details and edit them
  • Enabled Operations Team to create events for any program in the Create Events tab.
  • Enabled Operations Team to edit Background Check information in the User Profile.
  • Provided Admins with the ability to add and remove Operations Team authorization from the Admin Management page.
  • Rather than showing what the student manages in the user profile CELTS Labor section, it will now show that the student is part of the CELTS Operations Team.

Testing

  • Testing Enabling and Disabling Operation Team Authorization as Admin.

    • Login as an admin user.
    • Click on the Admin section in the sidebar and then click on Settings.
    • Open the User Management section.
    • Under the Current Student Staff section, hover your mouse over the checkbox next to a student's name to view tooltips.
    • Click on the checkbox to enable/disable the authorization of the user (for testing purposes, ensure that the user matches an accessible account). A flash message should appear at the top of the screen, indicating that the changes were made.
    • Follow the testing for the next section.
  • Testing User Authorization for Operation Team.

    • Login with a Student Staff account with Operation Team permissions and check any of the following pages:
      • Program Details
      • Create Event
      • Student Search --> (Search for an existing student with a background) --> Background Check
      • My Profile --> CELTS Labor
    • Follow the testing procedures for each section.
  • Testing Event Creation for All Programs.

    • Click on the Create Events Section on the sidebar.
    • Ensure that all programs and the shortcuts appear on the page.
    • Select any of the programs, including the shortcut to All Volunteer Training.
    • Enter event information and save.
    • Open the sidebar and click on Event List
    • Ensure that the event you added appears in the corresponding event section.
  • Testing Program Detail Viewing and Editing for All Programs.

    • Click on the Program Details Section on the sidebar.
    • Ensure that all programs are available for editing.
    • Check that each Edit Details button works for all programs.
    • Edit the details of the program you selected and save.
    • Click edit details again to ensure the changes were made correctly.
  • Testing Editing Other Student's Background Checks.

    • Click on the Student Search Section on the sidebar.
    • Type in a student's name or username into the search bar and click on the student's name.
    • Click on Background Check
    • Ensure that the description, status, and date sections are visible with editable information that includes a save button.
    • Input information and save.
    • The information will appear below the description.
    • Ensure that the saved information can be deleted using the small red trash icon next to the information.

ACBerea added 4 commits August 5, 2026 11:50
… ensures that the operation team is also a student staff member prior to being assigned to the operations team. Added flash messages for setting a user to an operations team member and removing them from the opperations team in userManagemetn.py. Added isCeltsOperationTeam to demo_data.py for all nessicary users.
…peration team members access to Shortcuts in create an event on userManagement. Gave Operation Team members access to Program Details page and access to view and edit all programs. Changed user profile CELTS Labor section to a specialized version in userProfile.HTML. Added isCeltsOperationTeam to areas where isProgramMangerFor was being used.
…ed access for Operation Team members to view and edit all programs, and edited userProfile.html to allow Operation Team members to view and edit background check information.
…serManagement.py. Changed user.py property name from isOperationTeam to isOnOperationTeam for clarity purposes. Implemented a checkbox with tooltips to toggle isCeltsOperationTeam property in userManagement.html and applied functionality through jQuery in userManagement.js.
Copilot AI lite review requested due to automatic review settings August 6, 2026 20:29

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@fritzj2

fritzj2 commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

Do you think that there is a way to make the checkbox more prominent in its role?
It can be challenging to tell what the checkbox does at a glance.

@fritzj2 fritzj2 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, just remove the unnecessary comments from the checks, and it should be fine.

Comment thread app/controllers/admin/volunteers.py Outdated
user = request.form.get('username')
eventID = request.form.get('eventId')
if g.current_user.isAdmin:
if g.current_user.isAdmin: # Unsure if I should add isOnOperationsTeam to this check.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This comment shouldn't be left in the final version

Comment thread app/logic/userManagement.py Outdated
def addCeltsStudentStaff(user):
user = User.get_by_id(user)
user.isCeltsStudentStaff = True
user.isCeltsStudentStaff = True # May change to account for Operations Team rules. (Ex and user.isCeltsOperationsTeam == False)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This comment too

Comment thread app/logic/userManagement.py Outdated
createActivityLog(f'Removed {user.firstName} {user.lastName} from a CELTS student staff member'+
(f', and as a manager of {programManagerRoles}.' if programManagerRoles else "."))

def removeCeltsOperationsTeam(user): # May need more detail.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here as well

Copilot AI review requested due to automatic review settings August 7, 2026 12:32

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Copilot AI review requested due to automatic review settings August 7, 2026 13:25

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Copilot AI review requested due to automatic review settings August 7, 2026 13:45

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Copilot AI review requested due to automatic review settings August 7, 2026 14:06

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Copilot AI review requested due to automatic review settings August 7, 2026 14:13

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@ACBerea
ACBerea requested a review from BrianRamsay August 7, 2026 15:08

@BrianRamsay BrianRamsay left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are a number of places where we check for admin, or program manager, or now celts operation team to manage a program.

We have a number of helper methods on the User model right now - what if we added a User.canManageProgram(self, program) method that performed this check. Then all of the boolean expressions can just use that

Comment thread app/controllers/admin/userManagement.py Outdated
flash(username + " cannot be added as CELTS Operations Team", "danger")
else:
if user.isCeltsOperationsTeam:
flash(user.firstName + " " + user.lastName +" is already a CELTS Operations Team member", "danger")

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If they want to make someone a team member and they are already a team member, it's not a bad thing. What they wanted to happen is done! They can get the same message as a successful operation.

Comment thread app/controllers/admin/userManagement.py Outdated

elif method == "removeCeltsOperationsTeam":
if not user.isCeltsOperationsTeam:
flash(user.firstName + " " + user.lastName +" is not a CELTS Operations Team member", "danger")

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as the above comment

@BetterRocket

BetterRocket commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

When setting Student Staff members to also be an Operations Member, add a header (probably called "Operations Member"), and then move the check-boxes that modify Operation Member status to be under that header. This makes the purpose of the check-boxes clear. Maybe so it looks something like this:
image

…and replace it with the existing isCeltsOperationsTeam. Removed unnessicary checks from userManagement.py for isCeltsOperationsTeam.
Copilot AI review requested due to automatic review settings August 7, 2026 15:45

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

…horization is enabled for program managers, operations team members, and admins. All related code was changed to accomodate this change.
Copilot AI review requested due to automatic review settings August 7, 2026 17:41

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

…am toggle in the User Management page on userManagement.html.
Copilot AI review requested due to automatic review settings August 7, 2026 17:55

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Copilot AI review requested due to automatic review settings August 7, 2026 17:59

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Comment thread app/controllers/admin/routes.py Outdated
Comment thread app/controllers/admin/routes.py Outdated
Comment thread app/controllers/admin/userManagement.py
Copilot AI review requested due to automatic review settings August 7, 2026 18:13

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Copilot AI review requested due to automatic review settings August 7, 2026 18:18

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Copilot AI review requested due to automatic review settings August 7, 2026 18:31

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@BrianRamsay
BrianRamsay merged commit 42ce124 into development Aug 7, 2026
0 of 5 checks passed
@BrianRamsay
BrianRamsay deleted the operationsTeam_AC branch August 7, 2026 18:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants