Example #1
0
 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)
Example #3
0
    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)
Example #5
0
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")
Example #6
0
 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
Example #7
0
 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)
Example #9
0
 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))
Example #12
0
 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)
Example #14
0
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)
Example #20
0
 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)
Example #25
0
 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
Example #28
0
 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)
Example #30
0
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)
Example #34
0
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, 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 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)
Example #39
0
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)
Example #41
0
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]})
Example #42
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)
Example #43
0
 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)
Example #45
0
 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
Example #47
0
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')))
Example #48
0
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)
Example #50
0
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)
Example #51
0
 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)
Example #52
0
 def index_view(self):
     abort(404)
Example #53
0
    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)
Example #54
0
 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)
Example #55
0
    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)
Example #56
0
def get_session_or_throw(session_id):
    session = DataGetter.get_session(session_id)
    if not session:
        abort(404)
    return session
Example #57
0
 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)