def toggle_email_notification_settings(user_id, value): """ Settings will be toggled to database with proper User id """ events = DataGetter.get_all_events() user = DataGetter.get_user(user_id) notification_ids = [] for event in events: if user.is_speaker_at_event(event.id) or user.is_organizer(event.id): email_notification = DataGetter.get_email_notification_settings_by_event_id(user_id, event.id) if email_notification: email_notification.next_event = value email_notification.new_paper = value email_notification.session_schedule = value email_notification.session_accept_reject = value email_notification.after_ticket_purchase = value save_to_db(email_notification, "EmailSettings Toggled") notification_ids.append(email_notification.id) else: new_email_notification_setting = EmailNotification(next_event=value, new_paper=value, session_schedule=value, session_accept_reject=value, after_ticket_purchase=value, user_id=user_id, event_id=event.id) save_to_db(new_email_notification_setting, "EmailSetting Toggled") notification_ids.append(new_email_notification_setting.id) return notification_ids
def email_preferences_view(): events = DataGetter.get_all_events() message_settings = DataGetter.get_all_message_setting() settings = DataGetter.get_email_notification_settings(login.current_user.id) user = DataGetter.get_user(login.current_user.id) return render_template('gentelella/users/settings/pages/email_preferences.html', settings=settings, events=events, message_settings=message_settings, user=user)
def index_view(): mails = DataGetter.get_all_mails(count=300) notifications = DataGetter.get_all_notifications(count=300) activities = DataGetter.get_all_activities(count=600) on_heroku = HerokuApi.is_on_heroku() on_kubernetes = KubernetesApi.is_on_kubernetes() pods_info = None logplex_url = None if on_kubernetes: kubernetes_api = KubernetesApi() pods_info = kubernetes_api.get_pods()['items'] elif on_heroku: heroku_api = HerokuApi() logplex_url = heroku_api.get_logplex_url() return render_template( 'gentelella/admin/super_admin/reports/reports.html', mails=mails, notifications=notifications, on_heroku=on_heroku, logplex_url=logplex_url, on_kubernetes=on_kubernetes, pods_info=pods_info, activities=activities, navigation_bar=list_navbar() )
def user_role_invite(event_id, hash): """Accept User-Role invite for the event. """ event = DataGetter.get_event(event_id) user = current_user role_invite = DataGetter.get_event_role_invite(event.id, hash, email=user.email) if role_invite: if role_invite.has_expired(): delete_from_db(role_invite, 'Deleted RoleInvite') flash('Sorry, the invitation link has expired.', 'error') return redirect(url_for('.details_view', event_id=event.id)) if user.has_role(event.id): flash('You have already been assigned a Role in the Event.', 'warning') return redirect(url_for('events.details_view', event_id=event_id)) role = role_invite.role data = dict() data['user_email'] = role_invite.email data['user_role'] = role.name DataManager.add_role_to_event(data, event.id) # Delete Role Invite after it has been accepted delete_from_db(role_invite, 'Deleted RoleInvite') flash('You have been added as a %s' % role.title_name) return redirect(url_for('.details_view', event_id=event.id)) else: abort(404)
def index_view(self): if request.method == 'POST': DataManager.update_permissions(request.form) perms = dict() roles = DataGetter.get_roles() services = DataGetter.get_services() get_permission = DataGetter.get_permission_by_role_service for role in roles: perms[role] = dict() for service in services: perms[role][service.name] = dict() p = get_permission(role=role, service=service) if not p: perms[role][service.name]['c'] = False perms[role][service.name]['r'] = False perms[role][service.name]['u'] = False perms[role][service.name]['d'] = False else: perms[role][service.name]['c'] = p.can_create perms[role][service.name]['r'] = p.can_read perms[role][service.name]['u'] = p.can_update perms[role][service.name]['d'] = p.can_delete return self.render( '/gentelella/admin/super_admin/permissions/permissions.html', perms=sorted(perms.iteritems(), key=lambda (k, v): k.name))
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 publish_event(event_id): event = DataGetter.get_event(event_id) if 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") if not current_user.can_publish_event(): flash("You don't have permission to publish event.") return redirect(url_for('.details_view', event_id=event_id)) event.state = 'Published' save_to_db(event, 'Event Published') organizers = DataGetter.get_user_event_roles_by_role_name(event_id, 'organizer') speakers = DataGetter.get_user_event_roles_by_role_name(event_id, 'speaker') link = url_for('.details_view', event_id=event_id, _external=True) for organizer in organizers: send_event_publish(organizer.user.email, event.name, link) for speaker in speakers: send_event_publish(speaker.user.email, event.name, link) record_activity('publish_event', event_id=event.id, status='published') flash("Your event has been published.", "success") return redirect(url_for('.details_view', event_id=event_id))
def index_view(): live_events = DataGetter.get_all_live_events() draft_events = DataGetter.get_all_draft_events() past_events = DataGetter.get_all_past_events() all_events = DataGetter.get_all_events() trash_events = DataGetter.get_trash_events() free_ticket_count = {} paid_ticket_count = {} donation_ticket_count = {} max_free_ticket = {} max_paid_ticket = {} max_donation_ticket = {} for event in all_events: free_ticket_count[event.id] = TicketingManager.get_orders_count_by_type(event.id, type='free') max_free_ticket[event.id] = TicketingManager.get_max_orders_count(event.id, type='free') paid_ticket_count[event.id] = TicketingManager.get_orders_count_by_type(event.id, type='paid') max_paid_ticket[event.id] = TicketingManager.get_max_orders_count(event.id, type='paid') donation_ticket_count[event.id] = TicketingManager.get_orders_count_by_type(event.id, type='donation') max_donation_ticket[event.id] = TicketingManager.get_max_orders_count(event.id, type='donation') return render_template('gentelella/admin/super_admin/events/events.html', live_events=live_events, draft_events=draft_events, past_events=past_events, all_events=all_events, trash_events=trash_events, free_ticket_count=free_ticket_count, paid_ticket_count=paid_ticket_count, donation_ticket_count=donation_ticket_count, max_free_ticket=max_free_ticket, max_paid_ticket=max_paid_ticket, max_donation_ticket=max_donation_ticket, navigation_bar=list_navbar())
def display_my_sessions_view(): placeholder_images = DataGetter.get_event_default_images() custom_placeholder = DataGetter.get_custom_placeholders() upcoming_events_sessions = DataGetter.get_sessions_of_user(upcoming_events=True) im_config = DataGetter.get_image_configs() im_size = '' for config in im_config: if config.page == 'mysession': im_size = config.size past_events_sessions = DataGetter.get_sessions_of_user(upcoming_events=False) page_content = {"tab_upcoming_events": "Upcoming Sessions", "tab_past_events": "Past Sessions", "title": "My Session Proposals"} if not AuthManager.is_verified_user(): flash(Markup("Your account is unverified. " "Please verify 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>')) return render_template('gentelella/users/mysessions/mysessions_list.html', upcoming_events_sessions=upcoming_events_sessions, past_events_sessions=past_events_sessions, page_content=page_content, placeholder_images=placeholder_images, custom_placeholder=custom_placeholder, im_size=im_size)
def display_view(event_id): sessions = DataGetter.get_sessions_by_event_id(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='scheduler', title='Scheduler', event=event) return render_template('gentelella/users/events/scheduler/scheduler.html', sessions=sessions, event=event)
def index_view(event_id): speakers = DataGetter.get_speakers(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='speakers', title='Speakers', event=event) return render_template('gentelella/users/events/speakers/base_speaker_table.html', speakers=speakers, event_id=event_id, event=event)
def email_preferences_view(user_id): events = DataGetter.get_all_events() message_settings = DataGetter.get_all_message_setting() settings = DataGetter.get_email_notification_settings(user_id) user = DataGetter.get_user(int(user_id)) user.admin_access = 1 return render_template('gentelella/users/settings/pages/email_preferences.html', settings=settings, events=events, message_settings=message_settings, user=user)
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 details_view(page_id): page = DataGetter.get_page_by_id(page_id) if request.method == 'POST': DataManager().update_page(page, request.form) return redirect(url_for('sadmin_content.details_view', page_id=page_id)) pages = DataGetter.get_all_pages() return render_template('gentelella/admin/super_admin/content/content.html', pages=pages, current_page=page, navigation_bar=list_navbar())
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 index_view(self): mails = DataGetter.get_all_mails(count=300) notifications = DataGetter.get_all_notifications(count=300) activities = DataGetter.get_all_activities(count=600) return self.render( '/gentelella/admin/super_admin/logs/logs.html', mails=mails, notifications=notifications, activities=activities )
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_tickets(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 event.copyright: licence_details = DataGetter.get_licence_details(event.copyright.licence) else: licence_details = None module = DataGetter.get_module() tickets = DataGetter.get_sales_open_tickets(event.id, True) accepted_sessions_count = get_count(DataGetter.get_sessions(event.id)) timenow_event_tz = datetime.now(pytz.timezone(event.timezone)) fees = DataGetter.get_fee_settings_by_currency(event.payment_currency) return render_template('gentelella/guest/event/details.html', event=event, placeholder_images=placeholder_images, custom_placeholder=custom_placeholder, accepted_sessions_count=accepted_sessions_count, licence_details=licence_details, module=module, timenow_event_tz=timenow_event_tz, current_timezone=get_current_timezone(), tickets=tickets if tickets else [], fees=fees)
def set_settings(**kwargs): """ Update system settings """ if 'service_fee' in kwargs: ticket_service_fees = kwargs.get('service_fee') ticket_maximum_fees = kwargs.get('maximum_fee') from app.helpers.data_getter import DataGetter from app.helpers.data import save_to_db currencies = DataGetter.get_payment_currencies() ticket_fees = DataGetter.get_fee_settings() if not ticket_fees: for i, (currency, has_paypal, has_stripe) in enumerate(currencies): currency = currency.split(' ')[0] if float(ticket_maximum_fees[i]) == 0.0: ticket_maximum_fees[i] = ticket_service_fees[i] ticket_fee = TicketFees(currency=currency, service_fee=ticket_service_fees[i], maximum_fee=ticket_maximum_fees[i]) save_to_db(ticket_fee, "Ticket Fees settings saved") else: i = 0 for fee in ticket_fees: if float(ticket_maximum_fees[i]) == 0.0: ticket_maximum_fees[i] = ticket_service_fees[i] fee.service_fee = ticket_service_fees[i] fee.maximum_fee = ticket_maximum_fees[i] save_to_db(fee, "Fee Options Updated") i += 1 else: setting = Setting.query.order_by(desc(Setting.id)).first() if not setting: setting = Setting(**kwargs) else: for key, value in kwargs.iteritems(): setattr(setting, key, value) from app.helpers.data import save_to_db save_to_db(setting, 'Setting saved') current_app.secret_key = setting.secret stripe.api_key = setting.stripe_secret_key if setting.app_environment == Environment.DEVELOPMENT and not current_app.config['DEVELOPMENT']: current_app.config.from_object('config.DevelopmentConfig') if setting.app_environment == Environment.STAGING and not current_app.config['STAGING']: current_app.config.from_object('config.StagingConfig') if setting.app_environment == Environment.PRODUCTION and not current_app.config['PRODUCTION']: current_app.config.from_object('config.ProductionConfig') if setting.app_environment == Environment.TESTING and not current_app.config['TESTING']: current_app.config.from_object('config.TestingConfig') current_app.config['custom_settings'] = make_dict(setting)
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(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 user_logged_in(user): speakers = DataGetter.get_speaker_by_email(user.email).all() for speaker in speakers: if not speaker.user: speaker.user = user role = Role.query.filter_by(name='speaker').first() event = DataGetter.get_event(speaker.event_id) uer = UsersEventsRoles(user=user, event=event, role=role) save_to_db(uer) save_to_db(speaker) return True
def delete_user_role_invite(event_id, hash): event = DataGetter.get_event(event_id) role_invite = DataGetter.get_event_role_invite(event.id, hash) if role_invite: delete_from_db(role_invite, 'Deleted RoleInvite') flash('Invitation link has been successfully deleted.') return redirect(url_for('.details_view', event_id=event.id)) else: abort(404)
def send_after_event_mail(): with app.app_context(): events = Event.query.all() for event in events: upcoming_events = DataGetter.get_upcoming_events(event.id) organizers = DataGetter.get_user_event_roles_by_role_name(event.id, 'organizer') speakers = DataGetter.get_user_event_roles_by_role_name(event.id, 'speaker') if datetime.now() > event.end_time: for speaker in speakers: send_after_event(speaker.user.email, event.id, upcoming_events) for organizer in organizers: send_after_event(organizer.user.email, event.id, upcoming_events)
def trigger_session_schedule_change_notifications(session, event_id): link = url_for('event_sessions.session_display_view', event_id=event_id, session_id=session.id, _external=True) admin_msg_setting = DataGetter.get_message_setting_by_action(SESSION_SCHEDULE) for speaker in session.speakers: email_notification_setting = DataGetter.get_email_notification_settings_by_event_id(speaker.user_id, event_id) if not admin_msg_setting or \ (email_notification_setting and email_notification_setting.session_schedule == 1 and admin_msg_setting.user_control_status == 1) or \ admin_msg_setting.user_control_status == 0: send_schedule_change(speaker.email, session.title, link) # Send notification send_notif_session_schedule(speaker.user, session.title, link)
def display_export_view(event_id): event = DataGetter.get_event(event_id) export_jobs = DataGetter.get_export_jobs(event_id) user = current_user if not AuthManager.is_verified_user(): flash(Markup("Your account is unverified. " "Please verify 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>')) return render_template( 'gentelella/users/events/export/export.html', event=event, export_jobs=export_jobs, current_user=user )
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 trigger_session_state_change_notifications(session, event_id, state=None): if not state: state = session.state link = url_for('event_sessions.session_display_view', event_id=event_id, session_id=session.id, _external=True) admin_msg_setting = DataGetter.get_message_setting_by_action(SESSION_ACCEPT_REJECT) for speaker in session.speakers: email_notification_setting = DataGetter.get_email_notification_settings_by_event_id(speaker.user_id, event_id) if not admin_msg_setting or \ (email_notification_setting and email_notification_setting.session_accept_reject == 1 and admin_msg_setting.user_control_status == 1) or \ admin_msg_setting.user_control_status == 0: send_session_accept_reject(speaker.email, session.title, state, link) # Send notification send_notif_session_accept_reject(speaker.user, session.title, state, link)
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 send_export_mail(event_id, result): """ send export event mail after the process is complete """ job = DataGetter.get_export_jobs(event_id) if not job: # job not stored, happens in case of CELERY_ALWAYS_EAGER return event = EventModel.query.get(event_id) if not event: event_name = '(Undefined)' else: event_name = event.name send_email_after_export(job.user_email, event_name, result) user = DataGetter.get_user_by_email(job.user_email) send_notif_after_export(user, event_name, result)
def set_settings(**kwargs): """ Update system settings """ if 'service_fee' in kwargs: ticket_service_fees = kwargs.get('service_fee') ticket_maximum_fees = kwargs.get('maximum_fee') from app.helpers.data_getter import DataGetter from app.helpers.data import save_to_db currencies = DataGetter.get_payment_currencies() ticket_fees = DataGetter.get_fee_settings() if not ticket_fees: for i, (currency, has_paypal, has_stripe) in enumerate(currencies): currency = currency.split(' ')[0] if float(ticket_maximum_fees[i]) == 0.0: ticket_maximum_fees[i] = ticket_service_fees[i] ticket_fee = TicketFees(currency=currency, service_fee=ticket_service_fees[i], maximum_fee=ticket_maximum_fees[i]) save_to_db(ticket_fee, "Ticket Fees settings saved") else: i = 0 for fee in ticket_fees: if float(ticket_maximum_fees[i]) == 0.0: ticket_maximum_fees[i] = ticket_service_fees[i] fee.service_fee = ticket_service_fees[i] fee.maximum_fee = ticket_maximum_fees[i] save_to_db(fee, "Fee Options Updated") i += 1 else: setting = Setting.query.order_by(desc(Setting.id)).first() if not setting: setting = Setting(**kwargs) else: for key, value in kwargs.iteritems(): setattr(setting, key, value) from app.helpers.data import save_to_db save_to_db(setting, 'Setting saved') current_app.secret_key = setting.secret stripe.api_key = setting.stripe_secret_key current_app.config['custom_settings'] = make_dict(setting)
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() custom_placeholder = DataGetter.get_custom_placeholders() 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_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) 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_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 avatar_delete(event_id, speaker_id): if request.method == 'DELETE': speaker = DataGetter.get_speaker(speaker_id) speaker.photo = '' speaker.small = '' speaker.thumbnail = '' speaker.icon = '' speakers_modified.send(current_app._get_current_object(), event_id=speaker.event_id) save_to_db(speaker) return jsonify({'status': 'ok'})
def placeholder_upload_details(): if request.method == 'POST': copyright_info = request.form['copyright'] origin_info = request.form['origin'] placeholder_id = request.form['placeholder_id'] placeholder_db = DataGetter.get_custom_placeholder_by_id(placeholder_id) placeholder_db.copyright = copyright_info placeholder_db.origin = origin_info save_to_db(placeholder_db, 'Custom Placeholder updated') return jsonify({'status': 'ok'}) return jsonify({'status': 'error'})
def display_attendees(event_id): event = DataGetter.get_event(event_id) orders = TicketingManager.get_orders(event_id) holders = [] for order in orders: for holder in order.ticket_holders: discount = TicketingManager.get_discount_code( event_id, order.discount_code_id) order_holder = {} order_holder['order_invoice'] = order.get_invoice_number() order_holder['order_url'] = url_for('ticketing.view_order_after_payment', order_identifier=order.identifier) \ if order.status == 'completed' else url_for('ticketing.show_transaction_error', \ order_identifier=order.identifier) order_holder['by_whom'] = order.user.user_detail.fullname if order.user.user_detail \ and order.user.user_detail.fullname else order.user.email order_holder['paid_via'] = order.paid_via order_holder['status'] = order.status order_holder['completed_at'] = order.completed_at order_holder['created_at'] = order.created_at order_holder['ticket_name'] = holder.ticket.name order_holder['firstname'] = holder.firstname order_holder['lastname'] = holder.lastname order_holder['email'] = holder.email order_holder['ticket_name'] = holder.ticket.name order_holder['ticket_price'] = holder.ticket.price if discount and str( holder.ticket.id) in discount.tickets.split(","): if discount.type == "amount": order_holder['ticket_price'] = order_holder[ 'ticket_price'] - discount.value else: order_holder['ticket_price'] = order_holder['ticket_price'] - (order_holder['ticket_price'] \ * discount.value / 100.0 ) order_holder['checked_in'] = holder.checked_in order_holder['id'] = holder.id holders.append(order_holder) if len(order.ticket_holders) == 0: order_holder = {} order_holder['order_invoice'] = order.get_invoice_number() order_holder['order_url'] = url_for('ticketing.view_order_after_payment', order_identifier=order.identifier) \ if order.status == 'completed' else url_for('ticketing.show_transaction_error', \ order_identifier=order.identifier) order_holder['by_whom'] = order.user.user_detail.fullname if order.user.user_detail \ and order.user.user_detail.fullname else order.user.email order_holder['paid_via'] = order.paid_via order_holder['status'] = order.status order_holder['completed_at'] = order.completed_at order_holder['created_at'] = order.created_at holders.append(order_holder) return render_template('gentelella/admin/event/tickets/attendees.html', event=event, event_id=event_id, holders=holders)
def get_module_settings(): included_setting = [] module = DataGetter.get_module() if module is not None: if module.ticket_include: included_setting.append('ticketing') if module.payment_include: included_setting.append('payments') if module.donation_include: included_setting.append('donations') return included_setting
def index_view(): if not AuthManager.is_verified_user(): flash( Markup( "Your account is unverified. " "Please verify 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>')) profile = DataGetter.get_user(login.current_user.id) return render_template('gentelella/admin/profile/index.html', profile=profile)
def update_role_to_admin(form, user_id): user = DataGetter.get_user(user_id) old_admin_status = user.is_admin user.is_admin = True if form['admin_perm'] == 'isAdmin' else False save_to_db(user, "User role Updated") if old_admin_status != user.is_admin: record_activity( 'system_admin', user=user, status='Assigned' if user.is_admin else 'Unassigned' )
def access_codes_create(event_id, access_code_id=None): event = DataGetter.get_event(event_id) if request.method == 'POST': TicketingManager.create_edit_access_code(request.form, event_id) flash("The access code has been added.", "success") return redirect(url_for('.access_codes_view', event_id=event_id)) access_code = None if access_code_id: access_code = TicketingManager.get_access_code(event_id, access_code_id) return render_template('gentelella/users/events/tickets/access_codes_create.html', event=event, event_id=event_id, access_code=access_code)
def view_order_after_payment(order_identifier): order = TicketingManager.get_and_set_expiry(order_identifier) if not order or (order.status != 'completed' and order.status != 'placed'): abort(404) fees = DataGetter.get_fee_settings_by_currency( order.event.payment_currency) return render_template( 'gentelella/guest/ticketing/order_post_payment.html', order=order, event=order.event, fees=fees)
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 bgimage_upload(event_id): if request.method == 'POST': background_image = request.form['bgimage'] if background_image: background_file = uploaded_file(file_content=background_image) background_url = upload( background_file, UPLOAD_PATHS['event']['background_url'].format( event_id=event_id)) event = DataGetter.get_event(event_id) event.background_url = background_url save_to_db(event) return jsonify({'status': 'ok', 'background_url': background_url}) else: return jsonify({'status': 'no bgimage'}) elif request.method == 'DELETE': event = DataGetter.get_event(event_id) event.background_url = '' save_to_db(event) return jsonify({'status': 'ok'})
def fees_by_events_view(self): from_date = request.args.get('from_date') to_date = request.args.get('to_date') if ('from_date' in request.args and not from_date) or ('to_date' in request.args and not to_date) or \ ('from_date' in request.args and 'to_date' not in request.args) or \ ('to_date' in request.args and 'from_date' not in request.args): return redirect(url_for('.fees_by_events_view')) if from_date and to_date: orders = TicketingManager.get_orders( from_date=datetime.strptime(from_date, '%d/%m/%Y'), to_date=datetime.strptime(to_date, '%d/%m/%Y'), status='completed') else: orders = TicketingManager.get_orders(status='completed') events = DataGetter.get_all_events() fee_summary = {} for event in events: fee_summary[str(event.id)] = { 'name': event.name, 'payment_currency': event.payment_currency, 'fee_rate': get_fee(event.payment_currency), 'fee_amount': 0, 'tickets_count': 0 } fee_total = 0 tickets_total = 0 for order in orders: for order_ticket in order.tickets: fee_summary[str( order.event.id)]['tickets_count'] += order_ticket.quantity tickets_total += order_ticket.quantity ticket = TicketingManager.get_ticket(order_ticket.ticket_id) if order.paid_via != 'free' and order.amount > 0 and ticket.price > 0: fee = ticket.price * ( get_fee(order.event.payment_currency) / 100) fee = forex(order.event.payment_currency, self.display_currency, fee) fee_summary[str(order.event.id)]['fee_amount'] += fee fee_total += fee return self.render('/gentelella/admin/super_admin/sales/fees.html', fee_summary=fee_summary, display_currency=self.display_currency, from_date=from_date, to_date=to_date, tickets_total=tickets_total, fee_total=fee_total)
def get_sponsors_json(event_id_or_sponsors): if represents_int(event_id_or_sponsors): sponsors = DataGetter.get_sponsors(event_id_or_sponsors) else: sponsors = event_id_or_sponsors data = [] for sponsor in sponsors: data.append(sponsor.serialize) return data
def sponsor_logo_upload(event_id, sponsor_id): if request.method == 'POST': logo_image = request.form['logo'] if logo_image: logo_file = uploaded_file(file_content=logo_image) logo = upload( logo_file, UPLOAD_PATHS['sponsors']['logo'].format(event_id=event_id, id=sponsor_id)) sponsor = DataGetter.get_sponsor(sponsor_id) sponsor.logo = logo save_to_db(sponsor) return jsonify({'status': 'ok', 'logo': logo}) else: return jsonify({'status': 'no logo'}) elif request.method == 'DELETE': sponsor = DataGetter.get_sponsor(sponsor_id) sponsor.logo = '' save_to_db(sponsor) return jsonify({'status': 'ok'})
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)
def get_credentials(event=None, override_mode=False, is_testing=False): if event and represents_int(event): event = DataGetter.get_event(event) settings = get_settings() if not override_mode: if settings['paypal_mode'] and settings['paypal_mode'] != "": if settings['paypal_mode'] == 'live': is_testing = False else: is_testing = True else: return None if is_testing: credentials = { 'USER': settings['paypal_sandbox_username'], 'PWD': settings['paypal_sandbox_password'], 'SIGNATURE': settings['paypal_sandbox_signature'], 'SERVER': 'https://api-3t.sandbox.paypal.com/nvp', 'CHECKOUT_URL': 'https://www.sandbox.paypal.com/cgi-bin/webscr', 'EMAIL': '' if not event or not event.paypal_email or event.paypal_email == "" else event.paypal_email } else: credentials = { 'USER': settings['paypal_live_username'], 'PWD': settings['paypal_live_password'], 'SIGNATURE': settings['paypal_live_signature'], 'SERVER': 'https://api-3t.paypal.com/nvp', 'CHECKOUT_URL': 'https://www.paypal.com/cgi-bin/webscr', 'EMAIL': '' if not event or not event.paypal_email or event.paypal_email == "" else event.paypal_email } if credentials['USER'] and credentials['USER'] and credentials['USER'] and credentials['USER'] != "" and \ credentials['USER'] != "" and credentials['USER'] != "": return credentials else: return None
def trigger_new_session_notifications(session_id, event_id=None, event=None): if not event and not event_id: raise Exception('event or event_id is required') if not event: event = DataGetter.get_event(event_id) link = url_for('event_sessions.session_display_view', event_id=event.id, session_id=session_id, _external=True) admin_msg_setting = DataGetter.get_message_setting_by_action(NEW_SESSION) organizers = DataGetter.get_user_event_roles_by_role_name(event.id, 'organizer') for organizer in organizers: email_notification_setting = DataGetter.get_email_notification_settings_by_event_id(organizer.user.id, event.id) if not admin_msg_setting or \ (email_notification_setting and email_notification_setting.new_paper == 1 and admin_msg_setting.user_control_status == 1) or admin_msg_setting.user_control_status == 0: send_new_session_organizer(organizer.user.email, event.name, link) # Send notification send_notif_new_session_organizer(organizer.user, event.name, link)
def index_view(self): # System-Role (Panel) Permissions sys_perms = dict() get_panel_perm = DataGetter.get_panel_permission for sys_role in SYS_ROLES_LIST: sys_perms[sys_role] = dict() for panel in PANEL_LIST: p = get_panel_perm(role_name=sys_role, panel_name=panel) sys_perms[sys_role][panel] = False if not p else p.can_access ## User Permissions user_perms = DataGetter.get_user_permissions() # Event-Role Permissions event_perms = dict() roles = DataGetter.get_roles() services = DataGetter.get_services() get_permission = DataGetter.get_permission_by_role_service for role in roles: event_perms[role] = dict() for service in services: event_perms[role][service.name] = dict() p = get_permission(role=role, service=service) event_perms[role][ service.name]['c'] = False if not p else p.can_create event_perms[role][ service.name]['r'] = False if not p else p.can_read event_perms[role][ service.name]['u'] = False if not p else p.can_update event_perms[role][ service.name]['d'] = False if not p else p.can_delete return self.render( '/gentelella/admin/super_admin/permissions/permissions.html', event_perms=sorted(event_perms.iteritems(), key=lambda (k, v): k.name), sys_perms=sys_perms, user_perms=user_perms)
def trigger_session_state_change_notifications(session, event_id, state=None): if not state: state = session.state link = url_for('event_sessions.session_display_view', event_id=event_id, session_id=session.id, _external=True) admin_msg_setting = DataGetter.get_message_setting_by_action( SESSION_ACCEPT_REJECT) for speaker in session.speakers: email_notification_setting = DataGetter.get_email_notification_settings_by_event_id( speaker.user_id, event_id) if not admin_msg_setting or \ (email_notification_setting and email_notification_setting.session_accept_reject == 1 and admin_msg_setting.user_control_status == 1) or \ admin_msg_setting.user_control_status == 0: send_session_accept_reject(speaker.email, session.title, state, link) # Send notification send_notif_session_accept_reject(speaker.user, session.title, state, link)
def fix_session_owners(): speakers = Speaker.query.all() for speaker in speakers: if not speaker.user or speaker.user.email != speaker.email: speaker.user = DataGetter.get_or_create_user_by_email( speaker.email, { 'firstname': speaker.name, 'lastname': '' }) db.session.add(speaker) print "Processed - " + str(speaker.id) db.session.commit()
def user_role_invite_decline(event_id, hash): """Decline User-Role invite for the event. """ event = DataGetter.get_event(event_id) user = current_user role_invite = DataGetter.get_event_role_invite(event.id, hash, email=user.email) if role_invite: if role_invite.has_expired(): delete_from_db(role_invite, 'Deleted RoleInvite') flash('Sorry, the invitation link has expired.', 'error') return redirect(url_for('.details_view', event_id=event.id)) DataManager.decline_role_invite(role_invite) flash('You have declined the role invite.') return redirect(url_for('.details_view', event_id=event.id)) else: abort(404)
def add_order(event_id): if request.method == 'POST': order = TicketingManager.create_order(request.form, True) return redirect( url_for('.proceed_order', event_id=event_id, order_identifier=order.identifier)) event = DataGetter.get_event(event_id) return render_template('gentelella/users/events/tickets/add_order.html', event=event, event_id=event_id)
def contact_info_view(): user_id = login.current_user.id if request.method == 'POST': DataManager.update_user(request.form, int(user_id), contacts_only_update=True) flash("Your contact info has been updated.", "success") return redirect(url_for('.contact_info_view')) profile = DataGetter.get_user(int(user_id)) return render_template('gentelella/admin/settings/pages/contact_info.html', user=login.current_user)
def index_view(): placeholder_images = DataGetter.get_event_default_images() pages = DataGetter.get_all_pages() custom_placeholder = DataGetter.get_custom_placeholders() subtopics = DataGetter.get_event_subtopics() settings = get_settings() languages_copy = copy.deepcopy(LANGUAGES) try: languages_copy.pop("en") except: pass if request.method == 'POST': dic = dict(request.form.copy()) for key, value in dic.items(): settings[key] = value[0] set_settings(**settings) return render_template( 'gentelella/admin/super_admin/content/content.html', pages=pages, settings=settings, placeholder_images=placeholder_images, subtopics=subtopics, custom_placeholder=custom_placeholder, languages=languages_copy )
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': save_speaker(request, event_id, speaker) flash("Speaker has been saved", "success") return redirect(url_for('.index_view', event_id=event_id))
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 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 trigger_after_purchase_notifications(buyer_email, event_id, event, invoice_id, order_url, resend=False): if not event and not event_id: raise Exception('event or event_id is required') if not event: event = DataGetter.get_event(event_id) admin_msg_setting = DataGetter.get_message_setting_by_action(TICKET_PURCHASED) organizers = DataGetter.get_user_event_roles_by_role_name(event.id, 'organizer') for organizer in organizers: email_notification_setting = DataGetter.get_email_notification_settings_by_event_id(organizer.user.id, event_id) if not admin_msg_setting or \ (email_notification_setting and email_notification_setting.after_ticket_purchase == 1 and admin_msg_setting.user_control_status == 1) or admin_msg_setting.user_control_status == 0: send_email_for_after_purchase_organizers(organizer.user.email, buyer_email, invoice_id, order_url, event.name, event.organizer_name) if resend: send_notif_for_resend(organizer.user, invoice_id, order_url, event.name, buyer_email) else: send_notif_for_after_purchase_organizer(organizer.user, invoice_id, order_url, event.name, buyer_email) coorganizers = DataGetter.get_user_event_roles_by_role_name(event.id, 'coorganizer') for coorganizer in coorganizers: email_notification_setting = DataGetter.get_email_notification_settings_by_event_id(coorganizer.user.id, event_id) if not admin_msg_setting or \ (email_notification_setting and email_notification_setting.after_ticket_purchase == 1 and admin_msg_setting.user_control_status == 1) or admin_msg_setting.user_control_status == 0: send_email_for_after_purchase_organizers(coorganizer.user.email, buyer_email, invoice_id, order_url, event.name, event.organizer_name) if resend: send_notif_for_resend(coorganizer.user, invoice_id, order_url, event.name, buyer_email) else: send_notif_for_after_purchase_organizer(coorganizer.user, invoice_id, order_url, event.name, buyer_email)