Ejemplo n.º 1
0
def edit_view(event_id, speaker_id):
    speaker = get_speaker_or_throw(speaker_id)
    event = DataGetter.get_event(event_id)
    form_elems = DataGetter.get_custom_form_elements(event_id)
    if not form_elems:
        flash("Speaker form has been incorrectly configured for this event. Editing has been disabled", "danger")
        return redirect(url_for('.index_view', event_id=event_id))
    speaker_form = json.loads(form_elems.speaker_form)
    if request.method == 'GET':
        return render_template('gentelella/users/events/speakers/edit.html',
                               speaker=speaker, event_id=event_id,
                               event=event, speaker_form=speaker_form)
    if request.method == 'POST':
        save_speaker(request, event_id, speaker)
        flash("Speaker has been saved", "success")

    return redirect(url_for('.index_view', event_id=event_id))
Ejemplo n.º 2
0
def edit_view(event_id, speaker_id):
    speaker = get_speaker_or_throw(speaker_id)
    event = DataGetter.get_event(event_id)
    form_elems = DataGetter.get_custom_form_elements(event_id)
    if not form_elems:
        flash("Speaker form has been incorrectly configured for this event. Editing has been disabled", "danger")
        return redirect(url_for('.index_view', event_id=event_id))
    speaker_form = json.loads(form_elems.speaker_form)
    if request.method == 'GET':
        return render_template('gentelella/users/events/speakers/edit.html',
                               speaker=speaker, event_id=event_id,
                               event=event, speaker_form=speaker_form)
    if request.method == 'POST':
        save_speaker(request, event_id, speaker)
        flash("Speaker has been saved", "success")

    return redirect(url_for('.index_view', event_id=event_id))
Ejemplo n.º 3
0
 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)
     save_to_db(session, "Session updated")
     update_version(event_id, False, "speakers_ver")
     update_version(event_id, False, "sessions_ver")
Ejemplo n.º 4
0
 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)
     save_to_db(session, "Session updated")
     update_version(event_id, False, "speakers_ver")
     update_version(event_id, False, "sessions_ver")
Ejemplo n.º 5
0
 def add_speaker_to_event(request, event_id, user=login.current_user, no_name=False):
     """
     Speaker will be saved to database with proper Event id
     :param user:
     :param request: view data form
     :param event_id: Speaker belongs to Event by event id
     """
     speaker = Speaker.query.filter_by(email=request.form.get('email', '')).filter_by(event_id=event_id).first()
     speaker = save_speaker(
         request,
         event_id=event_id,
         speaker=speaker,
         user=user,
         no_name=no_name
     )
     update_version(event_id, False, "speakers_ver")
Ejemplo n.º 6
0
    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:
                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:
                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:
                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_temp_url != "" and slide_temp_url != session.slides and slide_file:
                slide_temp_url = upload(slide_file,
                                        UPLOAD_PATHS['sessions']['slides'].format(
                                            event_id=int(event_id), id=int(session.id)
                                        ))
            if audio_temp_url != "" and audio_temp_url != session.audio and audio_file:
                audio_temp_url = upload(
                    audio_file,
                    UPLOAD_PATHS['sessions']['audio'].format(
                        event_id=int(event_id), id=int(session.id)
                    ))
            if video_temp_url != "" and video_temp_url != session.video and video_file:
                video_temp_url = upload(
                    video_file,
                    UPLOAD_PATHS['sessions']['video'].format(
                        event_id=int(event_id), id=int(session.id)
                    ))

            session.slides = slide_temp_url
            session.audio = audio_temp_url
            session.video = video_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 = []

            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")
Ejemplo n.º 7
0
    def add_session_to_event(request, event_id, state=None, use_current_user=True):
        """
        Session will be saved to database with proper Event id
        :param use_current_user:
        :param state:
        :param request: The request
        :param event_id: Session belongs to Event by event id
        """
        form = request.form
        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:
            slide_file = UploadedFile(get_path_of_temp_url(slide_temp_url), slide_temp_url.rsplit('/', 1)[1])

        if video_temp_url:
            video_file = UploadedFile(get_path_of_temp_url(video_temp_url), video_temp_url.rsplit('/', 1)[1])

        if audio_temp_url:
            audio_file = UploadedFile(get_path_of_temp_url(audio_temp_url), audio_temp_url.rsplit('/', 1)[1])

        if not state:
            state = form.get('state', 'draft')

        event = DataGetter.get_event(event_id)

        new_session = Session(title=form.get('title', ''),
                              subtitle=form.get('subtitle', ''),
                              long_abstract=form.get('long_abstract', ''),
                              start_time=event.start_time,
                              end_time=event.start_time + timedelta(hours=1),
                              event_id=event_id,
                              short_abstract=form.get('short_abstract', ''),
                              level=form.get('level', ''),
                              comments=form.get('comments', ''),
                              language=form.get('language', ''),
                              state=state)

        if form.get('track', None) != "":
            new_session.track_id = form.get('track', None)

        if form.get('session_type', None) != "":
            new_session.session_type_id = form.get('session_type', None)

        speaker = Speaker.query.filter_by(email=form.get('email', '')).filter_by(event_id=event_id).first()
        speaker = save_speaker(
            request,
            event_id=event_id,
            speaker=speaker,
            user=login.current_user if use_current_user else None
        )

        new_session.speakers.append(speaker)

        save_to_db(new_session, "Session saved")

        if state == 'pending':
            trigger_new_session_notifications(new_session.id, event=event)

        if slide_temp_url != "" and slide_file:
            slide_url = upload(
                slide_file,
                UPLOAD_PATHS['sessions']['slides'].format(
                    event_id=int(event_id), id=int(new_session.id)
                ))
            new_session.slides = slide_url
        if audio_temp_url != "" and audio_file:
            audio_url = upload(
                audio_file,
                UPLOAD_PATHS['sessions']['audio'].format(
                    event_id=int(event_id), id=int(new_session.id)
                ))
            new_session.audio = audio_url
        if video_temp_url != "" and video_file:
            video_url = upload(
                video_file,
                UPLOAD_PATHS['sessions']['video'].format(
                    event_id=int(event_id), id=int(new_session.id)
                ))
            new_session.video = video_url

        record_activity('create_session', session=new_session, event_id=event_id)
        update_version(event_id, False, 'sessions_ver')

        invite_emails = form.getlist("speakers[email]")
        for index, email in enumerate(invite_emails):
            if not string_empty(email):
                new_invite = Invite(event_id=event_id, session_id=new_session.id)
                hash = random.getrandbits(128)
                new_invite.hash = "%032x" % hash
                save_to_db(new_invite, "Invite saved")

                link = url_for('event_sessions.invited_view', session_id=new_session.id, event_id=event_id,
                               _external=True)
                Helper.send_email_invitation(email, new_session.title, link)
                # If a user is registered by the email, send a notification as well
                user = DataGetter.get_user_by_email(email, no_flash=True)
                if user:
                    cfs_link = url_for('event_detail.display_event_cfs', identifier=event.identifier)
                    Helper.send_notif_invite_papers(user, event.name, cfs_link, link)
Ejemplo n.º 8
0
 def edit_speaker(request, speaker):
     save_speaker(request, event_id=speaker.event_id, speaker=speaker)
Ejemplo n.º 9
0
    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:
                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:
                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:
                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_temp_url != "" and slide_temp_url != session.slides and slide_file:
                slide_temp_url = upload(slide_file,
                                        UPLOAD_PATHS['sessions']['slides'].format(
                                            event_id=int(event_id), id=int(session.id)
                                        ))
            if audio_temp_url != "" and audio_temp_url != session.audio and audio_file:
                audio_temp_url = upload(
                    audio_file,
                    UPLOAD_PATHS['sessions']['audio'].format(
                        event_id=int(event_id), id=int(session.id)
                    ))
            if video_temp_url != "" and video_temp_url != session.video and video_file:
                video_temp_url = upload(
                    video_file,
                    UPLOAD_PATHS['sessions']['video'].format(
                        event_id=int(event_id), id=int(session.id)
                    ))

            session.slides = slide_temp_url
            session.audio = audio_temp_url
            session.video = video_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 = []

            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")
Ejemplo n.º 10
0
    def add_session_to_event(request, event_id, state=None, use_current_user=True, no_name=False):
        """
        Session will be saved to database with proper Event id
        :param use_current_user:
        :param state:
        :param request: The request
        :param event_id: Session belongs to Event by event id
        """
        form = request.form
        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:
            slide_file = UploadedFile(get_path_of_temp_url(slide_temp_url), slide_temp_url.rsplit('/', 1)[1])

        if video_temp_url:
            video_file = UploadedFile(get_path_of_temp_url(video_temp_url), video_temp_url.rsplit('/', 1)[1])

        if audio_temp_url:
            audio_file = UploadedFile(get_path_of_temp_url(audio_temp_url), audio_temp_url.rsplit('/', 1)[1])

        if not state:
            state = form.get('state', 'draft')

        event = DataGetter.get_event(event_id)

        new_session = Session(title=form.get('title', ''),
                              subtitle=form.get('subtitle', ''),
                              long_abstract=form.get('long_abstract', ''),
                              start_time=event.start_time,
                              end_time=event.start_time + timedelta(hours=1),
                              event_id=event_id,
                              short_abstract=form.get('short_abstract', ''),
                              level=form.get('level', ''),
                              comments=form.get('comments', ''),
                              language=form.get('language', ''),
                              state=state)

        if form.get('track', None) != "":
            new_session.track_id = form.get('track', None)

        if form.get('session_type', None) != "":
            new_session.session_type_id = form.get('session_type', None)

        if form.get('email', '') != '':
            speaker = Speaker.query.filter_by(email=form.get('email', '')).filter_by(event_id=event_id).first()
            speaker = save_speaker(
                request,
                event_id=event_id,
                speaker=speaker,
                user=login.current_user if use_current_user else None,
                no_name=no_name
            )

            new_session.speakers.append(speaker)

        save_to_db(new_session, "Session saved")

        if state == 'pending':
            trigger_new_session_notifications(new_session.id, event=event)

        if slide_temp_url != "" and slide_file:
            slide_url = upload(
                slide_file,
                UPLOAD_PATHS['sessions']['slides'].format(
                    event_id=int(event_id), id=int(new_session.id)
                ))
            new_session.slides = slide_url
        if audio_temp_url != "" and audio_file:
            audio_url = upload(
                audio_file,
                UPLOAD_PATHS['sessions']['audio'].format(
                    event_id=int(event_id), id=int(new_session.id)
                ))
            new_session.audio = audio_url
        if video_temp_url != "" and video_file:
            video_url = upload(
                video_file,
                UPLOAD_PATHS['sessions']['video'].format(
                    event_id=int(event_id), id=int(new_session.id)
                ))
            new_session.video = video_url
        record_activity('create_session', session=new_session, event_id=event_id)
        update_version(event_id, False, 'sessions_ver')

        invite_emails = form.getlist("speakers[email]")
        for index, email in enumerate(invite_emails):
            if not string_empty(email):
                new_invite = Invite(event_id=event_id, session_id=new_session.id)
                hash = random.getrandbits(128)
                new_invite.hash = "%032x" % hash
                save_to_db(new_invite, "Invite saved")

                link = url_for('event_sessions.invited_view', session_id=new_session.id, event_id=event_id,
                               _external=True)
                Helper.send_email_invitation(email, new_session.title, link)
                # If a user is registered by the email, send a notification as well
                user = DataGetter.get_user_by_email(email, no_flash=True)
                if user:
                    cfs_link = url_for('event_detail.display_event_cfs', identifier=event.identifier)
                    Helper.send_notif_invite_papers(user, event.name, cfs_link, link)