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 save_custom_forms(data, event_id): custom_forms = DataGetter.get_custom_form_elements(event_id) if not custom_forms: custom_forms = CustomForms(event_id=event_id) custom_forms.session_form = json.dumps(data['session']) custom_forms.speaker_form = json.dumps(data['speaker']) save_to_db(custom_forms)
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.state = "Draft" save_to_db(event) 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_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 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/admin/event/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())
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 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 session_display_view(event_id, session_id): session = get_session_or_throw(session_id) if request.method == 'POST': DataManager.edit_session(request, session) return redirect(url_for('.index_view', event_id=event_id)) event = DataGetter.get_event(event_id) if not event.has_session_speakers: return render_template( 'gentelella/admin/event/info/enable_module.html', active_page='sessions', title='Sessions', event=event) form_elems = DataGetter.get_custom_form_elements(event_id) if not form_elems: flash( "Speaker and Session forms have been incorrectly configured for this event." " Session creation has been disabled", "danger") return redirect(url_for('.index_view', event_id=event_id)) session_form = json.loads(form_elems.session_form) speakers = DataGetter.get_speakers(event_id).all() return render_template('gentelella/admin/event/sessions/edit.html', session=session, session_form=session_form, event_id=event_id, event=event, speakers=speakers)
def create_view(event_id): event = DataGetter.get_event(event_id) if not event.has_session_speakers: return render_template( 'gentelella/admin/event/info/enable_module.html', active_page='sessions', title='Sessions', event=event) if request.method == 'POST': DataManager.add_session_to_event(request, event_id) flash("The session and speaker have been saved") get_from = request.args.get("from") if get_from and get_from == 'speaker': return redirect( url_for('event_speakers.index_view', event_id=event_id)) return redirect(url_for('.index_view', event_id=event_id)) form_elems = DataGetter.get_custom_form_elements(event_id) if not form_elems: flash( "Speaker and Session forms have been incorrectly configured for this event." " Session creation has been disabled", "danger") return redirect(url_for('.index_view', event_id=event_id)) speaker_form = json.loads(form_elems.speaker_form) session_form = json.loads(form_elems.session_form) speakers = DataGetter.get_speakers(event_id).all() return render_template('gentelella/admin/event/sessions/new.html', speaker_form=speaker_form, session_form=session_form, event=event, speakers=speakers)
def save_custom_forms(data, event_id): custom_forms = DataGetter.get_custom_form_elements(event_id) if not custom_forms: custom_forms = CustomForms(event_id=event_id) custom_forms.session_form = json.dumps(data['session']) custom_forms.speaker_form = json.dumps(data['speaker']) save_to_db(custom_forms)
def process_speaker_view(speaker_id): if request.method == 'GET': speaker = DataGetter.get_speaker(speaker_id) if not speaker or speaker.name == '': abort(404) form_elems = DataGetter.get_custom_form_elements(speaker.event_id) if not form_elems: flash( "Speaker and Session forms have been incorrectly configured for this event." " Session creation has been disabled", "danger") return redirect( url_for('.display_my_sessions_view', event_id=speaker.event_id)) speaker_form = json.loads(form_elems.speaker_form) event = DataGetter.get_event(speaker.event_id) return render_template( 'gentelella/users/mysessions/mysession_speaker_edit.html', photo_delete_url=url_for('.avatar_delete', event_id=event.id, speaker_id=speaker.id), speaker_form=speaker_form, event=event, speaker=speaker) if request.method == 'POST': speaker = DataGetter.get_speaker(speaker_id) DataManager.edit_speaker(request, speaker) flash("The speaker has been updated successfully", "success") return redirect( url_for('.display_my_sessions_view', event_id=speaker.event_id))
def validate(self, data, event_id, check_required=True): form = DataGetter.get_custom_form_elements(event_id) model = None if form: model = model_custom_form(form.session_form, self.post_api_model) return ServiceDAO.validate( self, data, model=model, check_required=check_required)
def process_session_view(session_id): if request.method == 'GET': session = DataGetter.get_sessions_of_user_by_id(session_id) speaker = DataGetter.get_speakers( session.event_id).filter_by(user_id=login.current_user.id).first() if not session: abort(404) form_elems = DataGetter.get_custom_form_elements(session.event_id) if not form_elems: flash( "Speaker and Session forms have been incorrectly configured for this event." " Session creation has been disabled", "danger") return redirect( url_for('.display_my_sessions_view', event_id=session.event_id)) session_form = json.loads(form_elems.session_form) event = DataGetter.get_event(session.event_id) return render_template( 'gentelella/users/mysessions/mysession_session_edit.html', session=session, speaker=speaker, session_form=session_form, event=event) if request.method == 'POST': session = DataGetter.get_sessions_of_user_by_id(session_id) speaker = DataGetter.get_speakers( session.event_id).filter_by(user_id=login.current_user.id).first() DataManager.edit_session(request, session, speaker) flash("The session has been updated successfully", "success") return redirect(url_for('.display_session_view', session_id=session_id))
def validate(self, data, event_id, check_required=True): form = DataGetter.get_custom_form_elements(event_id) model = None if form: model = model_custom_form(form.session_form, self.post_api_model) return ServiceDAO.validate( self, data, model=model, check_required=check_required)
def process_session_view(session_id): if request.method == 'GET': session = DataGetter.get_sessions_of_user_by_id(session_id) if not session: abort(404) form_elems = DataGetter.get_custom_form_elements(session.event_id) if not form_elems: flash("Speaker and Session forms have been incorrectly configured for this event." " Session creation has been disabled", "danger") return redirect(url_for('.display_my_sessions_view', event_id=session.event_id)) speaker_form = json.loads(form_elems.speaker_form) session_form = json.loads(form_elems.session_form) event = DataGetter.get_event(session.event_id) speaker = DataGetter.get_speakers(session.event_id).filter_by(user_id=login.current_user.id).first() return render_template( 'gentelella/users/mysessions/mysession_detail_edit.html', session=session, photo_delete_url=url_for('.avatar_delete', event_id=event.id, speaker_id=speaker.id), speaker_form=speaker_form, session_form=session_form, event=event, speaker=speaker) if request.method == 'POST': session = DataGetter.get_sessions_of_user_by_id(session_id) speaker = DataGetter.get_speakers(session.event_id).filter_by(user_id=login.current_user.id).first() DataManager.edit_session(request, session, speaker) flash("The session has been updated successfully", "success") return redirect(url_for('.display_session_view', session_id=session_id))
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 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 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 display_event_cfs_via_hash(hash): call_for_speakers = CallForPaper.query.filter_by(hash=hash).first() if not call_for_speakers: abort(404) event = DataGetter.get_event(call_for_speakers.event_id) 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) if not call_for_speakers: abort(404) if request.method == 'POST': return process_event_cfs(event.identifier) 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.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=True, custom_placeholder=custom_placeholder)
def display_session_view(session_id): session = DataGetter.get_sessions_of_user_by_id(session_id) if not session: abort(404) form_elems = DataGetter.get_custom_form_elements(session.event_id) if not form_elems: flash("Speaker and Session forms have been incorrectly configured for this event." " Session creation has been disabled", "danger") return redirect(url_for('.display_my_sessions_view', event_id=session.event_id)) speaker_form = json.loads(form_elems.speaker_form) session_form = json.loads(form_elems.session_form) event = DataGetter.get_event(session.event_id) speakers = DataGetter.get_speakers(session.event_id).all() return render_template('gentelella/users/mysessions/mysession_detail.html', session=session, speaker_form=speaker_form, session_form=session_form, event=event, speakers=speakers)
def add_speaker_view(event_id, session_id): event = DataGetter.get_event(event_id) if not event.has_session_speakers: return render_template('gentelella/users/events/info/enable_module.html', active_page='sessions', title='Sessions', event=event) 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', event_id=event_id, event=event, speaker_form=speaker_form) if request.method == 'POST': DataManager.add_speaker_to_session(request, event_id, session_id) flash("The speaker has been added to session") return redirect(url_for('.index_view', event_id=event_id))
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 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))
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))
def display_event_cfs_via_hash(hash): call_for_speakers = CallForPaper.query.filter_by(hash=hash).first() if not call_for_speakers: abort(404) event = DataGetter.get_event(call_for_speakers.event_id) 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) if not call_for_speakers: abort(404) if request.method == 'POST': return process_event_cfs(event.identifier) 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.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=True, custom_placeholder=custom_placeholder)
def add_speaker_view(event_id, session_id): event = DataGetter.get_event(event_id) if not event.has_session_speakers: return render_template('gentelella/users/events/info/enable_module.html', active_page='sessions', title='Sessions', event=event) 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', event_id=event_id, event=event, speaker_form=speaker_form) if request.method == 'POST': DataManager.add_speaker_to_session(request, event_id, session_id) flash("The speaker has been added to session") return redirect(url_for('.index_view', event_id=event_id))
def edit_view(event_id, session_id): event = DataGetter.get_event(event_id) if not event.has_session_speakers: return render_template('gentelella/users/events/info/enable_module.html', active_page='sessions', title='Sessions', event=event) session = get_session_or_throw(session_id) if request.method == 'POST': DataManager.edit_session(request, session) return redirect(url_for('.index_view', event_id=event_id)) form_elems = DataGetter.get_custom_form_elements(event_id) if not form_elems: flash("Speaker and Session forms have been incorrectly configured for this event." " Session creation has been disabled", "danger") return redirect(url_for('.index_view', event_id=event_id)) session_form = json.loads(form_elems.session_form) speakers = DataGetter.get_speakers(event_id).all() return render_template('gentelella/users/events/sessions/edit.html', session=session, session_form=session_form, event=event, speakers=speakers)
def display_session_view(session_id): session = DataGetter.get_sessions_of_user_by_id(session_id) if not session: abort(404) form_elems = DataGetter.get_custom_form_elements(session.event_id) if not form_elems: flash( "Speaker and Session forms have been incorrectly configured for this event." " Session creation has been disabled", "danger") return redirect( url_for('.display_my_sessions_view', event_id=session.event_id)) speaker_form = json.loads(form_elems.speaker_form) session_form = json.loads(form_elems.session_form) event = DataGetter.get_event(session.event_id) speakers = DataGetter.get_speakers(session.event_id).all() return render_template('gentelella/users/mysessions/mysession_detail.html', session=session, speaker_form=speaker_form, session_form=session_form, event=event, speakers=speakers)
def create_view(event_id): event = DataGetter.get_event(event_id) if not event.has_session_speakers: return render_template('gentelella/users/events/info/enable_module.html', active_page='sessions', title='Sessions', event=event) if request.method == 'POST': DataManager.add_session_to_event(request, event_id, use_current_user=False) flash("The session and speaker have been saved") get_from = request.args.get("from") if get_from and get_from == 'speaker': return redirect(url_for('event_speakers.index_view', event_id=event_id)) return redirect(url_for('.index_view', event_id=event_id)) form_elems = DataGetter.get_custom_form_elements(event_id) if not form_elems: flash("Speaker and Session forms have been incorrectly configured for this event." " Session creation has been disabled", "danger") return redirect(url_for('.index_view', event_id=event_id)) speaker_form = json.loads(form_elems.speaker_form) session_form = json.loads(form_elems.session_form) speakers = DataGetter.get_speakers(event_id).all() return render_template('gentelella/users/events/sessions/new.html', speaker_form=speaker_form, session_form=session_form, event=event, speakers=speakers)
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/admin/event/speakers/edit.html', speaker=speaker, event_id=event_id, event=event, speaker_form=speaker_form) if request.method == 'POST': # set photo if 'photo' in request.files and request.files['photo'].filename != '': speaker_img_file = request.files['photo'] speaker_img = upload( speaker_img_file, UPLOAD_PATHS['speakers']['photo'].format( event_id=int(event_id), id=int(speaker.id) )) speaker.photo = speaker_img logo = request.form.get('photo', None) print logo if logo != '' and logo: filename = '{}.png'.format(time.time()) filepath = '{}/static/{}'.format(path.realpath('.'), logo[len('/serve_static/'):]) logo_file = UploadedFile(filepath, filename) print logo_file logo = upload(logo_file, 'events/%d/speakers/%d/photo' % (int(event_id), int(speaker.id))) speaker.photo = logo image_sizes = DataGetter.get_image_sizes_by_type(type='profile') if not image_sizes: image_sizes = ImageSizes(full_width=150, full_height=150, icon_width=35, icon_height=35, thumbnail_width=50, thumbnail_height=50, type='profile') save_to_db(image_sizes, "Image Sizes Saved") filename = '{}.jpg'.format(time.time()) filepath = '{}/static/{}'.format(path.realpath('.'), logo[len('/serve_static/'):]) logo_file = UploadedFile(filepath, filename) temp_img_file = upload_local(logo_file, 'events/{event_id}/speakers/{id}/temp'.format( event_id=int(event_id), id=int(speaker.id))) temp_img_file = temp_img_file.replace('/serve_', '') basewidth = image_sizes.full_width img = Image.open(temp_img_file) hsize = image_sizes.full_height img = img.resize((basewidth, hsize), PIL.Image.ANTIALIAS) img.save(temp_img_file) file_name = temp_img_file.rsplit('/', 1)[1] large_file = UploadedFile(file_path=temp_img_file, filename=file_name) profile_thumbnail_url = upload( large_file, UPLOAD_PATHS['speakers']['thumbnail'].format( event_id=int(event_id), id=int(speaker.id) )) basewidth = image_sizes.thumbnail_width img = Image.open(temp_img_file) hsize = image_sizes.thumbnail_height img = img.resize((basewidth, hsize), PIL.Image.ANTIALIAS) img.save(temp_img_file) file_name = temp_img_file.rsplit('/', 1)[1] thumbnail_file = UploadedFile(file_path=temp_img_file, filename=file_name) profile_small_url = upload( thumbnail_file, UPLOAD_PATHS['speakers']['small'].format( event_id=int(event_id), id=int(speaker.id) )) basewidth = image_sizes.icon_width img = Image.open(temp_img_file) hsize = image_sizes.icon_height img = img.resize((basewidth, hsize), PIL.Image.ANTIALIAS) img.save(temp_img_file) file_name = temp_img_file.rsplit('/', 1)[1] icon_file = UploadedFile(file_path=temp_img_file, filename=file_name) profile_icon_url = upload( icon_file, UPLOAD_PATHS['speakers']['icon'].format( event_id=int(event_id), id=int(speaker.id) )) shutil.rmtree(path='static/media/' + 'events/{event_id}/speakers/{id}/temp'.format( event_id=int(event_id), id=int(speaker.id))) speaker.thumbnail = profile_thumbnail_url speaker.small = profile_small_url speaker.icon = profile_icon_url save_to_db(speaker, "Speaker photo saved") # set other fields speaker.name = request.form.get('name', None) speaker.short_biography = request.form.get('short_biography', None) speaker.long_biography = request.form.get('long_biography', None) speaker.email = request.form.get('email', None) speaker.mobile = request.form.get('mobile', None) speaker.website = request.form.get('website', None) speaker.twitter = request.form.get('twitter', None) speaker.facebook = request.form.get('facebook', None) speaker.github = request.form.get('github', None) speaker.linkedin = request.form.get('linkedin', None) speaker.organisation = request.form.get('organisation', None) speaker.featured = True if request.form.get('featured', 'false') == 'true' else False speaker.position = request.form.get('position', None) speaker.country = request.form.get('country', None) speaker.city = request.form.get('city', None) if request.form.get('heard_from', None) == "Other": speaker.heard_from = request.form.get('other_text', None) else: speaker.heard_from = request.form.get('heard_from', None) speaker.sponsorship_required = request.form.get('sponsorship_required', None) speaker.speaking_experience = request.form.get('speaking_experience', None) save_to_db(speaker, "Speaker has been updated") flash("Speaker has been saved", "success") return redirect(url_for('.index_view', event_id=event_id))
def edit_view_stepped(event_id, step): event = DataGetter.get_event(event_id) session_types = DataGetter.get_session_types_by_event_id(event_id).all() tracks = DataGetter.get_tracks(event_id).all() social_links = DataGetter.get_social_links_by_event_id(event_id) microlocations = DataGetter.get_microlocations(event_id).all() call_for_speakers = DataGetter.get_call_for_papers(event_id).first() sponsors = DataGetter.get_sponsors(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) tax = DataGetter.get_tax_options(event_id) ticket_types = DataGetter.get_ticket_types(event_id) 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) if request.method == 'GET': hash = get_random_hash() if CallForPaper.query.filter_by(hash=hash).all(): hash = get_random_hash() match = geolite2.lookup(get_real_ip(True) or '127.0.0.1') if match is not None: current_timezone = match.timezone else: current_timezone = 'UTC' return render_template( 'gentelella/admin/event/edit/edit.html', event=event, session_types=session_types, tracks=tracks, social_links=social_links, microlocations=microlocations, call_for_speakers=call_for_speakers, sponsors=sponsors, 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(), preselect=preselect, current_timezone=current_timezone, timezones=DataGetter.get_all_timezones(), cfs_hash=hash, step=step, required=required, included_settings=get_module_settings(), tax=tax, payment_countries=DataGetter.get_payment_countries(), current_date=datetime.datetime.now(), start_date=datetime.datetime.now() + datetime.timedelta(days=10), payment_currencies=DataGetter.get_payment_currencies(), ticket_types=ticket_types) if request.method == "POST": old_sponsor_logos = [] old_sponsor_names = [] for sponsor in sponsors: old_sponsor_logos.append(sponsor.logo) old_sponsor_names.append(sponsor.name) try: event = DataManager.edit_event(request, event, session_types, tracks, social_links, microlocations, call_for_speakers, sponsors, old_sponsor_logos, old_sponsor_names, tax) except Exception: traceback.print_exc() if (request.form.get('state', u'Draft') == u'Published') and string_empty(event.location_name): flash( "Your event was saved. To publish your event please review the highlighted fields below.", "warning") return redirect( url_for('.edit_view', event_id=event.id) + "#highlight=location_name") return redirect(url_for('.details_view', event_id=event_id))
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/admin/event/speakers/edit.html', speaker=speaker, event_id=event_id, event=event, speaker_form=speaker_form) if request.method == 'POST': # set photo if 'photo' in request.files and request.files['photo'].filename != '': speaker_img_file = request.files['photo'] speaker_img = upload( speaker_img_file, UPLOAD_PATHS['speakers']['photo'].format( event_id=int(event_id), id=int(speaker.id))) speaker.photo = speaker_img logo = request.form.get('photo', None) print logo if logo != '' and logo: filename = '{}.png'.format(time.time()) filepath = '{}/static/{}'.format(path.realpath('.'), logo[len('/serve_static/'):]) logo_file = UploadedFile(filepath, filename) print logo_file logo = upload( logo_file, 'events/%d/speakers/%d/photo' % (int(event_id), int(speaker.id))) speaker.photo = logo image_sizes = DataGetter.get_image_sizes_by_type(type='profile') if not image_sizes: image_sizes = ImageSizes(full_width=150, full_height=150, icon_width=35, icon_height=35, thumbnail_width=50, thumbnail_height=50, type='profile') save_to_db(image_sizes, "Image Sizes Saved") filename = '{}.jpg'.format(time.time()) filepath = '{}/static/{}'.format(path.realpath('.'), logo[len('/serve_static/'):]) logo_file = UploadedFile(filepath, filename) temp_img_file = upload_local( logo_file, 'events/{event_id}/speakers/{id}/temp'.format( event_id=int(event_id), id=int(speaker.id))) temp_img_file = temp_img_file.replace('/serve_', '') basewidth = image_sizes.full_width img = Image.open(temp_img_file) hsize = image_sizes.full_height img = img.resize((basewidth, hsize), PIL.Image.ANTIALIAS) img.save(temp_img_file) file_name = temp_img_file.rsplit('/', 1)[1] large_file = UploadedFile(file_path=temp_img_file, filename=file_name) profile_thumbnail_url = upload( large_file, UPLOAD_PATHS['speakers']['thumbnail'].format( event_id=int(event_id), id=int(speaker.id))) basewidth = image_sizes.thumbnail_width img = Image.open(temp_img_file) hsize = image_sizes.thumbnail_height img = img.resize((basewidth, hsize), PIL.Image.ANTIALIAS) img.save(temp_img_file) file_name = temp_img_file.rsplit('/', 1)[1] thumbnail_file = UploadedFile(file_path=temp_img_file, filename=file_name) profile_small_url = upload( thumbnail_file, UPLOAD_PATHS['speakers']['small'].format( event_id=int(event_id), id=int(speaker.id))) basewidth = image_sizes.icon_width img = Image.open(temp_img_file) hsize = image_sizes.icon_height img = img.resize((basewidth, hsize), PIL.Image.ANTIALIAS) img.save(temp_img_file) file_name = temp_img_file.rsplit('/', 1)[1] icon_file = UploadedFile(file_path=temp_img_file, filename=file_name) profile_icon_url = upload( icon_file, UPLOAD_PATHS['speakers']['icon'].format(event_id=int(event_id), id=int(speaker.id))) shutil.rmtree(path='static/media/' + 'events/{event_id}/speakers/{id}/temp'.format( event_id=int(event_id), id=int(speaker.id))) speaker.thumbnail = profile_thumbnail_url speaker.small = profile_small_url speaker.icon = profile_icon_url save_to_db(speaker, "Speaker photo saved") # set other fields speaker.name = request.form.get('name', None) speaker.short_biography = request.form.get('short_biography', None) speaker.long_biography = request.form.get('long_biography', None) speaker.email = request.form.get('email', None) speaker.mobile = request.form.get('mobile', None) speaker.website = request.form.get('website', None) speaker.twitter = request.form.get('twitter', None) speaker.facebook = request.form.get('facebook', None) speaker.github = request.form.get('github', None) speaker.linkedin = request.form.get('linkedin', None) speaker.organisation = request.form.get('organisation', None) speaker.featured = True if request.form.get( 'featured', 'false') == 'true' else False speaker.position = request.form.get('position', None) speaker.country = request.form.get('country', None) speaker.city = request.form.get('city', None) if request.form.get('heard_from', None) == "Other": speaker.heard_from = request.form.get('other_text', None) else: speaker.heard_from = request.form.get('heard_from', None) speaker.sponsorship_required = request.form.get( 'sponsorship_required', None) speaker.speaking_experience = request.form.get('speaking_experience', None) save_to_db(speaker, "Speaker has been updated") flash("Speaker has been saved", "success") return redirect(url_for('.index_view', event_id=event_id))