def trash_session(session_id): session = DataGetter.get_session(session_id) session.deleted_at = datetime.now() sessions_modified.send(current_app._get_current_object(), event_id=session.event_id) save_to_db(session, "Session added to Trash") update_version(session.event_id, False, 'sessions_ver') return session
def restore_session(session_id): session = DataGetter.get_session(session_id) session.deleted_at = None sessions_modified.send(current_app._get_current_object(), event_id=session.event_id) save_to_db(session, "Session restored from Trash") update_version(session.event_id, False, 'sessions_ver')
def withdraw_session_view(session_id): session = DataGetter.get_sessions_of_user_by_id(session_id) session.deleted_at = datetime.now() sessions_modified.send(current_app._get_current_object(), event_id=session.event_id) save_to_db(session) flash("The session has been withdrawn", "success") return redirect(url_for('.display_my_sessions_view', session_id=session_id))
def session_accept_reject(session, event_id, state, send_email=True, message=None, subject=None): session.state = state session.submission_date = datetime.now() session.submission_modifier = login.current_user.email session.state_email_sent = False sessions_modified.send(current_app._get_current_object(), event_id=session.event_id) save_to_db(session, 'Session State Updated') if send_email: trigger_session_state_change_notifications(session, event_id, message=message, subject=subject) flash("The session has been %s" % state)
def add_speaker_to_session(request, event_id, session_id, user=login.current_user): """ Session will be saved to database with proper Event id :param session_id: :param user: :param request: view data form :param event_id: Session belongs to Event by event id """ session = DataGetter.get_session(session_id) speaker = save_speaker(request, event_id, user=user) session.speakers.append(speaker) sessions_modified.send(current_app._get_current_object(), event_id=session.event_id) save_to_db(session, "Session updated") update_version(event_id, False, "speakers_ver") update_version(event_id, False, "sessions_ver")
def edit_session(request, session, speaker=None): with db.session.no_autoflush: form = request.form event_id = session.event_id slide_temp_url = form.get('slides_url') video_temp_url = form.get('video_url') audio_temp_url = form.get('audio_url') slide_file = '' video_file = '' audio_file = '' if slide_temp_url and slide_temp_url != session.slides and not is_external_file(slide_temp_url): slide_file = UploadedFile(get_path_of_temp_url(slide_temp_url), slide_temp_url.rsplit('/', 1)[1]) if video_temp_url and video_temp_url != session.video and not is_external_file(video_temp_url): video_file = UploadedFile(get_path_of_temp_url(video_temp_url), video_temp_url.rsplit('/', 1)[1]) if audio_temp_url and audio_temp_url != session.audio and not is_external_file(audio_temp_url): audio_file = UploadedFile(get_path_of_temp_url(audio_temp_url), audio_temp_url.rsplit('/', 1)[1]) form_state = form.get('state', 'draft') if slide_file: slide_temp_url = upload(slide_file, UPLOAD_PATHS['sessions']['slides'].format( event_id=int(event_id), id=int(session.id) )) if video_file: video_temp_url = upload( video_file, UPLOAD_PATHS['sessions']['video'].format( event_id=int(event_id), id=int(session.id) )) if audio_file: audio_temp_url = upload( audio_file, UPLOAD_PATHS['sessions']['audio'].format( event_id=int(event_id), id=int(session.id) )) session.audio = audio_temp_url session.video = video_temp_url session.slides = slide_temp_url if form_state == 'pending' and session.state != 'pending' and \ session.state != 'accepted' and session.state != 'rejected' and session.state != 'confirmed': session.state = 'pending' trigger_new_session_notifications(session.id, event_id=event_id) session.title = form.get('title', '') session.subtitle = form.get('subtitle', '') session.long_abstract = form.get('long_abstract', '') session.short_abstract = form.get('short_abstract', '') session.level = form.get('level', '') session.track_id = form.get('track', None) if form.get('track', None) != "" else None session.session_type_id = form.get('session_type', None) if form.get('session_type', None) != "" else None existing_speaker_ids = form.getlist("speakers[]") current_speaker_ids = [] existing_speaker_ids_by_email = [] sessions_modified.send(current_app._get_current_object(), event_id=session.event_id) save_to_db(session, 'Session Updated') if speaker: save_speaker(request, event_id=event_id, speaker=speaker) for existing_speaker in DataGetter.get_speaker_by_email(form.get("email")).all(): existing_speaker_ids_by_email.append(str(existing_speaker.id)) for current_speaker in session.speakers: current_speaker_ids.append(str(current_speaker.id)) for current_speaker_id in current_speaker_ids: if current_speaker_id \ not in existing_speaker_ids and current_speaker_id not in existing_speaker_ids_by_email: current_speaker = DataGetter.get_speaker(current_speaker_id) session.speakers.remove(current_speaker) db.session.commit() for existing_speaker_id in existing_speaker_ids: existing_speaker = DataGetter.get_speaker(existing_speaker_id) if existing_speaker not in session.speakers: session.speakers.append(existing_speaker) db.session.commit() record_activity('update_session', session=session, event_id=event_id) update_version(event_id, False, "sessions_ver")
def edit_session(request, session, speaker=None): with db.session.no_autoflush: form = request.form event_id = session.event_id slide_temp_url = form.get('slides_url') video_temp_url = form.get('video_url') audio_temp_url = form.get('audio_url') slide_file = '' video_file = '' audio_file = '' if slide_temp_url and slide_temp_url != session.slides and not is_external_file( slide_temp_url): slide_file = UploadedFile(get_path_of_temp_url(slide_temp_url), slide_temp_url.rsplit('/', 1)[1]) if video_temp_url and video_temp_url != session.video and not is_external_file( video_temp_url): video_file = UploadedFile(get_path_of_temp_url(video_temp_url), video_temp_url.rsplit('/', 1)[1]) if audio_temp_url and audio_temp_url != session.audio and not is_external_file( audio_temp_url): audio_file = UploadedFile(get_path_of_temp_url(audio_temp_url), audio_temp_url.rsplit('/', 1)[1]) form_state = form.get('state', 'draft') if slide_file: slide_temp_url = upload( slide_file, UPLOAD_PATHS['sessions']['slides'].format( event_id=int(event_id), id=int(session.id))) if video_file: video_temp_url = upload( video_file, UPLOAD_PATHS['sessions']['video'].format( event_id=int(event_id), id=int(session.id))) if audio_file: audio_temp_url = upload( audio_file, UPLOAD_PATHS['sessions']['audio'].format( event_id=int(event_id), id=int(session.id))) session.audio = audio_temp_url session.video = video_temp_url session.slides = slide_temp_url if form_state == 'pending' and session.state != 'pending' and \ session.state != 'accepted' and session.state != 'rejected' and session.state != 'confirmed': session.state = 'pending' trigger_new_session_notifications(session.id, event_id=event_id) session.title = form.get('title', '') session.subtitle = form.get('subtitle', '') session.long_abstract = form.get('long_abstract', '') session.short_abstract = form.get('short_abstract', '') session.level = form.get('level', '') session.track_id = form.get( 'track', None) if form.get('track', None) != "" else None session.session_type_id = form.get( 'session_type', None) if form.get('session_type', None) != "" else None existing_speaker_ids = form.getlist("speakers[]") current_speaker_ids = [] existing_speaker_ids_by_email = [] sessions_modified.send(current_app._get_current_object(), event_id=session.event_id) save_to_db(session, 'Session Updated') if speaker: save_speaker(request, event_id=event_id, speaker=speaker) for existing_speaker in DataGetter.get_speaker_by_email( form.get("email")).all(): existing_speaker_ids_by_email.append(str(existing_speaker.id)) for current_speaker in session.speakers: current_speaker_ids.append(str(current_speaker.id)) for current_speaker_id in current_speaker_ids: if current_speaker_id \ not in existing_speaker_ids and current_speaker_id not in existing_speaker_ids_by_email: current_speaker = DataGetter.get_speaker( current_speaker_id) session.speakers.remove(current_speaker) db.session.commit() for existing_speaker_id in existing_speaker_ids: existing_speaker = DataGetter.get_speaker(existing_speaker_id) if existing_speaker not in session.speakers: session.speakers.append(existing_speaker) db.session.commit() record_activity('update_session', session=session, event_id=event_id) update_version(event_id, False, "sessions_ver")