From 11fc7da77ce1fd8b6491b3fc18cf2370a31f9336 Mon Sep 17 00:00:00 2001
From: Ariana Meatchem <146577403+Meatchema@users.noreply.github.com>
Date: Thu, 22 Jan 2026 16:17:36 -0500
Subject: [PATCH 01/13] Added in InvitedUser variable to differentiate between
users who were not rsvp and have attended and or have not attended
---
app/controllers/admin/volunteers.py | 9 ++++++---
app/templates/events/volunteerDetails.html | 18 ++++++++++++------
2 files changed, 18 insertions(+), 9 deletions(-)
diff --git a/app/controllers/admin/volunteers.py b/app/controllers/admin/volunteers.py
index 2dbe81479..bb71e4745 100644
--- a/app/controllers/admin/volunteers.py
+++ b/app/controllers/admin/volunteers.py
@@ -115,11 +115,14 @@ def volunteerDetailsPage(eventID):
waitlistUser = list(set([obj for obj in eventRsvpData if obj.rsvpWaitlist]))
rsvpUser = list(set([obj for obj in eventRsvpData if not obj.rsvpWaitlist ]))
-
+ invitedUser = list(set([obj for obj in eventParticipantData if not obj.rsvpWaitlist and datetime.now() < datetime.combine(event.startDate, event.timeStart)]))
+ attendedUser = list(set([obj for obj in eventParticipantData if not obj.rsvpWaitlist and datetime.now() >= datetime.combine(event.startDate, event.timeStart)]))
+
return render_template("/events/volunteerDetails.html",
waitlistUser = waitlistUser,
- attendedUser= eventParticipantData,
- rsvpUser= rsvpUser,
+ attendedUser = attendedUser,
+ rsvpUser = rsvpUser,
+ invitedUser = invitedUser,
event = event)
diff --git a/app/templates/events/volunteerDetails.html b/app/templates/events/volunteerDetails.html
index 8bc2a9eee..0101ec337 100644
--- a/app/templates/events/volunteerDetails.html
+++ b/app/templates/events/volunteerDetails.html
@@ -56,8 +56,8 @@
{{ participant.user.firstName }} {{ participant
{% endmacro %}
-{% macro printParticipants(type, attended, rsvp, waitlist) %}
- {% set combinedParticipants = attended + rsvp + waitlist %}
+{% macro printParticipants(type, attended, rsvp, waitlist, invited) %}
+ {% set combinedParticipants = attended + rsvp + waitlist + invited %}
{% for p in combinedParticipants | unique %}
{% if p in rsvp %}
{{createTable(p, 'rsvp') if type == 'table' else createCard(p, 'rsvp') }}
@@ -68,11 +68,14 @@
{{ participant.user.firstName }} {{ participant
{% if p in waitlist %}
{{createTable(p, 'waitlist') if type == 'table' else createCard(p, 'waitlist') }}
{% endif %}
+ {% if p in invited %}
+ {{createTable(p, 'invited') if type == 'table' else createCard(p, 'invited') }}
+ {% endif %}
{% endfor %}
{% endmacro %}
{% macro createCheckbox(checkboxName) %}
- {% set labelText = "RSVP" if checkboxName == 'rsvp' else 'Waitlist' if checkboxName == 'waitlist' else 'Attended' %}
+ {% set labelText = "RSVP" if checkboxName == 'rsvp' else 'Waitlist' if checkboxName == 'waitlist' else 'Attended' if checkboxName == 'attended' else 'Invited' %}
{% endmacro %}
@@ -82,7 +85,7 @@
{{ participant.user.firstName }} {{ participant
{{super()}}
-{% if attendedUser or waitlistUser or rsvpUser %}
+{% if attendedUser or waitlistUser or rsvpUser or invitedUser %}
{{event.name}} on {{event.startDate.strftime('%m/%d/%Y')}}
@@ -103,6 +106,9 @@
{% if attendedUser %}
{{createCheckbox('attended')}}
{% endif %}
+ {% if invitedUser %}
+ {{createCheckbox('invited')}}
+ {% endif %}
- {{ printParticipants('table', attendedUser, rsvpUser, waitlistUser) }}
+ {{ printParticipants('table', attendedUser, rsvpUser, waitlistUser, invitedUser) }}
{% else %}
From fa303f19c14e00174b663e3514f49ffee4d545e6 Mon Sep 17 00:00:00 2001
From: Ariana Meatchem <146577403+Meatchema@users.noreply.github.com>
Date: Fri, 6 Feb 2026 10:23:49 -0500
Subject: [PATCH 02/13] Fixed the user's Invited label in the table and card
---
app/controllers/admin/volunteers.py | 2 --
app/templates/events/volunteerDetails.html | 20 ++++++++++----------
2 files changed, 10 insertions(+), 12 deletions(-)
diff --git a/app/controllers/admin/volunteers.py b/app/controllers/admin/volunteers.py
index bb71e4745..8d2c77ada 100644
--- a/app/controllers/admin/volunteers.py
+++ b/app/controllers/admin/volunteers.py
@@ -115,14 +115,12 @@ def volunteerDetailsPage(eventID):
waitlistUser = list(set([obj for obj in eventRsvpData if obj.rsvpWaitlist]))
rsvpUser = list(set([obj for obj in eventRsvpData if not obj.rsvpWaitlist ]))
- invitedUser = list(set([obj for obj in eventParticipantData if not obj.rsvpWaitlist and datetime.now() < datetime.combine(event.startDate, event.timeStart)]))
attendedUser = list(set([obj for obj in eventParticipantData if not obj.rsvpWaitlist and datetime.now() >= datetime.combine(event.startDate, event.timeStart)]))
return render_template("/events/volunteerDetails.html",
waitlistUser = waitlistUser,
attendedUser = attendedUser,
rsvpUser = rsvpUser,
- invitedUser = invitedUser,
event = event)
diff --git a/app/templates/events/volunteerDetails.html b/app/templates/events/volunteerDetails.html
index 13494eda6..0130a9bfb 100644
--- a/app/templates/events/volunteerDetails.html
+++ b/app/templates/events/volunteerDetails.html
@@ -56,9 +56,12 @@
{{ participant.user.firstName }} {{ participant
{% endmacro %}
-{% macro printParticipants(type, attended, rsvp, waitlist, invited) %}
- {% set combinedParticipants = attended + rsvp + waitlist + invited %}
+{% macro printParticipants(type, attended, rsvp, waitlist) %}
+ {% set combinedParticipants = attended + rsvp + waitlist %}
{% for p in combinedParticipants | unique %}
+ {% if p in rsvp and not event.isRsvpRequired %}
+ {{createTable(p, 'invited') if type == 'table' else createCard(p, 'invited') }}
+ {% endif %}
{% if p in rsvp %}
{{createTable(p, 'rsvp') if type == 'table' else createCard(p, 'rsvp') }}
{% endif %}
@@ -68,9 +71,6 @@
{{ participant.user.firstName }} {{ participant
{% if p in waitlist %}
{{createTable(p, 'waitlist') if type == 'table' else createCard(p, 'waitlist') }}
{% endif %}
- {% if p in invited %}
- {{createTable(p, 'invited') if type == 'table' else createCard(p, 'invited') }}
- {% endif %}
{% endfor %}
{% endmacro %}
@@ -85,7 +85,7 @@
{{ participant.user.firstName }} {{ participant
{{super()}}
-{% if attendedUser or waitlistUser or rsvpUser or invitedUser %}
+{% if attendedUser or waitlistUser or rsvpUser %}
{{event.name}} on {{event.startDate.strftime('%m/%d/%Y')}}
@@ -97,7 +97,7 @@
- {% if rsvpUser %}
+ {% if rsvpUser and event.isRsvpRequired %}
{{createCheckbox('rsvp')}}
{% endif %}
{% if waitlistUser %}
@@ -106,7 +106,7 @@
{% if attendedUser %}
{{createCheckbox('attended')}}
{% endif %}
- {% if invitedUser %}
+ {% if rsvpUser and not event.isRsvpRequired %}
{{createCheckbox('invited')}}
{% endif %}
{{ participant.user.firstName }} {{ participant
{% if p in rsvp and not event.isRsvpRequired %}
{{createTable(p, 'invited') if type == 'table' else createCard(p, 'invited') }}
{% endif %}
- {% if p in rsvp %}
+ {% if p in rsvp and event.isRsvpRequired %}
{{createTable(p, 'rsvp') if type == 'table' else createCard(p, 'rsvp') }}
{% endif %}
{% if p in attended%}
From fb6af41eb0012cfdbbf56fb47476632c1d1d5de0 Mon Sep 17 00:00:00 2001
From: Ariana Meatchem <146577403+Meatchema@users.noreply.github.com>
Date: Mon, 9 Feb 2026 15:20:23 -0500
Subject: [PATCH 04/13] Removed datetime restriction so that scanned user can
show in volunteer details
---
app/controllers/admin/volunteers.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/controllers/admin/volunteers.py b/app/controllers/admin/volunteers.py
index 8d2c77ada..cf730ea73 100644
--- a/app/controllers/admin/volunteers.py
+++ b/app/controllers/admin/volunteers.py
@@ -115,7 +115,7 @@ def volunteerDetailsPage(eventID):
waitlistUser = list(set([obj for obj in eventRsvpData if obj.rsvpWaitlist]))
rsvpUser = list(set([obj for obj in eventRsvpData if not obj.rsvpWaitlist ]))
- attendedUser = list(set([obj for obj in eventParticipantData if not obj.rsvpWaitlist and datetime.now() >= datetime.combine(event.startDate, event.timeStart)]))
+ attendedUser = list(set([obj for obj in eventParticipantData if not obj.rsvpWaitlist]))
return render_template("/events/volunteerDetails.html",
waitlistUser = waitlistUser,
From 12ebcff7f99c071608e41b73d8781568951866de Mon Sep 17 00:00:00 2001
From: Ariana Meatchem <146577403+Meatchema@users.noreply.github.com>
Date: Mon, 9 Feb 2026 15:25:52 -0500
Subject: [PATCH 05/13] changed eventVolunteerData to include non-waitlist
RSVP's so that the manage volunteer table can see ALL the volunteers added to
the event
---
app/logic/participants.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/app/logic/participants.py b/app/logic/participants.py
index 630ea0aea..b0933a959 100644
--- a/app/logic/participants.py
+++ b/app/logic/participants.py
@@ -193,8 +193,8 @@ def sortParticipantsByStatus(event):
# if rsvp is required for the event, grab all volunteers that are in the waitlist
eventWaitlistData = [volunteer for volunteer in (eventParticipants + eventRsvpData) if volunteer.rsvpWaitlist and event.isRsvpRequired]
- # put the rest of the users that are not on the waitlist into the volunteer data
- eventVolunteerData = [volunteer for volunteer in eventNonAttendedData if volunteer not in eventWaitlistData]
+ # put all participants and non-waitlisted RSVPs into the volunteer data
+ eventVolunteerData = [volunteer for volunteer in (eventParticipants + eventNonAttendedData) if volunteer not in eventWaitlistData]
eventNonAttendedData = []
return eventNonAttendedData, eventWaitlistData, eventVolunteerData, eventParticipants
\ No newline at end of file
From d977e8a887b32c34f787ec2befe7e854eabd49dd Mon Sep 17 00:00:00 2001
From: Ariana Meatchem <146577403+Meatchema@users.noreply.github.com>
Date: Mon, 9 Feb 2026 15:59:56 -0500
Subject: [PATCH 06/13] Removed resourceReader import statement
---
app/logic/volunteerSpreadsheet.py | 1 -
1 file changed, 1 deletion(-)
diff --git a/app/logic/volunteerSpreadsheet.py b/app/logic/volunteerSpreadsheet.py
index 6a03ca6ac..c86600b14 100644
--- a/app/logic/volunteerSpreadsheet.py
+++ b/app/logic/volunteerSpreadsheet.py
@@ -1,4 +1,3 @@
-from importlib.abc import ResourceReader
from os import major
import xlsxwriter
from peewee import fn, Case, JOIN, SQL, Select
From 8fb90531712df0c7e3b32b7092da52831817be39 Mon Sep 17 00:00:00 2001
From: Ariana Meatchem <146577403+Meatchema@users.noreply.github.com>
Date: Tue, 17 Feb 2026 15:30:10 -0500
Subject: [PATCH 07/13] I have changed the verbage from waitlist to waitlisted
in volunteerDetails.html
---
app/templates/events/volunteerDetails.html | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/templates/events/volunteerDetails.html b/app/templates/events/volunteerDetails.html
index 3e2c43c90..0f9aa1f74 100644
--- a/app/templates/events/volunteerDetails.html
+++ b/app/templates/events/volunteerDetails.html
@@ -69,7 +69,7 @@
{{ participant.user.firstName }} {{ participant
{{createTable(p, 'attended') if type == 'table' else createCard(p, 'attended') }}
{% endif %}
{% if p in waitlist %}
- {{createTable(p, 'waitlist') if type == 'table' else createCard(p, 'waitlist') }}
+ {{createTable(p, 'waitlisted') if type == 'table' else createCard(p, 'waitlisted') }}
{% endif %}
{% endfor %}
{% endmacro %}
From 2440ebb3adf1512597afe750fbbd5b6777fa3336 Mon Sep 17 00:00:00 2001
From: Ariana Meatchem <146577403+Meatchema@users.noreply.github.com>
Date: Tue, 17 Feb 2026 15:40:00 -0500
Subject: [PATCH 08/13] Changed createCheckbox to a dictionary to increase
readability. Also, finished updating waitlisted references for user in the
checkbox
---
app/templates/events/volunteerDetails.html | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/app/templates/events/volunteerDetails.html b/app/templates/events/volunteerDetails.html
index 0f9aa1f74..e198f4809 100644
--- a/app/templates/events/volunteerDetails.html
+++ b/app/templates/events/volunteerDetails.html
@@ -75,7 +75,13 @@
{{ participant.user.firstName }} {{ participant
{% endmacro %}
{% macro createCheckbox(checkboxName) %}
- {% set labelText = "RSVP" if checkboxName == 'rsvp' else 'Waitlist' if checkboxName == 'waitlist' else 'Attended' if checkboxName == 'attended' else 'Invited' %}
+ {%- set labelMap = {
+ 'rsvp': 'RSVP',
+ 'waitlist': 'Waitlisted',
+ 'attended': 'Attended',
+ 'invited': 'Invited'
+ } -%}
+ {% set labelText = labelMap.get(checkboxName, 'Invited') %}
{% endmacro %}
From fe07fd018e8ac3487980324f43ef9faa228c248f Mon Sep 17 00:00:00 2001
From: Ariana Meatchem <146577403+Meatchema@users.noreply.github.com>
Date: Mon, 23 Feb 2026 15:54:31 -0500
Subject: [PATCH 09/13] Updated RSVP before and After Status
---
app/logic/participants.py | 27 +++++++++++++++++++++------
1 file changed, 21 insertions(+), 6 deletions(-)
diff --git a/app/logic/participants.py b/app/logic/participants.py
index b0933a959..dd81a4a52 100644
--- a/app/logic/participants.py
+++ b/app/logic/participants.py
@@ -53,13 +53,28 @@ def addBnumberAsParticipant(bnumber, eventId):
userStatus = "already signed in"
else:
+ # If the event has already started, record as an EventParticipant (attendance).
+ # If the event is in the future, create an EventRsvp so RSVP lists remain consistent
+ # with templates that expect RSVP objects (which have `rsvpTime`).
userStatus = "success"
- # We are not using addPersonToEvent to do this because
- # that function checks if the event is in the past, but
- # someone could start signing people up via the kiosk
- # before an event has started
- totalHours = getEventLengthInHours(event.timeStart, event.timeEnd, event.startDate)
- EventParticipant.create (user=kioskUser, event=event, hoursEarned=totalHours)
+ if event.isPastStart:
+ totalHours = getEventLengthInHours(event.timeStart, event.timeEnd, event.startDate)
+ EventParticipant.create(user=kioskUser, event=event, hoursEarned=totalHours)
+ else:
+ # create RSVP if one doesn't already exist
+ if not checkUserRsvp(kioskUser, event):
+ currentRsvp = getEventRsvpCountsForTerm(event.term)
+ waitlist = currentRsvp[event.id] >= event.rsvpLimit if event.rsvpLimit is not None else False
+ EventRsvp.create(user=kioskUser, event=event, rsvpWaitlist=waitlist)
+ targetList = "the waitlist" if waitlist else "the RSVP list"
+ try:
+ if g.current_user.username == kioskUser.username:
+ createRsvpLog(event.id, f"{kioskUser.fullName} joined {targetList}.")
+ else:
+ createRsvpLog(event.id, f"Added {kioskUser.fullName} to {targetList}.")
+ except Exception:
+ # logging should not break kiosk flow
+ pass
return kioskUser, userStatus
From 1a5fecca6785654350aae4f26ac0588a91dc2cd6 Mon Sep 17 00:00:00 2001
From: Ariana Meatchem <146577403+Meatchema@users.noreply.github.com>
Date: Mon, 23 Feb 2026 16:40:00 -0500
Subject: [PATCH 10/13] re-implemented the attended status for the non-rsvp
events
---
app/logic/participants.py | 82 +++++++++++++++++++++++----------------
1 file changed, 48 insertions(+), 34 deletions(-)
diff --git a/app/logic/participants.py b/app/logic/participants.py
index dd81a4a52..f896259aa 100644
--- a/app/logic/participants.py
+++ b/app/logic/participants.py
@@ -53,28 +53,30 @@ def addBnumberAsParticipant(bnumber, eventId):
userStatus = "already signed in"
else:
- # If the event has already started, record as an EventParticipant (attendance).
- # If the event is in the future, create an EventRsvp so RSVP lists remain consistent
- # with templates that expect RSVP objects (which have `rsvpTime`).
+ # Non-RSVP and RSVP event handling
userStatus = "success"
- if event.isPastStart:
+ if event.isRsvpRequired:
+ # RSVP event: standard logic (RSVP before event, attend after)
+ if event.isPastStart:
+ totalHours = getEventLengthInHours(event.timeStart, event.timeEnd, event.startDate)
+ EventParticipant.create(user=kioskUser, event=event, hoursEarned=totalHours)
+ else:
+ if not checkUserRsvp(kioskUser, event):
+ currentRsvp = getEventRsvpCountsForTerm(event.term)
+ waitlist = currentRsvp[event.id] >= event.rsvpLimit if event.rsvpLimit is not None else False
+ EventRsvp.create(user=kioskUser, event=event, rsvpWaitlist=waitlist)
+ targetList = "the waitlist" if waitlist else "the RSVP list"
+ try:
+ if g.current_user.username == kioskUser.username:
+ createRsvpLog(event.id, f"{kioskUser.fullName} joined {targetList}.")
+ else:
+ createRsvpLog(event.id, f"Added {kioskUser.fullName} to {targetList}.")
+ except Exception:
+ pass
+ else:
+ # Non-RSVP event: scanner entry ALWAYS marks as attended regardless of timing
totalHours = getEventLengthInHours(event.timeStart, event.timeEnd, event.startDate)
EventParticipant.create(user=kioskUser, event=event, hoursEarned=totalHours)
- else:
- # create RSVP if one doesn't already exist
- if not checkUserRsvp(kioskUser, event):
- currentRsvp = getEventRsvpCountsForTerm(event.term)
- waitlist = currentRsvp[event.id] >= event.rsvpLimit if event.rsvpLimit is not None else False
- EventRsvp.create(user=kioskUser, event=event, rsvpWaitlist=waitlist)
- targetList = "the waitlist" if waitlist else "the RSVP list"
- try:
- if g.current_user.username == kioskUser.username:
- createRsvpLog(event.id, f"{kioskUser.fullName} joined {targetList}.")
- else:
- createRsvpLog(event.id, f"Added {kioskUser.fullName} to {targetList}.")
- except Exception:
- # logging should not break kiosk flow
- pass
return kioskUser, userStatus
@@ -95,22 +97,34 @@ def addPersonToEvent(user, event):
try:
volunteerExists = checkUserVolunteer(user, event)
rsvpExists = checkUserRsvp(user, event)
- if event.isPastStart:
- if not volunteerExists:
- # We duplicate these two lines in addBnumberAsParticipant
- eventHours = getEventLengthInHours(event.timeStart, event.timeEnd, event.startDate)
- EventParticipant.create(user = user, event = event, hoursEarned = eventHours)
+
+ if event.isRsvpRequired:
+ # RSVP event logic
+ if event.isPastStart:
+ if not volunteerExists:
+ eventHours = getEventLengthInHours(event.timeStart, event.timeEnd, event.startDate)
+ EventParticipant.create(user = user, event = event, hoursEarned = eventHours)
+ else:
+ if not rsvpExists:
+ currentRsvp = getEventRsvpCountsForTerm(event.term)
+ waitlist = currentRsvp[event.id] >= event.rsvpLimit if event.rsvpLimit is not None else 0
+ EventRsvp.create(user = user, event = event, rsvpWaitlist = waitlist)
+ targetList = "the waitlist" if waitlist else "the RSVP list"
+ if g.current_user.username == user.username:
+ createRsvpLog(event.id, f"{user.fullName} joined {targetList}.")
+ else:
+ createRsvpLog(event.id, f"Added {user.fullName} to {targetList}.")
else:
- if not rsvpExists:
- currentRsvp = getEventRsvpCountsForTerm(event.term)
- waitlist = currentRsvp[event.id] >= event.rsvpLimit if event.rsvpLimit is not None else 0
- EventRsvp.create(user = user, event = event, rsvpWaitlist = waitlist)
-
- targetList = "the waitlist" if waitlist else "the RSVP list"
- if g.current_user.username == user.username:
- createRsvpLog(event.id, f"{user.fullName} joined {targetList}.")
- else:
- createRsvpLog(event.id, f"Added {user.fullName} to {targetList}.")
+ # Non-RSVP event logic
+ if event.isPastStart:
+ # After event: create EventParticipant (attended)
+ if not volunteerExists:
+ eventHours = getEventLengthInHours(event.timeStart, event.timeEnd, event.startDate)
+ EventParticipant.create(user = user, event = event, hoursEarned = eventHours)
+ else:
+ # Before event: create EventRsvp (invited status)
+ if not rsvpExists:
+ EventRsvp.create(user = user, event = event, rsvpWaitlist = False)
if volunteerExists or rsvpExists:
return "already in"
From 1137e06cc302e835c41404323297ead668f4dd21 Mon Sep 17 00:00:00 2001
From: Ariana Meatchem <146577403+Meatchema@users.noreply.github.com>
Date: Tue, 24 Mar 2026 15:32:50 -0400
Subject: [PATCH 11/13] Added Invited status into checkedbox javascript to
allow for filtered removal
---
app/static/js/volunteerDetails.js | 1 +
1 file changed, 1 insertion(+)
diff --git a/app/static/js/volunteerDetails.js b/app/static/js/volunteerDetails.js
index 1b6192a23..1b5aafdf7 100644
--- a/app/static/js/volunteerDetails.js
+++ b/app/static/js/volunteerDetails.js
@@ -28,6 +28,7 @@ $(document).ready(function () {
const status = data[3].toLowerCase();
if (status === 'attended' && !$('#attendedSelect').is(':checked')) return false;
if (status === 'rsvp' && !$('#rsvpSelect').is(':checked')) return false;
+ if (status === 'invited' && !$('#invitedSelect').is(':checked')) return false;
if (status === 'waitlist' && !$('#waitlistSelect').is(':checked')) return false;
return true;
});
From ea0d70181b6f84886da51b62516ed4c46b2de443 Mon Sep 17 00:00:00 2001
From: Ariana Meatchem <146577403+Meatchema@users.noreply.github.com>
Date: Mon, 30 Mar 2026 14:11:09 -0400
Subject: [PATCH 12/13] Add @propriety for RSVP and changed conditional to
allow invited status under reservation status
---
app/models/eventRsvp.py | 4 ++++
app/templates/events/manageVolunteers.html | 4 ++--
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/app/models/eventRsvp.py b/app/models/eventRsvp.py
index 8afdd47c2..d492a0e4c 100644
--- a/app/models/eventRsvp.py
+++ b/app/models/eventRsvp.py
@@ -9,6 +9,10 @@ class EventRsvp(baseModel):
rsvpTime = DateTimeField(default=datetime.now)
rsvpWaitlist = BooleanField(default=False)
+ @property
+ def rsvp(self):
+ # EventRsvp always represents an RSVP record, including invited participants.
+ return True
class Meta:
indexes = ( (('user', 'event'), True), )
diff --git a/app/templates/events/manageVolunteers.html b/app/templates/events/manageVolunteers.html
index aa66235fe..86d95f9c1 100644
--- a/app/templates/events/manageVolunteers.html
+++ b/app/templates/events/manageVolunteers.html
@@ -239,7 +239,7 @@
@@ -275,7 +275,7 @@
{{participant.user.email}}
{{participant.user.phoneNumber}}
-
{{ 'Waitlist' if participant.rsvpWaitlist else 'RSVP' }}
+
{{ 'Waitlist' if participant.rsvpWaitlist else ('RSVP' if event.isRsvpRequired else 'Invited') }}
Date: Tue, 31 Mar 2026 15:28:02 -0400
Subject: [PATCH 13/13] Added Conditional to allow accordion title of RSVP and
Waitlist to change to Invited and Waitlist for non-rsvp events
---
app/templates/events/manageVolunteers.html | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/app/templates/events/manageVolunteers.html b/app/templates/events/manageVolunteers.html
index 86d95f9c1..6b6c98aae 100644
--- a/app/templates/events/manageVolunteers.html
+++ b/app/templates/events/manageVolunteers.html
@@ -239,7 +239,11 @@