|
9 | 9 | from app.api.helpers.db import get_count, safe_query, safe_query_kwargs, save_to_db |
10 | 10 | from app.api.helpers.errors import ForbiddenError |
11 | 11 | from app.api.helpers.files import make_frontend_url |
12 | | -from app.api.helpers.mail import send_email_new_session, send_email_session_accept_reject |
| 12 | +from app.api.helpers.mail import send_email_new_session, send_email_session_state_change |
13 | 13 | from app.api.helpers.notification import ( |
14 | 14 | send_notif_new_session_organizer, |
15 | | - send_notif_session_accept_reject, |
| 15 | + send_notif_session_state_change, |
16 | 16 | ) |
17 | 17 | from app.api.helpers.permission_manager import has_access |
18 | 18 | from app.api.helpers.query import event_query |
@@ -259,7 +259,14 @@ def before_update_object(self, session, data, view_kwargs): |
259 | 259 |
|
260 | 260 | if new_state and new_state != session.state: |
261 | 261 | # State change detected. Verify that state change is allowed |
262 | | - g.send_email = new_state == 'accepted' or new_state == 'rejected' |
| 262 | + g.send_email = new_state in [ |
| 263 | + 'accepted', |
| 264 | + 'rejected', |
| 265 | + 'confirmed', |
| 266 | + 'rejected', |
| 267 | + 'canceled', |
| 268 | + 'withdrawn', |
| 269 | + ] |
263 | 270 | key = 'speaker' |
264 | 271 | if is_organizer: |
265 | 272 | key = 'organizer' |
@@ -294,32 +301,8 @@ def after_update_object(self, session, data, view_kwargs): |
294 | 301 | """ Send email if session accepted or rejected """ |
295 | 302 |
|
296 | 303 | if data.get('send_email', None) and g.get('send_email'): |
297 | | - event = session.event |
298 | | - # Email for speaker |
299 | | - speakers = session.speakers |
300 | | - for speaker in speakers: |
301 | | - frontend_url = get_settings()['frontend_url'] |
302 | | - link = "{}/events/{}/sessions/{}".format( |
303 | | - frontend_url, event.identifier, session.id |
304 | | - ) |
305 | | - if not speaker.is_email_overridden: |
306 | | - send_email_session_accept_reject(speaker.email, session, link) |
307 | | - send_notif_session_accept_reject( |
308 | | - speaker, session.title, session.state, link, session.id |
309 | | - ) |
| 304 | + notify_for_session(session) |
310 | 305 |
|
311 | | - # Email for owner |
312 | | - if session.event.get_owner(): |
313 | | - owner = session.event.get_owner() |
314 | | - owner_email = owner.email |
315 | | - frontend_url = get_settings()['frontend_url'] |
316 | | - link = "{}/events/{}/sessions/{}".format( |
317 | | - frontend_url, event.identifier, session.id |
318 | | - ) |
319 | | - send_email_session_accept_reject(owner_email, session, link) |
320 | | - send_notif_session_accept_reject( |
321 | | - owner, session.title, session.state, link, session.id |
322 | | - ) |
323 | 306 | if 'state' in data: |
324 | 307 | entry_count = SessionsSpeakersLink.query.filter_by(session_id=session.id) |
325 | 308 | if entry_count.count() == 0: |
@@ -355,6 +338,28 @@ def after_update_object(self, session, data, view_kwargs): |
355 | 338 | } |
356 | 339 |
|
357 | 340 |
|
| 341 | +def notify_for_session(session): |
| 342 | + event = session.event |
| 343 | + frontend_url = get_settings()['frontend_url'] |
| 344 | + link = "{}/events/{}/sessions/{}".format(frontend_url, event.identifier, session.id) |
| 345 | + # Email for speaker |
| 346 | + speakers = session.speakers |
| 347 | + for speaker in speakers: |
| 348 | + if not speaker.is_email_overridden: |
| 349 | + send_email_session_state_change(speaker.email, session) |
| 350 | + send_notif_session_state_change( |
| 351 | + speaker.user, session.title, session.state, link, session.id |
| 352 | + ) |
| 353 | + |
| 354 | + # Email for owner |
| 355 | + if session.event.get_owner(): |
| 356 | + owner = session.event.get_owner() |
| 357 | + send_email_session_state_change(owner.email, session) |
| 358 | + send_notif_session_state_change( |
| 359 | + owner, session.title, session.state, link, session.id |
| 360 | + ) |
| 361 | + |
| 362 | + |
358 | 363 | class SessionRelationshipRequired(ResourceRelationship): |
359 | 364 | """ |
360 | 365 | Session Relationship |
|
0 commit comments