Exemple #1
0
 def has_order_tickets(self):
     """Returns True if ticket has already placed orders.
     Else False.
     """
     from app.helpers.helpers import get_count
     count = get_count(OrderTicket.query.filter_by(ticket_id=self.id))
     return bool(count > 0)
Exemple #2
0
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))
    call_for_speakers = DataGetter.get_call_for_papers(event.id).first()
    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,
                           call_for_speakers=call_for_speakers,
                           tracks=tracks,
                           custom_placeholder=custom_placeholder)
def get_new_identifier():
    identifier = str(uuid.uuid4())
    count = get_count(EventInvoice.query.filter_by(identifier=identifier))
    if count == 0:
        return identifier
    else:
        return get_new_identifier()
 def get_new_order_identifier():
     identifier = str(uuid.uuid4())
     count = get_count(Order.query.filter_by(identifier=identifier))
     if count == 0:
         return identifier
     else:
         return TicketingManager.get_new_order_identifier()
Exemple #5
0
def display_event_cfs(identifier, via_hash=False):
    event = get_published_event_or_abort(identifier)
    placeholder_images = DataGetter.get_event_default_images()
    if event.sub_topic:
        custom_placeholder = DataGetter.get_custom_placeholder_by_name(event.sub_topic)
    elif event.topic:
        custom_placeholder = DataGetter.get_custom_placeholder_by_name(event.topic)
    else:
        custom_placeholder = DataGetter.get_custom_placeholder_by_name('Other')
    if not event.has_session_speakers:
        abort(404)

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

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

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

    now = datetime.now()
    state = "now"
    if call_for_speakers.end_date < now:
        state = "past"
    elif call_for_speakers.start_date > now:
        state = "future"
    speakers = DataGetter.get_speakers(event.id).all()
    accepted_sessions_count = get_count(DataGetter.get_sessions(event.id))
    return render_template('gentelella/guest/event/cfs.html', event=event,
                           speaker_form=speaker_form,
                           accepted_sessions_count=accepted_sessions_count,
                           session_form=session_form, call_for_speakers=call_for_speakers,
                           placeholder_images=placeholder_images, state=state, speakers=speakers,
                           via_hash=via_hash, custom_placeholder=custom_placeholder)
Exemple #6
0
def display_event_tickets(identifier):
    event = get_published_event_or_abort(identifier)
    placeholder_images = DataGetter.get_event_default_images()
    if event.sub_topic:
        custom_placeholder = DataGetter.get_custom_placeholder_by_name(event.sub_topic)
    elif event.topic:
        custom_placeholder = DataGetter.get_custom_placeholder_by_name(event.topic)
    else:
        custom_placeholder = DataGetter.get_custom_placeholder_by_name('Other')
    if event.copyright:
        licence_details = DataGetter.get_licence_details(event.copyright.licence)
    else:
        licence_details = None
    module = DataGetter.get_module()
    tickets = DataGetter.get_sales_open_tickets(event.id, True)
    accepted_sessions_count = get_count(DataGetter.get_sessions(event.id))
    timenow_event_tz = datetime.now(pytz.timezone(event.timezone))
    fees = DataGetter.get_fee_settings_by_currency(event.payment_currency)
    return render_template('gentelella/guest/event/details.html',
                           event=event,
                           placeholder_images=placeholder_images,
                           custom_placeholder=custom_placeholder,
                           accepted_sessions_count=accepted_sessions_count,
                           licence_details=licence_details,
                           module=module,
                           timenow_event_tz=timenow_event_tz,
                           current_timezone=get_current_timezone(),
                           tickets=tickets if tickets else [],
                           fees=fees)
def get_new_event_identifier(length=8):
    identifier = binascii.b2a_hex(os.urandom(length / 2))
    count = get_count(Event.query.filter_by(identifier=identifier))
    if count == 0:
        return identifier
    else:
        return get_new_event_identifier()
 def has_order_tickets(self):
     """Returns True if ticket has already placed orders.
     Else False.
     """
     from app.helpers.helpers import get_count
     count = get_count(OrderTicket.query.filter_by(ticket_id=self.id))
     return bool(count > 0)
def get_new_event_identifier(length=8):
    identifier = binascii.b2a_hex(os.urandom(length / 2))
    count = get_count(Event.query.filter_by(identifier=identifier))
    if count == 0:
        return identifier
    else:
        return get_new_event_identifier()
def get_new_identifier():
    identifier = str(uuid.uuid4())
    count = get_count(EventInvoice.query.filter_by(identifier=identifier))
    if count == 0:
        return identifier
    else:
        return get_new_identifier()
def process_event_cfs_speaker(identifier, via_hash=False):
    if request.method == 'GET':
        event = get_published_event_or_abort(identifier)
        placeholder_images = DataGetter.get_event_default_images()
        if event.sub_topic:
            custom_placeholder = DataGetter.get_custom_placeholder_by_name(event.sub_topic)
        elif event.topic:
            custom_placeholder = DataGetter.get_custom_placeholder_by_name(event.topic)
        else:
            custom_placeholder = DataGetter.get_custom_placeholder_by_name('Other')
        if not event.has_session_speakers:
            abort(404)

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

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

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

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

    if request.method == 'POST':
        email = request.form['email']
        event = DataGetter.get_event_by_identifier(identifier)
        if not event.has_session_speakers:
            abort(404)
        DataManager.add_speaker_to_event(request, event.id)
        if login.current_user.is_authenticated:
            flash("You have been registered as Speaker", "success")
            return redirect(url_for('event_detail.display_event_cfs', identifier=identifier))
        else:
            flash(Markup(
                "You have been registered as Speaker. Please login/register with <strong><u>" + email + "</u></strong> to manage it."),
                "success")
            return redirect(url_for('admin.login_view', next=url_for('my_sessions.display_my_sessions_view')))
def display_event_cfs(identifier, via_hash=False):
    event = get_published_event_or_abort(identifier)
    placeholder_images = DataGetter.get_event_default_images()
    if 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 get_new_order_identifier():
     identifier = str(uuid.uuid4())
     count = get_count(Order.query.filter_by(identifier=identifier))
     if count == 0:
         return identifier
     else:
         return TicketingManager.get_new_order_identifier()
def process_event_cfs_speaker(identifier, via_hash=False):
    if request.method == 'GET':
        event = get_published_event_or_abort(identifier)
        placeholder_images = DataGetter.get_event_default_images()
        if event.sub_topic:
            custom_placeholder = DataGetter.get_custom_placeholder_by_name(event.sub_topic)
        elif event.topic:
            custom_placeholder = DataGetter.get_custom_placeholder_by_name(event.topic)
        else:
            custom_placeholder = DataGetter.get_custom_placeholder_by_name('Other')
        if not event.has_session_speakers:
            abort(404)

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

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

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

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

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

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

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

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

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

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

        return redirect(url_for('admin.login_view', next=url_for('my_sessions.display_my_sessions_view')))
def 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')))
Exemple #17
0
    def index_view(self):
        events = DataGetter.get_all_events()[:5]
        number_live_events = get_count(DataGetter.get_all_live_events())
        number_draft_events = get_count(DataGetter.get_all_draft_events())
        number_past_events = get_count(DataGetter.get_all_past_events())
        super_admins = DataGetter.get_all_super_admins()
        admins = DataGetter.get_all_admins()
        registered_users = DataGetter.get_all_registered_users()
        # TODO Fix function and correct this
        organizers = get_count(DataGetter.get_all_user_roles(ORGANIZER))
        co_organizers = get_count(DataGetter.get_all_user_roles(COORGANIZER))
        track_organizers = get_count(
            DataGetter.get_all_user_roles(TRACK_ORGANIZER))
        attendees = get_count(DataGetter.get_all_user_roles(ATTENDEE))
        accepted_sessions = DataGetter.get_all_accepted_sessions()
        rejected_sessions = DataGetter.get_all_rejected_sessions()
        draft_sessions = DataGetter.get_all_draft_sessions()
        email_times = DataGetter.get_email_by_times()

        commit_info = None
        version = None
        on_kubernetes = False
        pods_info = None

        if KubernetesApi.is_on_kubernetes():
            on_kubernetes = True
            kubernetes_api = KubernetesApi()
            pods_info = kubernetes_api.get_pods()['items']
            version = os.getenv(
                'REPOSITORY',
                'https://github.com/fossasia/open-event-orga-server.git')
            commit_info = os.getenv('BRANCH', 'development')
        else:
            version = get_latest_heroku_release()
            commit_info = None
            commit_number = None
            if version:
                commit_number = version['description'].split(' ')[1]
                commit_info = get_commit_info(commit_number)

        return self.render('/gentelella/admin/super_admin/widgets/index.html',
                           events=events,
                           version=version,
                           commit_info=commit_info,
                           on_kubernetes=on_kubernetes,
                           pods_info=pods_info,
                           number_live_events=number_live_events,
                           number_draft_events=number_draft_events,
                           number_past_events=number_past_events,
                           super_admins=super_admins,
                           admins=admins,
                           registered_users=registered_users,
                           organizers=organizers,
                           co_organizers=co_organizers,
                           track_organizers=track_organizers,
                           attendees=attendees,
                           accepted_sessions=accepted_sessions,
                           rejected_sessions=rejected_sessions,
                           draft_sessions=draft_sessions,
                           email_times=email_times)
 def has_order_tickets(self):
     """Returns True if ticket has already placed orders.
     Else False.
     """
     from app.helpers.helpers import get_count
     orders = Order.id.in_( OrderTicket.query.with_entities(OrderTicket.order_id).filter_by(ticket_id=self.id).all() )
     count =  get_count( Order.query.filter(orders).filter(Order.status != 'deleted') )
     # Count is zero if no completed orders are present
     return bool( count > 0)
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
Exemple #20
0
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 get_email_by_times():
        email_times = []
        email_in_last_24 = get_count(
            Mail.query.filter(datetime.datetime.now() - Mail.time <= datetime.timedelta(hours=24)))
        email_in_last_3_days = get_count(
            Mail.query.filter(datetime.datetime.now() - Mail.time <= datetime.timedelta(days=3)))
        email_in_last_7_days = get_count(
            Mail.query.filter(datetime.datetime.now() - Mail.time <= datetime.timedelta(days=7)))
        email_in_last_30_days = get_count(
            Mail.query.filter(datetime.datetime.now() - Mail.time <= datetime.timedelta(days=30)))
        total_emails = get_count(Mail.query)

        email_times.append(email_in_last_24)
        email_times.append(email_in_last_3_days)
        email_times.append(email_in_last_7_days)
        email_times.append(email_in_last_30_days)
        email_times.append(total_emails)

        return email_times
    def get_email_by_times():
        email_times = []
        email_in_last_24 = get_count(
            Mail.query.filter(datetime.datetime.now() - Mail.time <= datetime.timedelta(hours=24)))
        email_in_last_3_days = get_count(
            Mail.query.filter(datetime.datetime.now() - Mail.time <= datetime.timedelta(days=3)))
        email_in_last_7_days = get_count(
            Mail.query.filter(datetime.datetime.now() - Mail.time <= datetime.timedelta(days=7)))
        email_in_last_30_days = get_count(
            Mail.query.filter(datetime.datetime.now() - Mail.time <= datetime.timedelta(days=30)))
        total_emails = get_count(Mail.query)

        email_times.append(email_in_last_24)
        email_times.append(email_in_last_3_days)
        email_times.append(email_in_last_7_days)
        email_times.append(email_in_last_30_days)
        email_times.append(total_emails)

        return email_times
Exemple #23
0
 def has_order_tickets(self):
     """Returns True if ticket has already placed orders.
     Else False.
     """
     from app.helpers.helpers import get_count
     orders = Order.id.in_(
         OrderTicket.query.with_entities(
             OrderTicket.order_id).filter_by(ticket_id=self.id).all())
     count = get_count(
         Order.query.filter(orders).filter(Order.status != 'deleted'))
     # Count is zero if no completed orders are present
     return bool(count > 0)
Exemple #24
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)
Exemple #25
0
def display_event_schedule_xcal(identifier):
    event = get_published_event_or_abort(identifier)
    file_url = event.xcal_url
    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)
    if get_settings()['storage_place'] != "s3" and get_settings()['storage_place'] != 'gs':
        file_url = "file://" + app.config['BASE_DIR'] + file_url.replace("/serve_", "/")
    response = make_response(urlopen(file_url).read())
    response.headers["Content-Type"] = "application/xml"
    return response
def display_event_coc(identifier):
    event = get_published_event_or_abort(identifier)
    placeholder_images = DataGetter.get_event_default_images()
    custom_placeholder = DataGetter.get_custom_placeholders()
    call_for_speakers = DataGetter.get_call_for_papers(event.id).first()
    if not (event.code_of_conduct and event.code_of_conduct != ''
            and event.code_of_conduct != ' '):
        abort(404)
    accepted_sessions_count = get_count(DataGetter.get_sessions(event.id))
    return render_template('gentelella/guest/event/code_of_conduct.html',
                           event=event,
                           placeholder_images=placeholder_images,
                           accepted_sessions_count=accepted_sessions_count,
                           custom_placeholder=custom_placeholder,
                           call_for_speakers=call_for_speakers)
def display_event_sessions(identifier):
    event = get_published_event_or_abort(identifier)
    placeholder_images = DataGetter.get_event_default_images()
    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_session_count = get_count(DataGetter.get_sessions(event.id))
    tracks = DataGetter.get_tracks(event.id)
    return render_template('gentelella/guest/event/sessions.html',
                           event=event,
                           placeholder_images=placeholder_images,
                           tracks=tracks,
                           accepted_sessions_count=accepted_session_count,
                           call_for_speakers=call_for_speakers,
                           custom_placeholder=custom_placeholder)
def display_event_schedule(identifier):
    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)
    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 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_coc(identifier):
    event = get_published_event_or_abort(identifier)
    placeholder_images = DataGetter.get_event_default_images()
    if event.sub_topic:
        custom_placeholder = DataGetter.get_custom_placeholder_by_name(event.sub_topic)
    elif event.topic:
        custom_placeholder = DataGetter.get_custom_placeholder_by_name(event.topic)
    else:
        custom_placeholder = DataGetter.get_custom_placeholder_by_name('Other')
    call_for_speakers = DataGetter.get_call_for_papers(event.id).first()
    if not (event.code_of_conduct and event.code_of_conduct != '' and event.code_of_conduct != ' '):
        abort(404)
    accepted_sessions_count = get_count(DataGetter.get_sessions(event.id))
    return render_template('gentelella/guest/event/code_of_conduct.html', event=event,
                           placeholder_images=placeholder_images,
                           accepted_sessions_count=accepted_sessions_count,
                           custom_placeholder=custom_placeholder,
                           call_for_speakers=call_for_speakers)
def display_event_sessions(identifier):
    event = get_published_event_or_abort(identifier)
    placeholder_images = DataGetter.get_event_default_images()
    if event.sub_topic:
        custom_placeholder = DataGetter.get_custom_placeholder_by_name(event.sub_topic)
    elif event.topic:
        custom_placeholder = DataGetter.get_custom_placeholder_by_name(event.topic)
    else:
        custom_placeholder = DataGetter.get_custom_placeholder_by_name('Other')
    if not event.has_session_speakers:
        abort(404)
    call_for_speakers = DataGetter.get_call_for_papers(event.id).first()
    accepted_session_count = get_count(DataGetter.get_sessions(event.id))
    tracks = DataGetter.get_tracks(event.id)
    return render_template('gentelella/guest/event/sessions.html', event=event,
                           placeholder_images=placeholder_images, tracks=tracks,
                           accepted_sessions_count=accepted_session_count,
                           call_for_speakers=call_for_speakers, custom_placeholder=custom_placeholder)
def display_event_tickets(identifier):
    event = get_published_event_or_abort(identifier)
    placeholder_images = DataGetter.get_event_default_images()
    custom_placeholder = DataGetter.get_custom_placeholders()
    if event.copyright:
        licence_details = DataGetter.get_licence_details(
            event.copyright.licence)
    else:
        licence_details = None
    module = DataGetter.get_module()
    tickets = DataGetter.get_sales_open_tickets(event.id, True)
    accepted_sessions_count = get_count(DataGetter.get_sessions(event.id))
    return render_template('gentelella/guest/event/details.html',
                           event=event,
                           placeholder_images=placeholder_images,
                           custom_placeholder=custom_placeholder,
                           accepted_sessions_count=accepted_sessions_count,
                           licence_details=licence_details,
                           module=module,
                           tickets=tickets if tickets else [])
 def index_view(self):
     events = DataGetter.get_all_events()[:5]
     number_live_events = get_count(DataGetter.get_all_live_events())
     number_draft_events = get_count(DataGetter.get_all_draft_events())
     number_past_events = get_count(DataGetter.get_all_past_events())
     super_admins = DataGetter.get_all_super_admins()
     admins = DataGetter.get_all_admins()
     registered_users = DataGetter.get_all_registered_users()
     # TODO Fix function and correct this
     organizers = get_count(DataGetter.get_all_user_roles(ORGANIZER))
     co_organizers = get_count(DataGetter.get_all_user_roles(COORGANIZER))
     track_organizers = get_count(
         DataGetter.get_all_user_roles(TRACK_ORGANIZER))
     attendees = get_count(DataGetter.get_all_user_roles(ATTENDEE))
     accepted_sessions = DataGetter.get_all_accepted_sessions()
     rejected_sessions = DataGetter.get_all_rejected_sessions()
     draft_sessions = DataGetter.get_all_draft_sessions()
     email_times = DataGetter.get_email_by_times()
     version = get_latest_heroku_release()
     commit_number = None
     commit_info = None
     if version:
         commit_number = version['description'].split(' ')[1]
         commit_info = get_commit_info(commit_number)
     return self.render('/gentelella/admin/super_admin/widgets/index.html',
                        events=events,
                        version=version,
                        commit_info=commit_info,
                        number_live_events=number_live_events,
                        number_draft_events=number_draft_events,
                        number_past_events=number_past_events,
                        super_admins=super_admins,
                        admins=admins,
                        registered_users=registered_users,
                        organizers=organizers,
                        co_organizers=co_organizers,
                        track_organizers=track_organizers,
                        attendees=attendees,
                        accepted_sessions=accepted_sessions,
                        rejected_sessions=rejected_sessions,
                        draft_sessions=draft_sessions,
                        email_times=email_times)
 def index_view(self):
     events = DataGetter.get_all_events()[:5]
     number_live_events = get_count(DataGetter.get_all_live_events())
     number_draft_events = get_count(DataGetter.get_all_draft_events())
     number_past_events = get_count(DataGetter.get_all_past_events())
     super_admins = DataGetter.get_all_super_admins()
     admins = DataGetter.get_all_admins()
     registered_users = DataGetter.get_all_registered_users()
     # TODO Fix function and correct this
     organizers = get_count(DataGetter.get_all_user_roles(ORGANIZER))
     co_organizers = get_count(DataGetter.get_all_user_roles(COORGANIZER))
     track_organizers = get_count(DataGetter.get_all_user_roles(TRACK_ORGANIZER))
     attendees = get_count(DataGetter.get_all_user_roles(ATTENDEE))
     accepted_sessions = DataGetter.get_all_accepted_sessions()
     rejected_sessions = DataGetter.get_all_rejected_sessions()
     draft_sessions = DataGetter.get_all_draft_sessions()
     email_times = DataGetter.get_email_by_times()
     version = get_latest_heroku_release()
     commit_number = None
     commit_info = None
     if version:
         commit_number = version['description'].split(' ')[1]
         commit_info = get_commit_info(commit_number)
     return self.render('/gentelella/admin/super_admin/widgets/index.html',
                        events=events,
                        version=version,
                        commit_info=commit_info,
                        number_live_events=number_live_events,
                        number_draft_events=number_draft_events,
                        number_past_events=number_past_events,
                        super_admins=super_admins,
                        admins=admins,
                        registered_users=registered_users,
                        organizers=organizers,
                        co_organizers=co_organizers,
                        track_organizers=track_organizers,
                        attendees=attendees,
                        accepted_sessions=accepted_sessions,
                        rejected_sessions=rejected_sessions,
                        draft_sessions=draft_sessions,
                        email_times=email_times)
 def get_orders_count_by_type(event_id, type='free'):
     return get_count(Order.query.filter_by(event_id=event_id).filter_by(status='completed')
                      .filter(Ticket.type == type))
 def get_orders_count(event_id, status='completed'):
     return get_count(Order.query.filter_by(event_id=event_id).filter(Order.user_id.isnot(None))
                      .filter_by(status=status))
 def get_invoices_count(event_id, status='completed'):
     return get_count(EventInvoice.query.filter_by(event_id=event_id).filter_by(status=status))
 def get_all_draft_sessions():
     return get_count(Session.query.filter_by(state='pending'))
 def get_orders_count(event_id, status='completed'):
     return get_count(Order.query.filter_by(event_id=event_id).filter(Order.user_id.isnot(None))
                      .filter_by(status=status))
 def get_all_admins():
     return get_count(User.query.filter_by(is_admin=True))
Exemple #41
0
 def get_invoices_count(event_id, status='completed'):
     return get_count(
         EventInvoice.query.filter_by(event_id=event_id).filter_by(
             status=status))
Exemple #42
0
 def get_all_unverified_users():
     return get_count(User.query.filter_by(is_verified=False))
def details_view(event_id):
    event = DataGetter.get_event(event_id)
    checklist = {"": ""}

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

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

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

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

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

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

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

    return render_template('gentelella/users/events/details/details.html',
                           event=event,
                           checklist=checklist,
                           sessions=sessions,
                           settings=get_settings())
Exemple #44
0
def index_view():
    events = DataGetter.get_all_events()[:5]
    number_live_events = get_count(DataGetter.get_all_live_events())
    number_draft_events = get_count(DataGetter.get_all_draft_events())
    number_past_events = get_count(DataGetter.get_all_past_events())
    super_admins = DataGetter.get_all_super_admins()
    admins = DataGetter.get_all_admins()
    registered_users = DataGetter.get_all_registered_users()
    unverified_users = DataGetter.get_all_unverified_users()
    organizers = get_count(DataGetter.get_all_user_roles(ORGANIZER))
    co_organizers = get_count(DataGetter.get_all_user_roles(COORGANIZER))
    track_organizers = get_count(DataGetter.get_all_user_roles(TRACK_ORGANIZER))
    attendees = get_count(DataGetter.get_all_user_roles(ATTENDEE))
    accepted_sessions = get_count(DataGetter.get_all_accepted_sessions())
    rejected_sessions = get_count(DataGetter.get_all_rejected_sessions())
    draft_sessions = get_count(DataGetter.get_all_draft_sessions())
    email_times = DataGetter.get_email_by_times()


    commit_info = None
    heroku_release = None
    on_kubernetes = False
    pods_info = None
    repository = None
    commit_number = None
    branch = None
    on_heroku = False

    if KubernetesApi.is_on_kubernetes():
        on_kubernetes = True
        kubernetes_api = KubernetesApi()
        pods_info = kubernetes_api.get_pods()['items']
        repository = os.getenv('REPOSITORY', 'https://github.com/fossasia/open-event-orga-server.git')
        branch = os.getenv('BRANCH', 'development')
        commit_number = os.getenv('COMMIT_HASH', 'null')
        if commit_number != 'null':
            commit_info = get_commit_info(commit_number)
        else:
            commit_number = None
    elif HerokuApi.is_on_heroku():
        commit_info = None
        on_heroku = True
        heroku_api = HerokuApi()
        heroku_release = heroku_api.get_latest_release()
        if heroku_release:
            commit_number = heroku_release['description'].split(' ')[1]
            commit_info = get_commit_info(commit_number)

    return render_template('gentelella/super_admin/widgets/index.html',
                           events=events,
                           heroku_release=heroku_release,
                           commit_info=commit_info,
                           commit_number=commit_number,
                           on_heroku=on_heroku,
                           on_kubernetes=on_kubernetes,
                           version=app.config['VERSION'],
                           pods_info=pods_info,
                           number_live_events=number_live_events,
                           number_draft_events=number_draft_events,
                           number_past_events=number_past_events,
                           super_admins=super_admins,
                           admins=admins,
                           registered_users=registered_users,
                           unverified_users=unverified_users,
                           repository=repository,
                           branch=branch,
                           organizers=organizers,
                           co_organizers=co_organizers,
                           track_organizers=track_organizers,
                           attendees=attendees,
                           accepted_sessions=accepted_sessions,
                           rejected_sessions=rejected_sessions,
                           draft_sessions=draft_sessions,
                           email_times=email_times,
                           navigation_bar=list_navbar())
 def get_all_accepted_sessions():
     return get_count(Session.query.filter_by(state='accepted'))
 def get_all_rejected_sessions():
     return get_count(Session.query.filter_by(state='rejected'))
 def get_discount_code_used_count(discount_code_id):
     return get_count(Event.query.filter_by(discount_code_id=discount_code_id))
 def get_all_registered_users():
     return get_count(User.query.filter_by(is_verified=True))
 def get_all_unverified_users():
     return get_count(User.query.filter_by(is_verified=False))
def does_not_exist(model, id, event_id):
    return get_count(model.query.filter_by(id=id, event_id=event_id)) == 0
 def get_unread_notif_count(self):
     return get_count(Notification.query.filter_by(user=self, has_read=False))
 def get_all_orders_count_by_type(type='free'):
     return get_count(Order.query.filter_by(status='completed').filter(Ticket.type == type))
 def get_unread_notif_count(self):
     return get_count(
         Notification.query.filter_by(user=self, has_read=False))
Exemple #54
0
 def get_all_admins():
     return get_count(User.query.filter_by(is_admin=True))
Exemple #55
0
 def get_all_registered_users():
     return get_count(User.query.filter_by(is_verified=True))
Exemple #56
0
def does_not_exist(model, id, event_id):
    return get_count(model.query.filter_by(id=id, event_id=event_id)) == 0
def index_view():
    events = DataGetter.get_all_events()[:5]
    number_live_events = get_count(DataGetter.get_all_live_events())
    number_draft_events = get_count(DataGetter.get_all_draft_events())
    number_past_events = get_count(DataGetter.get_all_past_events())
    super_admins = DataGetter.get_all_super_admins()
    admins = DataGetter.get_all_admins()
    registered_users = DataGetter.get_all_registered_users()
    organizers = get_count(DataGetter.get_all_user_roles(ORGANIZER))
    co_organizers = get_count(DataGetter.get_all_user_roles(COORGANIZER))
    track_organizers = get_count(DataGetter.get_all_user_roles(TRACK_ORGANIZER))
    attendees = get_count(DataGetter.get_all_user_roles(ATTENDEE))
    accepted_sessions = get_count(DataGetter.get_all_accepted_sessions())
    rejected_sessions = get_count(DataGetter.get_all_rejected_sessions())
    draft_sessions = get_count(DataGetter.get_all_draft_sessions())
    email_times = DataGetter.get_email_by_times()

    commit_info = None
    heroku_release = None
    on_kubernetes = False
    pods_info = None
    repository = None
    commit_number = None
    branch = None
    on_heroku = False

    if KubernetesApi.is_on_kubernetes():
        on_kubernetes = True
        kubernetes_api = KubernetesApi()
        pods_info = kubernetes_api.get_pods()['items']
        repository = os.getenv('REPOSITORY', 'https://github.com/fossasia/open-event-orga-server.git')
        branch = os.getenv('BRANCH', 'development')
        commit_number = os.getenv('COMMIT_HASH', 'null')
        if commit_number != 'null':
            commit_info = get_commit_info(commit_number)
        else:
            commit_number = None
    elif HerokuApi.is_on_heroku():
        commit_info = None
        on_heroku = True
        heroku_api = HerokuApi()
        heroku_release = heroku_api.get_latest_release()
        if heroku_release:
            commit_number = heroku_release['description'].split(' ')[1]
            commit_info = get_commit_info(commit_number)

    return render_template('gentelella/admin/super_admin/widgets/index.html',
                           events=events,
                           heroku_release=heroku_release,
                           commit_info=commit_info,
                           commit_number=commit_number,
                           on_heroku=on_heroku,
                           on_kubernetes=on_kubernetes,
                           version=app.config['VERSION'],
                           pods_info=pods_info,
                           number_live_events=number_live_events,
                           number_draft_events=number_draft_events,
                           number_past_events=number_past_events,
                           super_admins=super_admins,
                           admins=admins,
                           registered_users=registered_users,
                           repository=repository,
                           branch=branch,
                           organizers=organizers,
                           co_organizers=co_organizers,
                           track_organizers=track_organizers,
                           attendees=attendees,
                           accepted_sessions=accepted_sessions,
                           rejected_sessions=rejected_sessions,
                           draft_sessions=draft_sessions,
                           email_times=email_times,
                           navigation_bar=list_navbar())