def get(self, cluster_id, provider_name): """List cluster provider details""" cluster = self._find_cluster(cluster_id) for provider in cluster.providers: if provider.name == provider_name: return provider abort(404, 'No such provider')
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 post(self): hj = request.json self.validate(hj) hj = hj['data'][0] taxi = TaxiModel.get_or_404(hj['taxi_id']) operateur = security_models.User.filter_by_or_404( email=hj['operateur'], message='Unable to find the taxi\'s operateur') desc = taxi.vehicle.get_description(operateur) if not desc: abort(404, message='Unable to find taxi\'s description') if not taxi.is_free() or not taxi.is_fresh(hj['operateur']): abort(403, message="The taxi is not available") customer = CustomerModel.query.filter_by(id=hj['customer_id'], operateur_id=current_user.id).first() if not customer: customer = CustomerModel(hj['customer_id']) db.session.add(customer) hail = HailModel() hail.customer_id = hj['customer_id'] hail.customer_lon = hj['customer_lon'] hail.customer_lat = hj['customer_lat'] hail.customer_address = hj['customer_address'] hail.customer_phone_number = hj['customer_phone_number'] hail.taxi_id = hj['taxi_id'] hail.operateur_id = operateur.id hail.status = 'received' send_request_operator.apply_async(args=[hail.id, operateur.id, current_app.config['ENV']], queue='send_hail_'+current_app.config['NOW']) db.session.add(hail) db.session.commit() return {"data": [hail]}, 201
def view_invoice(invoice_identifier): invoice = InvoicingManager.get_invoice_by_identifier(invoice_identifier) if not invoice: abort(404) if invoice.status == 'completed': return redirect( url_for('event_invoicing.view_invoice_after_payment', invoice_identifier=invoice_identifier)) pay_by_stripe = False pay_by_paypal = False stripe_publishable_key = "No Key Set" if StripePaymentsManager.get_credentials(): pay_by_stripe = True stripe_publishable_key = StripePaymentsManager.get_credentials()['PUBLISHABLE_KEY'] if PayPalPaymentsManager.get_credentials(): pay_by_paypal = True return render_template('gentelella/guest/invoicing/invoice_pre_payment.html', invoice=invoice, event=invoice.event, countries=list(pycountry.countries), pay_by_stripe=pay_by_stripe, pay_by_paypal=pay_by_paypal, stripe_publishable_key=stripe_publishable_key)
def driver_form(): form = None if request.args.get("id"): driver = taxis_models.Driver.query.get(request.args.get("id")) if not driver: abort(404, message="Unable to find driver") if not driver.can_be_edited_by(current_user): abort(403, message="You can't edit this driver") form = DriverUpdateForm(obj=driver) else: form = DriverCreateForm() if request.method == "POST": if request.args.get("id"): driver.last_update_at = datetime.now().isoformat() form.populate_obj(driver) if form.validate(): db.session.commit() return redirect(url_for('api.drivers')) else: driver = taxis_models.Driver() form.populate_obj(driver) db.session.add(driver) db.session.commit() return redirect(url_for('api.drivers')) return render_template('forms/driver.html', form=form, form_method="POST", submit_value="Modifier")
def filter_by_or_404(cls, **kwargs): message = kwargs.pop('message', 'Unable to find {} for {}'.format( cls.__tablename__, kwargs)) v = cls.query.filter_by(**kwargs).first() if not v: abort(404, message=message) return v
def put(self): args = parser_put.parse_args() # check if not already an authorization record for the username and the application existing_auth = ( Auth.query.join(Service) .join(Application) .join(User) .filter(User.username == args.username) .filter(Application.name == args.application) ) if existing_auth.count() > 0: abort( 400, "{} already exists. There can be only one authorization record per username/application".format( str(existing_auth[0]) ), ) # check if the authorization is not already in DB exact_auth = ( Auth.query.join(Service) .join(Application) .join(User) .filter(User.username == args.username) .filter(Application.name == args.application) .filter(Service.hostname == args.hostname) .filter(Service.port == args.port) ) if exact_auth.count() <= 0: return self._jsonify_auth(self._add_authorization(args)), 201 else: return self._jsonify_auth(exact_auth[0]), 200
def display_event_cfs(self, identifier, via_hash=False): 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() accepted_sessions = DataGetter.get_sessions(event.id) 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() return self.render('/gentelella/guest/event/cfs.html', event=event, accepted_sessions=accepted_sessions, speaker_form=speaker_form, 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 post(self): hj = request.json self.validate(hj) taxi_json = hj['data'][0] departement = administrative_models.Departement.filter_by_or_404( numero=str(taxi_json['driver']['departement'])) driver = taxis_models.Driver.filter_by_or_404( professional_licence=taxi_json['driver']['professional_licence'], departement_id=departement.id) vehicle = taxis_models.Vehicle.filter_by_or_404( licence_plate=taxi_json['vehicle']['licence_plate']) ads = taxis_models.ADS.filter_by_or_404( numero=taxi_json['ads']['numero'],insee=taxi_json['ads']['insee']) taxi = taxis_models.Taxi.query.filter_by(driver_id=driver.id, vehicle_id=vehicle.id, ads_id=ads.id).first() if taxi_json.get('id', None): taxi = taxis_models.Taxi.query.get(taxi_json['id']) if not taxi: taxi = taxis_models.Taxi(driver=driver, vehicle=vehicle, ads=ads, id=taxi_json.get('id', None)) if 'status' in taxi_json: try: taxi.status = taxi_json['status'] except AssertionError: abort(400, message='Invalid status') db.session.commit() return {'data':[taxi]}, 201
def user_role_invite(self, event_id, hash): event = DataGetter.get_event(event_id) user = login.current_user role_invite = DataGetter.get_event_role_invite(email=user.email, event_id=event.id, hash=hash) 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)) 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 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 post(self): db = current_app.extensions['sqlalchemy'].db hj = request.json taxi_json = hj['data'][0] departement = administrative_models.Departement.filter_by_or_404( numero=str(taxi_json['driver']['departement'])) driver = taxis_models.Driver.filter_by_or_404( professional_licence=taxi_json['driver']['professional_licence'], departement_id=departement.id) vehicle = taxis_models.Vehicle.filter_by_or_404( licence_plate=taxi_json['vehicle']['licence_plate']) ads = taxis_models.ADS.filter_by_or_404( numero=taxi_json['ads']['numero'],insee=taxi_json['ads']['insee']) taxi = taxis_models.Taxi.query.filter_by(driver_id=driver.id, vehicle_id=vehicle.id, ads_id=ads.id).first() if taxi_json.get('id', None): if current_user.has_role('admin'): taxi = taxis_models.Taxi.query.get(taxi_json['id']) else: del taxi_json['id'] if not taxi: taxi = taxis_models.Taxi(driver=driver, vehicle=vehicle, ads=ads, id=taxi_json.get('id', None)) #This can happen if this is posted with a admin user if 'status' in taxi_json and taxi.vehicle.description: try: taxi.status = taxi_json['status'] except AssertionError: abort(400, message='Invalid status') db.session.add(taxi) db.session.commit() return {'data':[taxi]}, 201
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 trash_view(user_id): profile = DataGetter.get_user(user_id) if profile.is_super_admin: abort(403) trash_user(user_id) flash("User" + user_id + " has been deleted.", "danger") return redirect(url_for('.index_view'))
def post(self, source_type): if source_type == 'json': file_path = get_file_from_request(['zip']) elif source_type == 'pentabarf': file_path = get_file_from_request(['xml']) elif source_type == 'ical': file_path = get_file_from_request(['ical']) else: file_path = None abort(404) from helpers.tasks import import_event_task task = import_event_task.delay(file=file_path, source_type=source_type, creator_id=g.user.id) # store import job in db try: create_import_job(task.id) except Exception: pass # if testing if current_app.config.get('CELERY_ALWAYS_EAGER'): send_import_mail(task.id, task.get()) TASK_RESULTS[task.id] = { 'result': task.get(), 'state': task.state } return jsonify( task_url=url_for('api.extras_celery_task', task_id=task.id) )
def decorated_function(*args, **kwargs): user = login.current_user event_id = kwargs['event_id'] if user.is_staff: return f(*args, **kwargs) if not user.is_registrar(event_id): abort(403) return f(*args, **kwargs)
def decorated_function(*args, **kwargs): user = User.query.get(login.current_user.id) event_id = kwargs['event_id'] if user.is_staff is True: return f(*args, **kwargs) if user.is_organizer(event_id) is True or user.is_coorganizer(event_id) is True: return f(*args, **kwargs) abort(403)
def decorated_function(*args, **kwargs): user = login.current_user event_id = kwargs['event_id'] if user.is_staff: return f(*args, **kwargs) if user.is_organizer(event_id) or user.is_coorganizer(event_id): return f(*args, **kwargs) abort(403)
def decorated_function(*args, **kwargs): user = login.current_user event_id = kwargs['event_id'] if user.is_staff is True: return f(*args, **kwargs) if user.is_moderator(event_id) is False: abort(403) return f(*args, **kwargs)
def delete(self, cluster_id, provider_name): """Delete cluster provider""" cluster = self._find_cluster(cluster_id) for provider in cluster.providers: if provider.name == provider_name: cluster.providers.remove(provider) cluster.save() return provider abort(404, 'No such provider')
def _error_abort(code, message): """Abstraction over restplus `abort`. Returns error with the status code and message. """ error = { 'code': code, 'message': message } abort(code, error=error)
def display_event_coc(self, event_id): event = get_published_event_or_abort(event_id) accepted_sessions = DataGetter.get_sessions(event_id) call_for_speakers = DataGetter.get_call_for_papers(event_id).first() if not (event.code_of_conduct and event.code_of_conduct != '' and event.code_of_conduct != ' '): abort(404) return self.render('/gentelella/guest/event/code_of_conduct.html', event=event, accepted_sessions=accepted_sessions, call_for_speakers=call_for_speakers)
def get_published_event_or_abort(event_id): event = DataGetter.get_event(event_id=event_id) if not event or (event.state != u'Published' and event.state != 'Published'): user = login.current_user if not login.current_user.is_authenticated or (not user.is_organizer(event_id) and not user.is_coorganizer(event_id) and not user.is_track_organizer(event_id)): abort(404) return event
def display_event_schedule(self, event_id): event = get_published_event_or_abort(event_id) if not event.has_session_speakers: abort(404) tracks = DataGetter.get_tracks(event_id) accepted_sessions = DataGetter.get_sessions(event_id) if not accepted_sessions or not event.schedule_published_on: abort(404) return self.render('/gentelella/guest/event/schedule.html', event=event, accepted_sessions=accepted_sessions, tracks=tracks)
def get_descriptions(self, taxi_id): taxis = taxis_models.RawTaxi.get([taxi_id]) if not taxis: abort(404, message='Unable to find taxi "{}"'.format(taxi_id)) taxis = taxis[0] t = [t for t in taxis if current_user.id == t['vehicle_description_added_by']] if not t: abort(403, message='You\'re not authorized to view this taxi') v = redis_store.hget('taxi:{}'.format(taxi_id), current_user.email) return t, int(v.split(' ')[0]) if v else None
def view_order_tickets_after_payment_pdf(order_identifier): order = TicketingManager.get_and_set_expiry(order_identifier) if not order or order.status != 'completed': abort(404) pdf = create_pdf(render_template('gentelella/guest/ticketing/pdf/ticket.html', order=order)) response = make_response(pdf.getvalue()) response.headers['Content-Type'] = 'application/pdf' response.headers['Content-Disposition'] = \ 'inline; filename=%s-Ticket.pdf' % order.event.name return response
def display_event_schedule_xcal(identifier): event = get_published_event_or_abort(identifier) if not event.has_session_speakers: abort(404) accepted_sessions_count = get_count(DataGetter.get_sessions(event.id)) if accepted_sessions_count == 0 or not event.schedule_published_on: abort(404) response = make_response(XCalExporter.export(event.id)) response.headers["Content-Type"] = "application/xml" return response
def filter_by_or_404(cls, **kwargs): message = kwargs.pop('message', 'Unable to find {} for {}'.format( cls.__tablename__, kwargs)) query = cls.query.filter_by(**kwargs) if hasattr(cls, 'added_at'): query = query.order_by(cls.added_at.desc()) v = query.first() if not v: abort(404, message=message) return v
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) flash("An email with the ticket has also been sent to your email account.") 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 delete_view(user_id): profile = DataGetter.get_user(user_id) if profile.is_super_admin: abort(403) if request.method == "GET": transaction = transaction_class(Event) transaction.query.filter_by(user_id=user_id).delete() delete_from_db(profile, "User's been permanently removed") flash("User" + user_id + " has been permanently deleted.", "danger") return redirect(url_for('.index_view'))
def display_event_schedule(identifier): event = get_published_event_or_abort(identifier) placeholder_images = DataGetter.get_event_default_images() if event.sub_topic: custom_placeholder = DataGetter.get_custom_placeholder_by_name( event.sub_topic) elif event.topic: custom_placeholder = DataGetter.get_custom_placeholder_by_name( event.topic) else: custom_placeholder = DataGetter.get_custom_placeholder_by_name('Other') if not event.has_session_speakers: abort(404) tracks = DataGetter.get_tracks(event.id) accepted_sessions_count = get_count(DataGetter.get_sessions(event.id)) if accepted_sessions_count == 0 or not event.schedule_published_on: abort(404) return render_template('gentelella/guest/event/schedule.html', event=event, placeholder_images=placeholder_images, accepted_sessions_count=accepted_sessions_count, tracks=tracks, custom_placeholder=custom_placeholder)
def paypal_callback(order_identifier, function): order = TicketingManager.get_order_by_identifier(order_identifier) if not order or order.status == 'expired': abort(404) if function == 'cancel': order.status = 'expired' save_to_db(order) return redirect( url_for('event_detail.display_event_detail_home', identifier=order.event.identifier)) elif function == 'success': status, result = TicketingManager.charge_paypal_order_payment(order) if status: return redirect( url_for('.view_order', order_identifier=order_identifier)) else: flash( "An error occurred while processing your transaction. " + str(result), "danger") return redirect( url_for('.show_transaction_error', order_identifier=order_identifier)) abort(404)
def display_session_view(self, 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 self.render( '/gentelella/admin/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) 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() 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 view_order(order_identifier): order = TicketingManager.get_and_set_expiry(order_identifier) if not order or order.status == 'expired': abort(404) if order.status == 'completed' or order.status == 'placed': flash( "An email with the ticket has also been sent to your email account." ) return redirect( url_for('ticketing.view_order_after_payment', order_identifier=order_identifier)) if order.event.stripe: stripe_publishable_key = order.event.stripe.stripe_publishable_key else: stripe_publishable_key = "No Key Set" fees = DataGetter.get_fee_settings_by_currency( order.event.payment_currency) return render_template('gentelella/guest/ticketing/order_pre_payment.html', order=order, event=order.event, countries=list(pycountry.countries), stripe_publishable_key=stripe_publishable_key, fees=fees)
def display_event_cfs(self, event_id): event = get_published_event_or_abort(event_id) call_for_speakers = DataGetter.get_call_for_papers(event_id).first() if not call_for_speakers: abort(404) form_elems = DataGetter.get_custom_form_elements(event_id).first() 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: sate = "future" return self.render('/gentelella/guest/event/cfs.html', event=event, speaker_form=speaker_form, session_form=session_form, call_for_speakers=call_for_speakers, state=state)
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_event_cfs_via_hash(self, 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() custom_placeholder = DataGetter.get_custom_placeholders() if not event.has_session_speakers: abort(404) accepted_sessions = DataGetter.get_sessions(event.id) if not call_for_speakers: abort(404) if request.method == 'POST': return self.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() 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() return self.render('/gentelella/guest/event/cfs.html', event=event, accepted_sessions=accepted_sessions, speaker_form=speaker_form, 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 get_user(user_id): user = [user for user in users if user['id'] == user_id] if len(user) == 0: abort(404) return jsonify({"user": user[0]})
def decorated_function(*args, **kwargs): user = User.query.get(login.current_user.id) event_id = kwargs['event_id'] url = request.url if user.is_staff is True: return f(*args, **kwargs) if '/create/' in url or '/new/' in url: if '/events/create/' in url: return f(*args, **kwargs) if 'session' in url: if user.can_create(Session, event_id) is True: return f(*args, **kwargs) if 'track' in url: if user.can_create(Track, event_id) is True: return f(*args, **kwargs) if 'speaker' in url: if user.can_create(Speaker, event_id) is True: return f(*args, **kwargs) if 'sponsor' in url: if user.can_create(Sponsor, event_id) is True: return f(*args, **kwargs) if 'microlocation' in url: if user.can_create(Microlocation, event_id) is True: return f(*args, **kwargs) abort(403) if '/edit/' in url: if 'events/' + event_id + '/edit/' in url: if user.is_organizer(event_id) is True or user.is_coorganizer(event_id) is True: return f(*args, **kwargs) if 'session' in url: if user.can_update(Session, event_id) is True: return f(*args, **kwargs) if 'track' in url: if user.can_update(Track, event_id) is True: return f(*args, **kwargs) if 'speaker' in url: if user.can_update(Speaker, event_id) is True: return f(*args, **kwargs) if 'sponsor' in url: if user.can_update(Sponsor, event_id) is True: return f(*args, **kwargs) if 'microlocation' in url: if user.can_update(Microlocation, event_id) is True: return f(*args, **kwargs) abort(403) if '/delete/' in url: if 'events/' + event_id + '/delete/' in url: if user.is_organizer(event_id) is True or user.is_coorganizer(event_id) is True: return f(*args, **kwargs) if 'session' in url: if user.can_delete(Session, event_id) is True: return f(*args, **kwargs) if 'track' in url: if user.can_delete(Track, event_id) is True: return f(*args, **kwargs) if 'speaker' in url: if user.can_delete(Speaker, event_id) is True: return f(*args, **kwargs) if 'sponsor' in url: if user.can_delete(Sponsor, event_id) is True: return f(*args, **kwargs) if 'microlocation' in url: if user.can_delete(Microlocation, event_id) is True: return f(*args, **kwargs) abort(403)
def decorated_function(*args, **kwargs): user = User.query.get(login.current_user.id) if user.is_admin is False: abort(403) return f(*args, **kwargs)
def display_event_schedule(self, event_id): call_for_speakers = DataGetter.get_call_for_papers(event_id).first() event = get_published_event_or_abort(event_id) if not event.schedule_published_on: abort(404) return self.render('/gentelella/guest/event/schedule.html', event=event, call_for_speakers=call_for_speakers)
def _handle_view(self, name, **kwargs): if not self.is_accessible(): return redirect(url_for('admin.login_view', next=request.url)) else: if not current_user.can_access_panel(self.PANEL_NAME) or not current_user.is_staff: abort(403)
def get_speaker_or_throw(speaker_id): session = DataGetter.get_speaker(speaker_id) if not session: abort(404) return session
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, show_speaker_modal=True)) else: flash( Markup( "You have been registered as Speaker. Please login/register with <strong><u>" + email + "</u></strong> to manage it."), "success") return redirect( url_for('admin.login_view', next=url_for('my_sessions.display_my_sessions_view')))
def process_event_cfs(identifier, via_hash=False): if request.method == 'GET': event = get_published_event_or_abort(identifier) placeholder_images = DataGetter.get_event_default_images() if event.sub_topic: custom_placeholder = DataGetter.get_custom_placeholder_by_name( event.sub_topic) elif event.topic: custom_placeholder = DataGetter.get_custom_placeholder_by_name( event.topic) else: custom_placeholder = DataGetter.get_custom_placeholder_by_name( 'Other') if not event.has_session_speakers: abort(404) call_for_speakers = DataGetter.get_call_for_papers(event.id).first() if not call_for_speakers or (not via_hash and call_for_speakers.privacy == 'private'): abort(404) form_elems = DataGetter.get_custom_form_elements(event.id) speaker_form = json.loads(form_elems.speaker_form) session_form = json.loads(form_elems.session_form) now = datetime.now( pytz.timezone(event.timezone if ( event.timezone and event.timezone != '') else 'UTC')) start_date = pytz.timezone(event.timezone).localize( call_for_speakers.start_date) end_date = pytz.timezone(event.timezone).localize( call_for_speakers.end_date) state = "now" if end_date < now: state = "past" elif start_date > now: state = "future" speakers = DataGetter.get_speakers(event.id).all() user_speaker = DataGetter.get_speaker_by_email_event( login.current_user.email, event.id) accepted_sessions_count = get_count(DataGetter.get_sessions(event.id)) return render_template('gentelella/guest/event/cfs_new_session.html', event=event, speaker_form=speaker_form, user_speaker=user_speaker, accepted_sessions_count=accepted_sessions_count, session_form=session_form, call_for_speakers=call_for_speakers, placeholder_images=placeholder_images, state=state, speakers=speakers, via_hash=via_hash, custom_placeholder=custom_placeholder, from_path="cfs") if request.method == 'POST': event = DataGetter.get_event_by_identifier(identifier) if not event.has_session_speakers: abort(404) if login.current_user.is_authenticated: DataManager.add_session_to_event(request, event.id, no_name=True) flash("Your session proposal has been submitted", "success") return redirect( url_for('my_sessions.display_my_sessions_view', event_id=event.id)) return redirect( url_for('admin.login_view', next=url_for('my_sessions.display_my_sessions_view')))
def decorated_function(*args, **kwargs): user = login.current_user event_id = kwargs['event_id'] url = request.url if user.is_staff: return f(*args, **kwargs) if '/create/' in url or '/new/' in url: if '/events/create/' in url: return f(*args, **kwargs) if 'session' in url: if user.can_create(Session, event_id): return f(*args, **kwargs) if 'track' in url: if user.can_create(Track, event_id): return f(*args, **kwargs) if 'speaker' in url: if user.can_create(Speaker, event_id): return f(*args, **kwargs) if 'sponsor' in url: if user.can_create(Sponsor, event_id): return f(*args, **kwargs) if 'microlocation' in url: if user.can_create(Microlocation, event_id): return f(*args, **kwargs) ''' #This code to be implemented after service and permissions fixed properly if 'discounts' in url: if user.can_create(DiscountCode, event_id): return f(*args, **kwargs) if 'access' in url: if user.can_create(AccessCode, event_id): return f(*args, **kwargs)''' if '/edit/' in url: if 'events/' + str(event_id) + '/edit/' in url: if user.is_organizer(event_id) or user.is_coorganizer( event_id): return f(*args, **kwargs) if 'session' in url: if user.can_update(Session, event_id): return f(*args, **kwargs) if 'track' in url: if user.can_update(Track, event_id): return f(*args, **kwargs) if 'speaker' in url: if user.can_update(Speaker, event_id): return f(*args, **kwargs) if 'sponsor' in url: if user.can_update(Sponsor, event_id): return f(*args, **kwargs) if 'microlocation' in url: if user.can_update(Microlocation, event_id): return f(*args, **kwargs) ''' #This code to be implemented after service and permissions fixed properly if 'discounts' in url: if user.can_update(DiscountCode, event_id): return f(*args, **kwargs) if 'access' in url: if user.can_update(AccessCode, event_id): return f(*args, **kwargs)''' if '/delete/' in url or '/trash/' in url: if 'events/' + str(event_id) + '/delete/' in url: if user.is_organizer(event_id) or user.is_coorganizer( event_id): return f(*args, **kwargs) if 'events/' + str(event_id) + '/trash/' in url: if user.is_organizer(event_id) or user.is_coorganizer( event_id): return f(*args, **kwargs) if 'session' in url: if user.can_delete(Session, event_id): return f(*args, **kwargs) if 'track' in url: if user.can_delete(Track, event_id): return f(*args, **kwargs) if 'speaker' in url: if user.can_delete(Speaker, event_id): return f(*args, **kwargs) if 'sponsor' in url: if user.can_delete(Sponsor, event_id): return f(*args, **kwargs) if 'microlocation' in url: if user.can_delete(Microlocation, event_id): return f(*args, **kwargs) ''' #This code to be implemented after service and permissions fixed properly if 'discounts' in url: if user.can_delete(DiscountCode, event_id): return f(*args, **kwargs) if 'access' in url: if user.can_delete(AccessCode, event_id): return f(*args, **kwargs)''' if 'events/' + str(event_id) + '/' in url: if not user.has_role(event_id): abort(403) if user.is_registrar(event_id): if '/attendees' in url: return f(*args, **kwargs) elif not request.is_xhr: return redirect( url_for('event_ticket_sales.display_attendees', event_id=event_id)) else: abort(403) if user.is_organizer(event_id) or user.is_coorganizer(event_id): return f(*args, **kwargs) abort(403)
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_event(email, event.id) 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, user_speaker=user_speaker, existing_sessions=existing_sessions)
def view_order_after_payment(self, order_identifier): order = TicketingManager.get_and_set_expiry(order_identifier) if not order or order.status != 'completed': abort(404) return self.render('/gentelella/guest/ticketing/order_post_payment.html', order=order, event=order.event)
def index_view(self): abort(404)
def decorated_function(*args, **kwargs): user = login.current_user event_id = kwargs['event_id'] url = request.url if user.is_staff: return f(*args, **kwargs) if 'events/' + str(event_id) + '/' in url: if not user.has_role(event_id): abort(403) if user.is_registrar(event_id): if '/attendees' in url: return f(*args, **kwargs) else: abort(403) if '/create/' in url or '/new/' in url: if '/events/create/' in url: return f(*args, **kwargs) if 'session' in url: if user.can_create(Session, event_id): return f(*args, **kwargs) if 'track' in url: if user.can_create(Track, event_id): return f(*args, **kwargs) if 'speaker' in url: if user.can_create(Speaker, event_id): return f(*args, **kwargs) if 'sponsor' in url: if user.can_create(Sponsor, event_id): return f(*args, **kwargs) if 'microlocation' in url: if user.can_create(Microlocation, event_id): return f(*args, **kwargs) abort(403) if '/edit/' in url: if 'events/' + str(event_id) + '/edit/' in url: if user.is_organizer(event_id) or user.is_coorganizer( event_id): return f(*args, **kwargs) if 'session' in url: if user.can_update(Session, event_id): return f(*args, **kwargs) if 'track' in url: if user.can_update(Track, event_id): return f(*args, **kwargs) if 'speaker' in url: if user.can_update(Speaker, event_id): return f(*args, **kwargs) if 'sponsor' in url: if user.can_update(Sponsor, event_id): return f(*args, **kwargs) if 'microlocation' in url: if user.can_update(Microlocation, event_id): return f(*args, **kwargs) abort(403) if '/delete/' in url or '/trash/' in url: if 'events/' + str(event_id) + '/delete/' in url: if user.is_organizer(event_id) or user.is_coorganizer( event_id): return f(*args, **kwargs) if 'events/' + str(event_id) + '/trash/' in url: if user.is_organizer(event_id) or user.is_coorganizer( event_id): return f(*args, **kwargs) if 'session' in url: if user.can_delete(Session, event_id): return f(*args, **kwargs) if 'track' in url: if user.can_delete(Track, event_id): return f(*args, **kwargs) if 'speaker' in url: if user.can_delete(Speaker, event_id): return f(*args, **kwargs) if 'sponsor' in url: if user.can_delete(Sponsor, event_id): return f(*args, **kwargs) if 'microlocation' in url: if user.can_delete(Microlocation, event_id): return f(*args, **kwargs) abort(403)
def display_event_cfs_via_hash(self, hash): call_for_speakers = CallForPaper.query.filter_by(hash=hash).first() if not call_for_speakers: abort(404) return self.display_event_cfs(call_for_speakers.event_id, True)
def decorated_function(*args, **kwargs): if 'event_id' not in kwargs: return f(*args, **kwargs) event_id = kwargs['event_id'] if 'session_id' in kwargs and does_not_exist( Session, kwargs['session_id'], event_id): abort(404) if 'microlocation_id' in kwargs and does_not_exist( Microlocation, kwargs['microlocation_id'], event_id): abort(404) if 'sponsor_id' in kwargs and does_not_exist( Sponsor, kwargs['sponsor_id'], event_id): abort(404) if 'speaker_id' in kwargs and does_not_exist( Speaker, kwargs['speaker_id'], event_id): abort(404) if 'discount_code_id' in kwargs and does_not_exist( DiscountCode, kwargs['discount_code_id'], event_id): abort(404) if 'ticket_id' in kwargs and does_not_exist( Ticket, kwargs['ticket_id'], event_id): abort(404) if 'uer_id' in kwargs and does_not_exist(UsersEventsRoles, kwargs['uer_id'], event_id): abort(404) return f(*args, **kwargs)
def get_session_or_throw(session_id): session = DataGetter.get_session(session_id) if not session: abort(404) return session
def decorated_function(*args, **kwargs): user = login.current_user if not user.is_admin: abort(403) return f(*args, **kwargs)
def _handle_view(self, name, **kwargs): if not self.is_accessible(): return redirect(url_for('admin.login_view', next=request.url)) else: if not login.current_user.is_super_admin: abort(403)