From 2b24dde9899a2ad6a5320cfce80d9e4cde3769db Mon Sep 17 00:00:00 2001 From: armanddidierjean <95971503+armanddidierjean@users.noreply.github.com> Date: Sat, 22 Aug 2026 12:12:45 +0200 Subject: [PATCH 1/2] Send notification when a ticket has been transfered --- app/core/tickets/endpoints_tickets.py | 35 +++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/app/core/tickets/endpoints_tickets.py b/app/core/tickets/endpoints_tickets.py index 1fb9dad526..486f921fea 100644 --- a/app/core/tickets/endpoints_tickets.py +++ b/app/core/tickets/endpoints_tickets.py @@ -20,6 +20,7 @@ from app.core.memberships import utils_memberships from app.core.mypayment import cruds_mypayment, schemas_mypayment, utils_mypayment from app.core.mypayment.mypayment_tool import MyPaymentTool +from app.core.notification.schemas_notification import Message from app.core.permissions.type_permissions import ModulePermissions from app.core.tickets import cruds_tickets, schemas_tickets, utils_tickets from app.core.tickets.factory_tickets import TicketsFactory @@ -456,6 +457,7 @@ async def ticket_accept_change_over( token: str, db: AsyncSession = Depends(get_db), settings: Settings = Depends(get_settings), + notification_tool: NotificationTool = Depends(get_notification_tool), ): """ Accept a ticket transfer invitation. The user will become the new owner of the ticket. @@ -473,6 +475,39 @@ async def ticket_accept_change_over( ), ) + ticket = await cruds_tickets.get_ticket_by_id( + ticket_id=invitation.ticket_id, + db=db, + ) + if ticket is None: + raise ObjectExpectedInDbNotFoundError("ticket", invitation.ticket_id) + event = await cruds_tickets.get_event_simple_by_id( + event_id=ticket.event_id, + db=db, + ) + if event is None: + raise ObjectExpectedInDbNotFoundError("event", ticket.event_id) + + message = Message( + title="🎟️ Transfert de ticket accepté", + content=f"La demande de transfert de ticket pour l'événement {event.name} a été acceptée", + action_module="loan", + ) + await notification_tool.send_notification_to_user( + user_id=ticket.user_id, + message=message, + ) + + message = Message( + title="🎟️ Ticket transféré", + content=f"Tu viens d'accepter un ticket pour l'événement {event.name}", + action_module="loan", + ) + await notification_tool.send_notification_to_user( + user_id=invitation.new_user_id, + message=message, + ) + await cruds_tickets.delete_ticket_change_over_invitation( ticket_id=invitation.ticket_id, db=db, From fb9a094415f68f5e0d5ac1a1f56144058b748ec6 Mon Sep 17 00:00:00 2001 From: armanddidierjean <95971503+armanddidierjean@users.noreply.github.com> Date: Sat, 22 Aug 2026 13:55:24 +0200 Subject: [PATCH 2/2] Transfer ticket before sending the push notification --- app/core/tickets/endpoints_tickets.py | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/app/core/tickets/endpoints_tickets.py b/app/core/tickets/endpoints_tickets.py index 486f921fea..568a16f7c3 100644 --- a/app/core/tickets/endpoints_tickets.py +++ b/app/core/tickets/endpoints_tickets.py @@ -488,13 +488,26 @@ async def ticket_accept_change_over( if event is None: raise ObjectExpectedInDbNotFoundError("event", ticket.event_id) + previous_user_id = ticket.user_id + + await cruds_tickets.delete_ticket_change_over_invitation( + ticket_id=invitation.ticket_id, + db=db, + ) + + await cruds_tickets.change_ticket_owner( + ticket_id=invitation.ticket_id, + new_user_id=invitation.new_user_id, + db=db, + ) + message = Message( title="🎟️ Transfert de ticket accepté", content=f"La demande de transfert de ticket pour l'événement {event.name} a été acceptée", action_module="loan", ) await notification_tool.send_notification_to_user( - user_id=ticket.user_id, + user_id=previous_user_id, message=message, ) @@ -508,17 +521,6 @@ async def ticket_accept_change_over( message=message, ) - await cruds_tickets.delete_ticket_change_over_invitation( - ticket_id=invitation.ticket_id, - db=db, - ) - - await cruds_tickets.change_ticket_owner( - ticket_id=invitation.ticket_id, - new_user_id=invitation.new_user_id, - db=db, - ) - return RedirectResponse( url=settings.CLIENT_URL + calypsso.get_message_relative_url(