def display_event_cfs(identifier, via_hash=False):
    event = get_published_event_or_abort(identifier)
    placeholder_images = DataGetter.get_event_default_images()
    if event.sub_topic:
        custom_placeholder = DataGetter.get_custom_placeholder_by_name(event.sub_topic)
    elif event.topic:
        custom_placeholder = DataGetter.get_custom_placeholder_by_name(event.topic)
    else:
        custom_placeholder = DataGetter.get_custom_placeholder_by_name('Other')
    if not event.has_session_speakers:
        abort(404)

    call_for_speakers = DataGetter.get_call_for_papers(event.id).first()

    if not call_for_speakers or (not via_hash and call_for_speakers.privacy == 'private'):
        abort(404)

    form_elems = DataGetter.get_custom_form_elements(event.id)
    speaker_form = json.loads(form_elems.speaker_form)
    session_form = json.loads(form_elems.session_form)

    now = datetime.now()
    state = "now"
    if call_for_speakers.end_date < now:
        state = "past"
    elif call_for_speakers.start_date > now:
        state = "future"
    speakers = DataGetter.get_speakers(event.id).all()
    accepted_sessions_count = get_count(DataGetter.get_sessions(event.id))
    return render_template('gentelella/guest/event/cfs.html', event=event,
                           speaker_form=speaker_form,
                           accepted_sessions_count=accepted_sessions_count,
                           session_form=session_form, call_for_speakers=call_for_speakers,
                           placeholder_images=placeholder_images, state=state, speakers=speakers,
                           via_hash=via_hash, custom_placeholder=custom_placeholder)
def display_event_cfs(identifier, via_hash=False):
    event = get_published_event_or_abort(identifier)
    placeholder_images = DataGetter.get_event_default_images()
    if login.current_user.is_authenticated:
        email = login.current_user.email
        user_speaker = DataGetter.get_speaker_by_email(email)

        existing_sessions = []
        for speaker in user_speaker:
            current_session = []
            for session in speaker.sessions:
                if session.event_id == event.id and not session.in_trash:
                    if session.title:
                        current_session.append(session)
            if current_session:
                existing_sessions.append(current_session)
    if event.sub_topic:
        custom_placeholder = DataGetter.get_custom_placeholder_by_name(event.sub_topic)
    elif event.topic:
        custom_placeholder = DataGetter.get_custom_placeholder_by_name(event.topic)
    else:
        custom_placeholder = DataGetter.get_custom_placeholder_by_name('Other')
    if not event.has_session_speakers:
        abort(404)

    call_for_speakers = DataGetter.get_call_for_papers(event.id).first()

    if not call_for_speakers or (not via_hash and call_for_speakers.privacy == 'private'):
        abort(404)

    form_elems = DataGetter.get_custom_form_elements(event.id)
    speaker_form = json.loads(form_elems.speaker_form)
    session_form = json.loads(form_elems.session_form)

    now = datetime.now(pytz.timezone(event.timezone
                                                  if (event.timezone and event.timezone != '') else 'UTC'))
    start_date = pytz.timezone(event.timezone).localize(call_for_speakers.start_date)
    end_date = pytz.timezone(event.timezone).localize(call_for_speakers.end_date)
    state = "now"
    if end_date < now:
        state = "past"
    elif start_date > now:
        state = "future"
    speakers = DataGetter.get_speakers(event.id).all()
    accepted_sessions_count = get_count(DataGetter.get_sessions(event.id))
    if not login.current_user.is_authenticated:
        return render_template('gentelella/guest/event/cfs.html', event=event,
                           speaker_form=speaker_form,
                           accepted_sessions_count=accepted_sessions_count,
                           session_form=session_form, call_for_speakers=call_for_speakers,
                           placeholder_images=placeholder_images, state=state, speakers=speakers,
                           via_hash=via_hash, custom_placeholder=custom_placeholder)
    else:
        return render_template('gentelella/guest/event/cfs.html', event=event,
                           speaker_form=speaker_form,
                           accepted_sessions_count=accepted_sessions_count,
                           session_form=session_form, call_for_speakers=call_for_speakers,
                           placeholder_images=placeholder_images, state=state, speakers=speakers,
                           via_hash=via_hash, custom_placeholder=custom_placeholder,
                           existing_sessions=existing_sessions)
def process_event_cfs_speaker(identifier, via_hash=False):
    if request.method == 'GET':
        event = get_published_event_or_abort(identifier)
        placeholder_images = DataGetter.get_event_default_images()
        if event.sub_topic:
            custom_placeholder = DataGetter.get_custom_placeholder_by_name(event.sub_topic)
        elif event.topic:
            custom_placeholder = DataGetter.get_custom_placeholder_by_name(event.topic)
        else:
            custom_placeholder = DataGetter.get_custom_placeholder_by_name('Other')
        if not event.has_session_speakers:
            abort(404)

        call_for_speakers = DataGetter.get_call_for_papers(event.id).first()

        if not call_for_speakers or (not via_hash and call_for_speakers.privacy == 'private'):
            abort(404)

        form_elems = DataGetter.get_custom_form_elements(event.id)
        speaker_form = json.loads(form_elems.speaker_form)
        session_form = json.loads(form_elems.session_form)

        now = datetime.now(pytz.timezone(event.timezone
                                                  if (event.timezone and event.timezone != '') else 'UTC'))
        start_date = pytz.timezone(event.timezone).localize(call_for_speakers.start_date)
        end_date = pytz.timezone(event.timezone).localize(call_for_speakers.end_date)
        state = "now"
        if end_date < now:
            state = "past"
        elif start_date > now:
            state = "future"
        speakers = DataGetter.get_speakers(event.id).all()
        accepted_sessions_count = get_count(DataGetter.get_sessions(event.id))
        return render_template('gentelella/guest/event/cfs_new_speaker.html',
                               event=event,
                               speaker_form=speaker_form,
                               accepted_sessions_count=accepted_sessions_count,
                               session_form=session_form,
                               call_for_speakers=call_for_speakers,
                               placeholder_images=placeholder_images,
                               state=state,
                               speakers=speakers,
                               via_hash=via_hash,
                               custom_placeholder=custom_placeholder,
                               from_path="cfs")

    if request.method == 'POST':
        email = request.form['email']
        event = DataGetter.get_event_by_identifier(identifier)
        if not event.has_session_speakers:
            abort(404)
        DataManager.add_speaker_to_event(request, event.id)
        if login.current_user.is_authenticated:
            flash("You have been registered as Speaker", "success")
            return redirect(url_for('event_detail.display_event_cfs', identifier=identifier))
        else:
            flash(Markup(
                "You have been registered as Speaker. Please login/register with <strong><u>" + email + "</u></strong> to manage it."),
                "success")
            return redirect(url_for('admin.login_view', next=url_for('my_sessions.display_my_sessions_view')))
def process_event_cfs(identifier, via_hash=False):
    if request.method == 'GET':
        event = get_published_event_or_abort(identifier)
        placeholder_images = DataGetter.get_event_default_images()
        if event.sub_topic:
            custom_placeholder = DataGetter.get_custom_placeholder_by_name(event.sub_topic)
        elif event.topic:
            custom_placeholder = DataGetter.get_custom_placeholder_by_name(event.topic)
        else:
            custom_placeholder = DataGetter.get_custom_placeholder_by_name('Other')
        if not event.has_session_speakers:
            abort(404)

        call_for_speakers = DataGetter.get_call_for_papers(event.id).first()

        if not call_for_speakers or (not via_hash and call_for_speakers.privacy == 'private'):
            abort(404)

        form_elems = DataGetter.get_custom_form_elements(event.id)
        speaker_form = json.loads(form_elems.speaker_form)
        session_form = json.loads(form_elems.session_form)

        now = datetime.now(pytz.timezone(event.timezone
                                                  if (event.timezone and event.timezone != '') else 'UTC'))
        start_date = pytz.timezone(event.timezone).localize(call_for_speakers.start_date)
        end_date = pytz.timezone(event.timezone).localize(call_for_speakers.end_date)
        state = "now"
        if end_date < now:
            state = "past"
        elif start_date > now:
            state = "future"
        speakers = DataGetter.get_speakers(event.id).all()
        user_speaker = DataGetter.get_speaker_by_email_event(login.current_user.email, event.id)
        accepted_sessions_count = get_count(DataGetter.get_sessions(event.id))
        return render_template('gentelella/guest/event/cfs_new_session.html',
                               event=event,
                               speaker_form=speaker_form,
                               user_speaker=user_speaker,
                               accepted_sessions_count=accepted_sessions_count,
                               session_form=session_form,
                               call_for_speakers=call_for_speakers,
                               placeholder_images=placeholder_images,
                               state=state,
                               speakers=speakers,
                               via_hash=via_hash,
                               custom_placeholder=custom_placeholder,
                               from_path="cfs")

    if request.method == 'POST':
        event = DataGetter.get_event_by_identifier(identifier)
        if not event.has_session_speakers:
            abort(404)
        if login.current_user.is_authenticated:
            DataManager.add_session_to_event(request, event.id, no_name=True)
            flash("Your session proposal has been submitted", "success")
            return redirect(url_for('my_sessions.display_my_sessions_view', event_id=event.id))

        return redirect(url_for('admin.login_view', next=url_for('my_sessions.display_my_sessions_view')))
def display_event_detail_home(identifier):
    event = get_published_event_or_abort(identifier)
    placeholder_images = DataGetter.get_event_default_images()
    if event.sub_topic:
        custom_placeholder = DataGetter.get_custom_placeholder_by_name(event.sub_topic)
    elif event.topic:
        custom_placeholder = DataGetter.get_custom_placeholder_by_name(event.topic)
    else:
        custom_placeholder = DataGetter.get_custom_placeholder_by_name('Other')

    call_for_speakers = DataGetter.get_call_for_papers(event.id).first()
    accepted_sessions = DataGetter.get_sessions(event.id).all()
    if event.copyright:
        licence_details = DataGetter.get_licence_details(event.copyright.licence)
    else:
        licence_details = None

    speakers = []
    for session in accepted_sessions:
        for speaker in session.speakers:
            if speaker not in speakers:
                speakers.append(speaker)

    '''Timezone aware current datetime object according to event timezone'''
    timenow_event_tz = datetime.now(pytz.timezone(event.timezone
                                                  if (event.timezone and event.timezone != '') else 'UTC'))
    module = DataGetter.get_module()
    tickets = DataGetter.get_sales_open_tickets(event.id, True)

    '''Sponsor Levels'''
    sponsors = {-1: []}
    for sponsor in event.sponsor:
        if not sponsor.level:
            sponsors[-1].append(sponsor)
        elif int(sponsor.level) in sponsors.keys():
            sponsors[int(sponsor.level)].append(sponsor)
        else:
            sponsors[int(sponsor.level)] = [sponsor]

    fees = DataGetter.get_fee_settings_by_currency(event.payment_currency)
    code = request.args.get("code")
    return render_template('gentelella/guest/event/details.html',
                           event=event,
                           sponsors=sponsors,
                           placeholder_images=placeholder_images,
                           custom_placeholder=custom_placeholder,
                           accepted_sessions=accepted_sessions,
                           accepted_sessions_count=len(accepted_sessions),
                           call_for_speakers=call_for_speakers,
                           licence_details=licence_details,
                           speakers=speakers,
                           module=module,
                           timenow_event_tz=timenow_event_tz,
                           current_timezone=get_current_timezone(),
                           tickets=tickets if tickets else [],
                           fees=fees,
                           code=code)
def edit_view(event_id, step=''):
    event = DataGetter.get_event(event_id)
    custom_forms = DataGetter.get_custom_form_elements(event_id)
    speaker_form = json.loads(custom_forms.speaker_form)
    session_form = json.loads(custom_forms.session_form)
    call_for_speakers = DataGetter.get_call_for_papers(event_id).first()

    preselect = []
    required = []
    for session_field in session_form:
        if session_form[session_field]['include'] == 1:
            preselect.append(session_field)
            if session_form[session_field]['require'] == 1:
                required.append(session_field)
    for speaker_field in speaker_form:
        if speaker_form[speaker_field]['include'] == 1:
            preselect.append(speaker_field)
            if speaker_form[speaker_field]['require'] == 1:
                required.append(speaker_field)

    hash = get_random_hash()
    if CallForPaper.query.filter_by(hash=hash).all():
        hash = get_random_hash()

    current_timezone = get_current_timezone()

    seed = {
        'event': get_event_json(event),
        'sponsors': get_sponsors_json(event_id),
        'microlocations': get_microlocations_json(event_id),
        'sessionTypes': get_session_types_json(event_id),
        'tracks': get_tracks_json(event_id),
        'callForSpeakers': call_for_speakers.serialize if call_for_speakers else None
    }

    return render_template('gentelella/users/events/wizard/wizard.html',
                           event=event,
                           step=step,
                           seed=json.dumps(seed),
                           required=required,
                           preselect=preselect,
                           current_date=datetime.datetime.now(),
                           event_types=DataGetter.get_event_types(),
                           event_licences=DataGetter.get_event_licences(),
                           event_topics=DataGetter.get_event_topics(),
                           event_sub_topics=DataGetter.get_event_subtopics(),
                           timezones=DataGetter.get_all_timezones(),
                           call_for_speakers=call_for_speakers,
                           cfs_hash=hash,
                           current_timezone=current_timezone,
                           payment_countries=DataGetter.get_payment_countries(),
                           payment_currencies=DataGetter.get_payment_currencies(),
                           included_settings=get_module_settings(),
                           session_types=get_session_types_json(event_id),
                           microlocations=get_microlocations_json(event_id))
def save_call_for_speakers(data, event_id):
    call_for_papers = DataGetter.get_call_for_papers(event_id).first()
    if not call_for_papers:
        call_for_papers = CallForPaper(event_id=event_id)
    call_for_papers.announcement = data['announcement']
    call_for_papers.timezone = data['timezone']
    call_for_papers.privacy = data['privacy']
    call_for_papers.hash = data['hash']
    call_for_papers.start_date = get_event_time_field_format(data, 'start')
    call_for_papers.end_date = get_event_time_field_format(data, 'end')
    save_to_db(call_for_papers)
示例#8
0
def create_event_copy(event_id):
    old_event = DataGetter.get_event(event_id)
    event = clone_row(old_event)
    event.name = "Copy of " + event.name
    event.identifier = get_new_event_identifier()
    event.state = "Draft"
    save_to_db(event)

    role = Role.query.filter_by(name=ORGANIZER).first()
    uer = UsersEventsRoles(login.current_user, event, role)
    if save_to_db(uer, "Event saved"):
        new_email_notification_setting = EmailNotification(next_event=1,
                                                           new_paper=1,
                                                           session_schedule=1,
                                                           session_accept_reject=1,
                                                           after_ticket_purchase=1,
                                                           user_id=login.current_user.id,
                                                           event_id=event.id)
        save_to_db(new_email_notification_setting, "EmailSetting Saved")

    sponsors_old = DataGetter.get_sponsors(event_id).all()
    tracks_old = DataGetter.get_tracks(event_id).all()
    microlocations_old = DataGetter.get_microlocations(event_id).all()
    call_for_paper_old = DataGetter.get_call_for_papers(event_id).first()
    social_links = DataGetter.get_social_links_by_event_id(event_id).all()
    custom_forms = DataGetter.get_custom_form_elements(event_id)

    for social_link in social_links:
        clone_row(social_link, event.id)

    for sponsor in sponsors_old:
        clone_row(sponsor, event.id)

    for track in tracks_old:
        clone_row(track, event.id)

    for microlocation in microlocations_old:
        clone_row(microlocation, event.id)

    if call_for_paper_old:
        clone_row(call_for_paper_old, event.id)

    if custom_forms:
        clone_row(custom_forms, event.id)

    return event
def display_event_coc(identifier):
    event = get_published_event_or_abort(identifier)
    placeholder_images = DataGetter.get_event_default_images()
    if event.sub_topic:
        custom_placeholder = DataGetter.get_custom_placeholder_by_name(event.sub_topic)
    elif event.topic:
        custom_placeholder = DataGetter.get_custom_placeholder_by_name(event.topic)
    else:
        custom_placeholder = DataGetter.get_custom_placeholder_by_name('Other')
    call_for_speakers = DataGetter.get_call_for_papers(event.id).first()
    if not (event.code_of_conduct and event.code_of_conduct != '' and event.code_of_conduct != ' '):
        abort(404)
    accepted_sessions_count = get_count(DataGetter.get_sessions(event.id))
    return render_template('gentelella/guest/event/code_of_conduct.html', event=event,
                           placeholder_images=placeholder_images,
                           accepted_sessions_count=accepted_sessions_count,
                           custom_placeholder=custom_placeholder,
                           call_for_speakers=call_for_speakers)
def display_event_sessions(identifier):
    event = get_published_event_or_abort(identifier)
    placeholder_images = DataGetter.get_event_default_images()
    if event.sub_topic:
        custom_placeholder = DataGetter.get_custom_placeholder_by_name(event.sub_topic)
    elif event.topic:
        custom_placeholder = DataGetter.get_custom_placeholder_by_name(event.topic)
    else:
        custom_placeholder = DataGetter.get_custom_placeholder_by_name('Other')
    if not event.has_session_speakers:
        abort(404)
    call_for_speakers = DataGetter.get_call_for_papers(event.id).first()
    accepted_session_count = get_count(DataGetter.get_sessions(event.id))
    tracks = DataGetter.get_tracks(event.id)
    return render_template('gentelella/guest/event/sessions.html', event=event,
                           placeholder_images=placeholder_images, tracks=tracks,
                           accepted_sessions_count=accepted_session_count,
                           call_for_speakers=call_for_speakers, custom_placeholder=custom_placeholder)
def display_event_detail_home(identifier):
    event = get_published_event_or_abort(identifier)
    placeholder_images = DataGetter.get_event_default_images()
    if event.sub_topic:
        custom_placeholder = DataGetter.get_custom_placeholder_by_name(event.sub_topic)
    elif event.topic:
        custom_placeholder = DataGetter.get_custom_placeholder_by_name(event.topic)
    else:
        custom_placeholder = DataGetter.get_custom_placeholder_by_name('Other')

    call_for_speakers = DataGetter.get_call_for_papers(event.id).first()
    accepted_sessions = DataGetter.get_sessions(event.id).all()
    if event.copyright:
        licence_details = DataGetter.get_licence_details(event.copyright.licence)
    else:
        licence_details = None

    speakers = []
    for session in accepted_sessions:
        for speaker in session.speakers:
            if speaker not in speakers:
                speakers.append(speaker)

    '''Timezone aware current datetime object according to event timezone'''
    timenow_event_tz = datetime.now(pytz.timezone(event.timezone))
    module = DataGetter.get_module()
    tickets = DataGetter.get_sales_open_tickets(event.id, True)
    return render_template('gentelella/guest/event/details.html',
                           event=event,
                           placeholder_images=placeholder_images,
                           custom_placeholder=custom_placeholder,
                           accepted_sessions=accepted_sessions,
                           accepted_sessions_count=len(accepted_sessions),
                           call_for_speakers=call_for_speakers,
                           licence_details=licence_details,
                           speakers=speakers,
                           module=module,
                           timenow_event_tz=timenow_event_tz,
                           current_timezone=get_current_timezone(),
                           tickets=tickets if tickets else [])
示例#12
0
def details_view(event_id):
    event = DataGetter.get_event(event_id)
    checklist = {"": ""}

    if fields_not_empty(event,
                        ['name', 'start_time', 'end_time', 'location_name',
                         'organizer_name', 'organizer_description']):
        checklist["1"] = 'success'
    elif fields_not_empty(event, ['name', 'start_time', 'end_time']):
        checklist["1"] = 'missing_some'
    else:
        checklist["1"] = 'missing_main'

    call_for_speakers = DataGetter.get_call_for_papers(event_id).first()
    if call_for_speakers:
        if fields_not_empty(call_for_speakers,
                            ['announcement', 'start_date', 'end_date']):
            checklist["4"] = "success"
        elif fields_not_empty(call_for_speakers,
                              ['start_date', 'end_date']):
            checklist["4"] = "missing_some"
        else:
            checklist["4"] = 'missing_main'
    else:
        checklist["4"] = "optional"

    sponsors = DataGetter.get_sponsors(event_id).all()
    if not sponsors:
        checklist["2"] = 'optional'
    else:
        for sponsor in sponsors:
            if fields_not_empty(sponsor, ['name', 'description', 'url', 'level', 'logo']):
                checklist["2"] = 'success'
                break
            else:
                checklist["2"] = 'missing_some'
    if event.has_session_speakers:
        session_types = DataGetter.get_session_types_by_event_id(event_id)
        tracks = DataGetter.get_tracks(event_id)
        microlocations = DataGetter.get_microlocations(event_id)

        if not session_types and not tracks and not microlocations:
            checklist["3"] = 'optional'
        elif not session_types or not tracks or not microlocations:
            checklist["3"] = 'missing_main'
        else:
            for session_type in session_types:
                if fields_not_empty(session_type, ['name', 'length']):
                    checklist["3"] = 'success'
                    break
                else:
                    checklist["3"] = 'missing_some'
            for microlocation in microlocations:
                if fields_not_empty(microlocation, ['name']):
                    checklist["3"] = 'success'
                    break
                else:
                    checklist["3"] = 'missing_some'
            for tracks in tracks:
                if fields_not_empty(tracks, ['name', 'color']):
                    checklist["3"] = 'success'
                    break
                else:
                    checklist["3"] = 'missing_some'

        checklist["5"] = 'success'
    else:
        checklist["3"] = 'optional'
        checklist["4"] = 'optional'
        checklist["5"] = 'optional'

    if not current_user.can_publish_event() and not AuthManager.is_verified_user():
        flash(Markup('To make your event live, please verify your email by '
                     'clicking on the confirmation link that has been emailed to you.<br>'
                     'Did not get the email? Please <a href="/resend_email/" class="alert-link"> click here to '
                     'resend the confirmation.</a>'))

    sessions = {'pending': get_count(DataGetter.get_sessions_by_state_and_event_id('pending', event_id)),
                'accepted': get_count(DataGetter.get_sessions_by_state_and_event_id('accepted', event_id)),
                'rejected': get_count(DataGetter.get_sessions_by_state_and_event_id('rejected', event_id)),
                'draft': get_count(DataGetter.get_sessions_by_state_and_event_id('draft', event_id))}

    return render_template('gentelella/users/events/details/details.html',
                           event=event,
                           checklist=checklist,
                           sessions=sessions,
                           settings=get_settings())
def process_event_cfs(identifier, via_hash=False):
    if request.method == 'GET':
        event = get_published_event_or_abort(identifier)
        placeholder_images = DataGetter.get_event_default_images()
        if event.sub_topic:
            custom_placeholder = DataGetter.get_custom_placeholder_by_name(
                event.sub_topic)
        elif event.topic:
            custom_placeholder = DataGetter.get_custom_placeholder_by_name(
                event.topic)
        else:
            custom_placeholder = DataGetter.get_custom_placeholder_by_name(
                'Other')
        if not event.has_session_speakers:
            abort(404)

        call_for_speakers = DataGetter.get_call_for_papers(event.id).first()

        if not call_for_speakers or (not via_hash and call_for_speakers.privacy
                                     == 'private'):
            abort(404)

        form_elems = DataGetter.get_custom_form_elements(event.id)
        speaker_form = json.loads(form_elems.speaker_form)
        session_form = json.loads(form_elems.session_form)

        now = datetime.now(
            pytz.timezone(event.timezone if (
                event.timezone and event.timezone != '') else 'UTC'))
        start_date = pytz.timezone(event.timezone).localize(
            call_for_speakers.start_date)
        end_date = pytz.timezone(event.timezone).localize(
            call_for_speakers.end_date)
        state = "now"
        if end_date < now:
            state = "past"
        elif start_date > now:
            state = "future"
        speakers = DataGetter.get_speakers(event.id).all()
        accepted_sessions_count = get_count(DataGetter.get_sessions(event.id))
        return render_template('gentelella/guest/event/cfs_new.html',
                               event=event,
                               speaker_form=speaker_form,
                               accepted_sessions_count=accepted_sessions_count,
                               session_form=session_form,
                               call_for_speakers=call_for_speakers,
                               placeholder_images=placeholder_images,
                               state=state,
                               speakers=speakers,
                               via_hash=via_hash,
                               custom_placeholder=custom_placeholder,
                               from_path="cfs")

    if request.method == 'POST':
        email = request.form['email']
        event = DataGetter.get_event_by_identifier(identifier)
        if not event.has_session_speakers:
            abort(404)
        DataManager.add_session_to_event(request, event.id)
        if login.current_user.is_authenticated:
            flash("Your session proposal has been submitted", "success")
            return redirect(
                url_for('my_sessions.display_my_sessions_view',
                        event_id=event.id))
        else:
            flash(
                Markup(
                    "Your session proposal has been submitted. Please login/register with <strong><u>"
                    + email + "</u></strong> to manage it."), "success")
            return redirect(
                url_for('admin.login_view',
                        next=url_for('my_sessions.display_my_sessions_view')))
def display_event_cfs(identifier, via_hash=False):
    event = get_published_event_or_abort(identifier)
    placeholder_images = DataGetter.get_event_default_images()
    if login.current_user.is_authenticated:
        email = login.current_user.email
        user_speaker = DataGetter.get_speaker_by_email(email)
    if event.sub_topic:
        custom_placeholder = DataGetter.get_custom_placeholder_by_name(
            event.sub_topic)
    elif event.topic:
        custom_placeholder = DataGetter.get_custom_placeholder_by_name(
            event.topic)
    else:
        custom_placeholder = DataGetter.get_custom_placeholder_by_name('Other')
    if not event.has_session_speakers:
        abort(404)

    call_for_speakers = DataGetter.get_call_for_papers(event.id).first()

    if not call_for_speakers or (not via_hash
                                 and call_for_speakers.privacy == 'private'):
        abort(404)

    form_elems = DataGetter.get_custom_form_elements(event.id)
    speaker_form = json.loads(form_elems.speaker_form)
    session_form = json.loads(form_elems.session_form)

    now = datetime.now(
        pytz.timezone(event.timezone if (
            event.timezone and event.timezone != '') else 'UTC'))
    start_date = pytz.timezone(event.timezone).localize(
        call_for_speakers.start_date)
    end_date = pytz.timezone(event.timezone).localize(
        call_for_speakers.end_date)
    state = "now"
    if end_date < now:
        state = "past"
    elif start_date > now:
        state = "future"
    speakers = DataGetter.get_speakers(event.id).all()
    accepted_sessions_count = get_count(DataGetter.get_sessions(event.id))
    if not login.current_user.is_authenticated:
        return render_template('gentelella/guest/event/cfs.html',
                               event=event,
                               speaker_form=speaker_form,
                               accepted_sessions_count=accepted_sessions_count,
                               session_form=session_form,
                               call_for_speakers=call_for_speakers,
                               placeholder_images=placeholder_images,
                               state=state,
                               speakers=speakers,
                               via_hash=via_hash,
                               custom_placeholder=custom_placeholder)
    else:
        return render_template('gentelella/guest/event/cfs.html',
                               event=event,
                               speaker_form=speaker_form,
                               accepted_sessions_count=accepted_sessions_count,
                               session_form=session_form,
                               call_for_speakers=call_for_speakers,
                               placeholder_images=placeholder_images,
                               state=state,
                               speakers=speakers,
                               via_hash=via_hash,
                               custom_placeholder=custom_placeholder,
                               user_speaker=user_speaker)
示例#15
0
def display_event_detail_home(identifier):
    event = get_published_event_or_abort(identifier)
    placeholder_images = DataGetter.get_event_default_images()
    if event.sub_topic:
        custom_placeholder = DataGetter.get_custom_placeholder_by_name(
            event.sub_topic)
    elif event.topic:
        custom_placeholder = DataGetter.get_custom_placeholder_by_name(
            event.topic)
    else:
        custom_placeholder = DataGetter.get_custom_placeholder_by_name('Other')

    call_for_speakers = DataGetter.get_call_for_papers(event.id).first()
    accepted_sessions = DataGetter.get_sessions(event.id).all()
    if event.copyright:
        licence_details = DataGetter.get_licence_details(
            event.copyright.licence)
    else:
        licence_details = None

    speakers = []
    for session in accepted_sessions:
        for speaker in session.speakers:
            if speaker not in speakers:
                speakers.append(speaker)
    '''Timezone aware current datetime object according to event timezone'''
    timenow_event_tz = datetime.now(
        pytz.timezone(event.timezone if (
            event.timezone and event.timezone != '') else 'UTC'))
    module = DataGetter.get_module()
    tickets = DataGetter.get_sales_open_tickets(
        event.id, event.timezone if
        (event.timezone and event.timezone != '') else 'UTC')
    sorted_tickets = sorted(tickets, key=lambda x: x['ticket'].position)
    '''Sponsor Levels'''
    sponsors = {-1: []}
    for sponsor in event.sponsor:
        if not sponsor.level:
            sponsors[-1].append(sponsor)
        elif int(sponsor.level) in sponsors.keys():
            sponsors[int(sponsor.level)].append(sponsor)
        else:
            sponsors[int(sponsor.level)] = [sponsor]

    fees = DataGetter.get_fee_settings_by_currency(event.payment_currency)
    code = request.args.get("code")
    return render_template('gentelella/guest/event/details.html',
                           event=event,
                           sponsors=sponsors,
                           placeholder_images=placeholder_images,
                           custom_placeholder=custom_placeholder,
                           accepted_sessions=accepted_sessions,
                           accepted_sessions_count=len(accepted_sessions),
                           call_for_speakers=call_for_speakers,
                           licence_details=licence_details,
                           speakers=speakers,
                           module=module,
                           timenow_event_tz=timenow_event_tz,
                           current_timezone=get_current_timezone(),
                           tickets=sorted_tickets if sorted_tickets else [],
                           fees=fees,
                           code=code)
示例#16
0
def details_view(event_id):
    event = DataGetter.get_event(event_id)
    checklist = {"": ""}

    if fields_not_empty(event, [
            'name', 'start_time', 'end_time', 'location_name',
            'organizer_name', 'organizer_description'
    ]):
        checklist["1"] = 'success'
    elif fields_not_empty(event, ['name', 'start_time', 'end_time']):
        checklist["1"] = 'missing_some'
    else:
        checklist["1"] = 'missing_main'

    call_for_speakers = DataGetter.get_call_for_papers(event_id).first()
    if call_for_speakers:
        if fields_not_empty(call_for_speakers,
                            ['announcement', 'start_date', 'end_date']):
            checklist["4"] = "success"
        elif fields_not_empty(call_for_speakers, ['start_date', 'end_date']):
            checklist["4"] = "missing_some"
        else:
            checklist["4"] = 'missing_main'
    else:
        checklist["4"] = "optional"

    sponsors = DataGetter.get_sponsors(event_id).all()
    if not sponsors:
        checklist["2"] = 'optional'
    else:
        for sponsor in sponsors:
            if fields_not_empty(
                    sponsor, ['name', 'description', 'url', 'level', 'logo']):
                checklist["2"] = 'success'
                break
            else:
                checklist["2"] = 'missing_some'
    if event.has_session_speakers:
        session_types = DataGetter.get_session_types_by_event_id(event_id)
        tracks = DataGetter.get_tracks(event_id)
        microlocations = DataGetter.get_microlocations(event_id)

        if not session_types and not tracks and not microlocations:
            checklist["3"] = 'optional'
        elif not session_types or not tracks or not microlocations:
            checklist["3"] = 'missing_main'
        else:
            for session_type in session_types:
                if fields_not_empty(session_type, ['name', 'length']):
                    checklist["3"] = 'success'
                    break
                else:
                    checklist["3"] = 'missing_some'
            for microlocation in microlocations:
                if fields_not_empty(microlocation, ['name']):
                    checklist["3"] = 'success'
                    break
                else:
                    checklist["3"] = 'missing_some'
            for tracks in tracks:
                if fields_not_empty(tracks, ['name', 'color']):
                    checklist["3"] = 'success'
                    break
                else:
                    checklist["3"] = 'missing_some'

        checklist["5"] = 'success'
    else:
        checklist["3"] = 'optional'
        checklist["4"] = 'optional'
        checklist["5"] = 'optional'

    if not current_user.can_publish_event(
    ) and not AuthManager.is_verified_user():
        flash(
            Markup(
                'To make your event live, please verify your email by '
                'clicking on the confirmation link that has been emailed to you.<br>'
                'Did not get the email? Please <a href="/resend_email/" class="alert-link"> click here to '
                'resend the confirmation.</a>'))

    sessions = {
        'pending':
        get_count(
            DataGetter.get_sessions_by_state_and_event_id('pending',
                                                          event_id)),
        'accepted':
        get_count(
            DataGetter.get_sessions_by_state_and_event_id(
                'accepted', event_id)),
        'rejected':
        get_count(
            DataGetter.get_sessions_by_state_and_event_id(
                'rejected', event_id)),
        'draft':
        get_count(
            DataGetter.get_sessions_by_state_and_event_id('draft', event_id))
    }

    return render_template('gentelella/admin/event/details/details.html',
                           event=event,
                           checklist=checklist,
                           sessions=sessions,
                           settings=get_settings())