Пример #1
0
def index_view():
    live_events = DataGetter.get_all_live_events()
    draft_events = DataGetter.get_all_draft_events()
    past_events = DataGetter.get_all_past_events()
    all_events = DataGetter.get_all_events()
    trash_events = DataGetter.get_trash_events()
    free_ticket_count = {}
    paid_ticket_count = {}
    donation_ticket_count = {}
    max_free_ticket = {}
    max_paid_ticket = {}
    max_donation_ticket = {}
    for event in all_events:
        free_ticket_count[event.id] = TicketingManager.get_orders_count_by_type(event.id, type='free')
        max_free_ticket[event.id] = TicketingManager.get_max_orders_count(event.id, type='free')
        paid_ticket_count[event.id] = TicketingManager.get_orders_count_by_type(event.id, type='paid')
        max_paid_ticket[event.id] = TicketingManager.get_max_orders_count(event.id, type='paid')
        donation_ticket_count[event.id] = TicketingManager.get_orders_count_by_type(event.id, type='donation')
        max_donation_ticket[event.id] = TicketingManager.get_max_orders_count(event.id, type='donation')
    return render_template('gentelella/admin/super_admin/events/events.html',
                           live_events=live_events,
                           draft_events=draft_events,
                           past_events=past_events,
                           all_events=all_events,
                           trash_events=trash_events,
                           free_ticket_count=free_ticket_count,
                           paid_ticket_count=paid_ticket_count,
                           donation_ticket_count=donation_ticket_count,
                           max_free_ticket=max_free_ticket,
                           max_paid_ticket=max_paid_ticket,
                           max_donation_ticket=max_donation_ticket,
                           navigation_bar=list_navbar())
Пример #2
0
def index_view():
    mails = DataGetter.get_all_mails(count=300)
    notifications = DataGetter.get_all_notifications(count=300)
    activities = DataGetter.get_all_activities(count=600)

    on_heroku = HerokuApi.is_on_heroku()
    on_kubernetes = KubernetesApi.is_on_kubernetes()
    pods_info = None
    logplex_url = None

    if on_kubernetes:
        kubernetes_api = KubernetesApi()
        pods_info = kubernetes_api.get_pods()['items']
    elif on_heroku:
        heroku_api = HerokuApi()
        logplex_url = heroku_api.get_logplex_url()

    return render_template(
        'gentelella/admin/super_admin/reports/reports.html',
        mails=mails,
        notifications=notifications,
        on_heroku=on_heroku,
        logplex_url=logplex_url,
        on_kubernetes=on_kubernetes,
        pods_info=pods_info,
        activities=activities,
        navigation_bar=list_navbar()
    )
Пример #3
0
def index_view():
    active_user_list = []
    trash_user_list = []
    all_user_list = []
    active_users = DataGetter.get_active_users()
    trash_users = DataGetter.get_trash_users()
    all_users = DataGetter.get_all_users()
    custom_sys_roles = DataGetter.get_custom_sys_roles()
    for user in all_users:
        event_roles = DataGetter.get_event_roles_for_user(user.id)
        all_user_list.append({
            'user': user,
            'event_roles': event_roles}
        )
    for user in active_users:
        event_roles = DataGetter.get_event_roles_for_user(user.id)
        active_user_list.append({
            'user': user,
            'event_roles': event_roles, }
        )
    for user in trash_users:
        event_roles = DataGetter.get_event_roles_for_user(user.id)
        trash_user_list.append({
            'user': user,
            'event_roles': event_roles, }
        )
    return render_template('gentelella/admin/super_admin/users/users.html',
                           active_user_list=active_user_list,
                           trash_user_list=trash_user_list,
                           all_user_list=all_user_list,
                           custom_sys_roles=custom_sys_roles,
                           navigation_bar=list_navbar())
Пример #4
0
def index_view():
    placeholder_images = DataGetter.get_event_default_images()
    pages = DataGetter.get_all_pages()
    custom_placeholder = DataGetter.get_custom_placeholders()
    subtopics = DataGetter.get_event_subtopics()
    settings = get_settings()
    languages_copy = copy.deepcopy(LANGUAGES)
    try:
        languages_copy.pop("en")
    except:
        pass
    if request.method == 'POST':
        dic = dict(request.form.copy())
        for key, value in dic.items():
            settings[key] = value[0]
            set_settings(**settings)
        flash("Changes have been saved.")
    return render_template('gentelella/admin/super_admin/content/content.html',
                           pages=pages,
                           settings=settings,
                           placeholder_images=placeholder_images,
                           subtopics=subtopics,
                           custom_placeholder=custom_placeholder,
                           languages=languages_copy,
                           navigation_bar=list_navbar())
Пример #5
0
def fees_status_view():
    from_date = request.args.get('from_date')
    to_date = request.args.get('to_date')

    if ('from_date' in request.args and not from_date) or ('to_date' in request.args and not to_date) or \
        ('from_date' in request.args and 'to_date' not in request.args) or \
        ('to_date' in request.args and 'from_date' not in request.args):
        return redirect(url_for('.fees_status_view'))

    if from_date and to_date:
        invoices = InvoicingManager.get_invoices(
            from_date=datetime.strptime(from_date, '%d/%m/%Y'),
            to_date=datetime.strptime(to_date, '%d/%m/%Y'),
        )
    else:
        invoices = InvoicingManager.get_invoices()

    return render_template('gentelella/super_admin/sales/fees_status.html',
                           display_currency=display_currency,
                           from_date=from_date,
                           current_date=datetime.now(),
                           overdue_date=datetime.now() + timedelta(days=15),
                           invoices=invoices,
                           to_date=to_date,
                           navigation_bar=list_navbar())
def index_view():
    message_settings = DataGetter.get_all_message_setting()
    return render_template('gentelella/super_admin/messages/messages.html',
                           mails=MAILS,
                           notifications=NOTIFS,
                           message_settings=message_settings,
                           navigation_bar=list_navbar())
Пример #7
0
def index_view():
    mails = DataGetter.get_all_mails(count=300)
    notifications = DataGetter.get_all_notifications(count=300)
    activities = DataGetter.get_all_activities(count=600)

    on_heroku = HerokuApi.is_on_heroku()
    on_kubernetes = KubernetesApi.is_on_kubernetes()
    pods_info = None
    logplex_url = None

    if on_kubernetes:
        kubernetes_api = KubernetesApi()
        pods_info = kubernetes_api.get_pods()['items']
    elif on_heroku:
        heroku_api = HerokuApi()
        logplex_url = heroku_api.get_logplex_url()

    return render_template('gentelella/admin/super_admin/reports/reports.html',
                           mails=mails,
                           notifications=notifications,
                           on_heroku=on_heroku,
                           logplex_url=logplex_url,
                           on_kubernetes=on_kubernetes,
                           pods_info=pods_info,
                           activities=activities,
                           navigation_bar=list_navbar())
Пример #8
0
def display_debug_info():
    return render_template('gentelella/super_admin/debug/debug.html',
                           ip=get_real_ip(),
                           cookies=request.cookies,
                           config=json.dumps(dict(current_app.config), sort_keys=True, indent=4, default=json_serial),
                           environment=json.dumps(dict(os.environ.data), sort_keys=True, indent=4, default=json_serial),
                           navigation_bar=list_navbar(),
                           headers=request.headers)
Пример #9
0
def details_view(page_id):
    page = DataGetter.get_page_by_id(page_id)
    if request.method == 'POST':
        DataManager().update_page(page, request.form)
        return redirect(url_for('sadmin_content.details_view', page_id=page_id))
    pages = DataGetter.get_all_pages()
    return render_template('gentelella/admin/super_admin/content/content.html',
                           pages=pages,
                           current_page=page, navigation_bar=list_navbar())
Пример #10
0
def fees_by_events_view():
    from_date = request.args.get('from_date')
    to_date = request.args.get('to_date')

    if ('from_date' in request.args and not from_date) or ('to_date' in request.args and not to_date) or \
        ('from_date' in request.args and 'to_date' not in request.args) or \
        ('to_date' in request.args and 'from_date' not in request.args):
        return redirect(url_for('.fees_by_events_view'))

    marketer_role = CustomSysRole.query.filter_by(name='Marketer').first()
    marketer_id = login.current_user.id if login.current_user.is_sys_role(marketer_role.id) else None

    if from_date and to_date:
        orders = TicketingManager.get_orders(
            from_date=datetime.strptime(from_date, '%d/%m/%Y'),
            to_date=datetime.strptime(to_date, '%d/%m/%Y'),
            status='completed',
            marketer_id=marketer_id
        )
    else:
        orders = TicketingManager.get_orders(status='completed', marketer_id=marketer_id)

    events = DataGetter.get_all_events()

    fee_summary = {}
    for event in events:
        fee_summary[str(event.id)] = {
            'name': event.name,
            'payment_currency': event.payment_currency,
            'fee_rate': get_fee(event.payment_currency),
            'fee_amount': 0,
            'tickets_count': 0
        }

    fee_total = 0
    tickets_total = 0

    for order in orders:
        if order.event:
            for order_ticket in order.tickets:
                fee_summary[str(order.event.id)]['tickets_count'] += order_ticket.quantity
                tickets_total += order_ticket.quantity
                ticket = CachedGetter.get_ticket(order_ticket.ticket_id)
                if order.paid_via != 'free' and order.amount > 0 and ticket.price > 0:
                    fee = ticket.price * (get_fee(order.event.payment_currency) / 100)
                    fee = forex(order.event.payment_currency, display_currency, fee)
                    fee_summary[str(order.event.id)]['fee_amount'] += fee
                    fee_total += fee

    return render_template('gentelella/super_admin/sales/fees.html',
                           fee_summary=fee_summary,
                           display_currency=display_currency,
                           from_date=from_date,
                           to_date=to_date,
                           tickets_total=tickets_total,
                           fee_total=fee_total,
                           navigation_bar=list_navbar())
Пример #11
0
def index_view():
    message_settings = DataGetter.get_all_message_setting()
    return render_template(
        'gentelella/super_admin/messages/messages.html',
        mails=MAILS,
        notifications=NOTIFS,
        message_settings=message_settings,
        navigation_bar=list_navbar()
    )
Пример #12
0
def details_view(page_id):
    page = DataGetter.get_page_by_id(page_id)
    if request.method == 'POST':
        DataManager().update_page(page, request.form)
        return redirect(url_for('sadmin_content.details_view',
                                page_id=page_id))
    pages = DataGetter.get_all_pages()
    return render_template('gentelella/admin/super_admin/content/content.html',
                           pages=pages,
                           current_page=page,
                           navigation_bar=list_navbar())
Пример #13
0
def display_debug_info():
    return render_template('gentelella/super_admin/debug/debug.html',
                           ip=get_real_ip(),
                           cookies=request.cookies,
                           config=json.dumps(dict(current_app.config),
                                             sort_keys=True,
                                             indent=4,
                                             default=json_serial),
                           environment=json.dumps(dict(os.environ.data),
                                                  sort_keys=True,
                                                  indent=4,
                                                  default=json_serial),
                           navigation_bar=list_navbar(),
                           headers=request.headers)
def index_view():
    # System-Role (Panel) Permissions
    builtin_sys_perms = dict()
    for role in SYS_ROLES_LIST:
        builtin_sys_perms[role] = dict()
        for panel in PANEL_LIST:
            builtin_sys_perms[role][panel] = True

    custom_sys_perms = dict()
    custom_sys_roles = DataGetter.get_custom_sys_roles()
    get_panel_perm = DataGetter.get_panel_permission
    for role in custom_sys_roles:
        custom_sys_perms[role] = dict()
        for panel in PANEL_LIST:
            perm = get_panel_perm(role, panel)
            custom_sys_perms[role][
                panel] = False if not perm else perm.can_access

    # User Permissions
    user_perms = DataGetter.get_user_permissions()

    # Event-Role Permissions
    event_perms = dict()
    roles = DataGetter.get_roles()
    services = DataGetter.get_services()
    get_permission = DataGetter.get_permission_by_role_service

    for role in roles:
        event_perms[role] = dict()
        for service in services:
            event_perms[role][service.name] = dict()
            p = get_permission(role=role, service=service)

            event_perms[role][
                service.name]['c'] = False if not p else p.can_create
            event_perms[role][
                service.name]['r'] = False if not p else p.can_read
            event_perms[role][
                service.name]['u'] = False if not p else p.can_update
            event_perms[role][
                service.name]['d'] = False if not p else p.can_delete

    return render_template(
        'gentelella/admin/super_admin/permissions/permissions.html',
        event_perms=sorted(event_perms.iteritems(), key=lambda (k, v): k.name),
        custom_sys_perms=custom_sys_perms,
        builtin_sys_perms=builtin_sys_perms,
        user_perms=user_perms,
        panel_list=PANEL_LIST,
        navigation_bar=list_navbar())
def display_my_sessions_view():
    all_sessions = DataGetter.get_all_sessions()
    all_pending = DataGetter.get_sessions_by_state('pending')
    all_accepted = DataGetter.get_sessions_by_state('accepted')
    all_rejected = DataGetter.get_sessions_by_state('rejected')
    all_trashed = DataGetter.get_trash_sessions()
    page_content = {"title": "Sessions Proposals"}
    return render_template('gentelella/super_admin/sessions/sessions.html',
                           page_content=page_content,
                           all_sessions=all_sessions,
                           all_pending=all_pending,
                           all_accepted=all_accepted,
                           all_rejected=all_rejected,
                           all_trashed=all_trashed,
                           navigation_bar=list_navbar())
Пример #16
0
def display_my_sessions_view():
    all_sessions = DataGetter.get_all_sessions()
    all_pending = DataGetter.get_sessions_by_state('pending')
    all_accepted = DataGetter.get_sessions_by_state('accepted')
    all_rejected = DataGetter.get_sessions_by_state('rejected')
    all_trashed = DataGetter.get_trash_sessions()
    page_content = {"title": "Sessions Proposals"}
    return render_template('gentelella/super_admin/sessions/sessions.html',
                           page_content=page_content,
                           all_sessions=all_sessions,
                           all_pending=all_pending,
                           all_accepted=all_accepted,
                           all_rejected=all_rejected,
                           all_trashed=all_trashed,
                           navigation_bar=list_navbar())
Пример #17
0
def index_view():
    # System-Role (Panel) Permissions
    builtin_sys_perms = dict()
    for role in SYS_ROLES_LIST:
        builtin_sys_perms[role] = dict()
        for panel in PANEL_LIST:
            builtin_sys_perms[role][panel] = True

    custom_sys_perms = dict()
    custom_sys_roles = DataGetter.get_custom_sys_roles()
    get_panel_perm = DataGetter.get_panel_permission
    for role in custom_sys_roles:
        custom_sys_perms[role] = dict()
        for panel in PANEL_LIST:
            perm = get_panel_perm(role, panel)
            custom_sys_perms[role][panel] = False if not perm else perm.can_access

    # User Permissions
    user_perms = DataGetter.get_user_permissions()

    # Event-Role Permissions
    event_perms = dict()
    roles = DataGetter.get_roles()
    services = DataGetter.get_services()
    get_permission = DataGetter.get_permission_by_role_service

    for role in roles:
        event_perms[role] = dict()
        for service in services:
            event_perms[role][service.name] = dict()
            p = get_permission(role=role, service=service)

            event_perms[role][service.name]['c'] = False if not p else p.can_create
            event_perms[role][service.name]['r'] = False if not p else p.can_read
            event_perms[role][service.name]['u'] = False if not p else p.can_update
            event_perms[role][service.name]['d'] = False if not p else p.can_delete

    return render_template(
        'gentelella/super_admin/permissions/permissions.html',
        event_perms=sorted(event_perms.iteritems(),
                           key=lambda (k, v): k.name),
        custom_sys_perms=custom_sys_perms,
        builtin_sys_perms=builtin_sys_perms,
        user_perms=user_perms,
        panel_list=PANEL_LIST,
        navigation_bar=list_navbar())
Пример #18
0
def index_view():
    live_events = DataGetter.get_all_live_events()
    draft_events = DataGetter.get_all_draft_events()
    past_events = DataGetter.get_all_past_events()
    all_events = DataGetter.get_all_events()
    trash_events = DataGetter.get_trash_events()
    all_events_include_trash = all_events + trash_events.all()
    all_ticket_stats = {}
    for event in all_events_include_trash:
        all_ticket_stats[event.id] = TicketingManager.get_ticket_stats(event)
    return render_template('gentelella/super_admin/events/events.html',
                           live_events=live_events,
                           draft_events=draft_events,
                           past_events=past_events,
                           all_events=all_events,
                           trash_events=trash_events,
                           all_ticket_stats=all_ticket_stats,
                           navigation_bar=list_navbar())
Пример #19
0
def index_view():
    placeholder_images = DataGetter.get_event_default_images()
    pages = DataGetter.get_all_pages()
    custom_placeholder = DataGetter.get_custom_placeholders()
    subtopics = DataGetter.get_event_subtopics()
    settings = get_settings()
    languages_copy = copy.deepcopy(LANGUAGES)
    try:
        languages_copy.pop("en")
    except:
        pass
    if request.method == 'POST':
        dic = dict(request.form.copy())
        for key, value in dic.items():
            settings[key] = value[0]
            set_settings(**settings)
    return render_template(
        'gentelella/admin/super_admin/content/content.html', pages=pages, settings=settings,
        placeholder_images=placeholder_images, subtopics=subtopics, custom_placeholder=custom_placeholder,
        languages=languages_copy, navigation_bar=list_navbar()
    )
Пример #20
0
def index_view():
    module = DataGetter.get_module()
    if request.method == 'GET':
        if not module:
            module = Module()
            save_to_db(module)
            flash("Changes have been saved.")
    elif request.method == 'POST':
        form = request.form
        module.ticket_include = True if form.get(
            'ticketing') == 'on' else False
        module.payment_include = True if form.get(
            'payments') == 'on' else False
        module.donation_include = True if form.get(
            'donations') == 'on' else False
        save_to_db(module)
        flash("Changes have been saved.")

    return render_template('gentelella/super_admin/modules/modules.html',
                           module=module,
                           navigation_bar=list_navbar())
Пример #21
0
def sales_by_events_view(path):
    from_date = request.args.get('from_date')
    to_date = request.args.get('to_date')

    if ('from_date' in request.args and not from_date) or ('to_date' in request.args and not to_date) or \
        ('from_date' in request.args and 'to_date' not in request.args) or \
        ('to_date' in request.args and 'from_date' not in request.args):
        return redirect(url_for('.sales_by_events_view', path=path))

    promoted_events = path == 'promoted-events'

    if from_date and to_date:
        orders = TicketingManager.get_orders(
            from_date=datetime.strptime(from_date, '%d/%m/%Y'),
            to_date=datetime.strptime(to_date, '%d/%m/%Y'),
            promoted_event=promoted_events
        )
    else:
        orders = TicketingManager.get_orders(promoted_event=promoted_events)

    if promoted_events:
        events = DataGetter.get_all_events_with_discounts()
    else:
        events = DataGetter.get_all_events()

    orders_summary = {
        'completed': {
            'class': 'success',
            'tickets_count': 0,
            'orders_count': 0,
            'total_sales': 0
        },
        'pending': {
            'class': 'warning',
            'tickets_count': 0,
            'orders_count': 0,
            'total_sales': 0
        },
        'expired': {
            'class': 'danger',
            'tickets_count': 0,
            'orders_count': 0,
            'total_sales': 0
        }
    }

    tickets_summary_event_wise = {}
    tickets_summary_organizer_wise = {}
    tickets_summary_location_wise = {}

    for event in events:
        tickets_summary_event_wise[str(event.id)] = {
            'name': event.name,
            'payment_currency': event.payment_currency,
            'marketer': '',
            'discount_code': '',
            'completed': {
                'tickets_count': 0,
                'sales': 0
            },
            'pending': {
                'tickets_count': 0,
                'sales': 0
            },
            'expired': {
                'class': 'danger',
                'tickets_count': 0,
                'sales': 0
            }
        }

        if promoted_events:
            tickets_summary_event_wise[str(event.id)]['marketer'] = \
                event.discount_code.marketer.email
            tickets_summary_event_wise[str(event.id)]['discount_code'] = \
                str(event.discount_code.value) + '% off for ' + str(event.discount_code.max_quantity) + ' months'

        tickets_summary_organizer_wise[str(event.creator_id)] = \
            copy.deepcopy(tickets_summary_event_wise[str(event.id)])
        if event.creator:
            tickets_summary_organizer_wise[str(event.creator_id)]['name'] = event.creator.email

        tickets_summary_location_wise[unicode(event.searchable_location_name)] = \
            copy.deepcopy(tickets_summary_event_wise[str(event.id)])
        tickets_summary_location_wise[unicode(event.searchable_location_name)]['name'] = \
            event.searchable_location_name

    for order in orders:
        if order.status == 'initialized':
            order.status = 'pending'
        orders_summary[str(order.status)]['orders_count'] += 1
        orders_summary[str(order.status)]['total_sales'] += forex(order.event.payment_currency,
                                                                  display_currency, order.amount)
        for order_ticket in order.tickets:
            orders_summary[str(order.status)]['tickets_count'] += order_ticket.quantity
            ticket = CachedGetter.get_ticket(order_ticket.ticket_id)
            tickets_summary_event_wise[str(order.event_id)][str(order.status)]['tickets_count'] \
                += order_ticket.quantity
            tickets_summary_organizer_wise[str(order.event.creator_id)][str(order.status)]['tickets_count'] \
                += order_ticket.quantity
            tickets_summary_location_wise[str(order
                                              .event.searchable_location_name)][str(order
                                                                                    .status)]['tickets_count'] \
                += order_ticket.quantity

            if order.paid_via != 'free' and order.amount > 0:
                tickets_summary_event_wise[str(order.event_id)][str(order.status)]['sales'] += \
                    order_ticket.quantity * ticket.price
                tickets_summary_organizer_wise[str(order.event.creator_id)][str(order.status)]['sales'] += \
                    order_ticket.quantity * ticket.price
                tickets_summary_location_wise[str(order.event.
                                                  searchable_location_name)][str(order.
                                                                                 status)]['sales'] += \
                    order_ticket.quantity * ticket.price

    if path == 'events' or path == 'promoted-events':
        return render_template('gentelella/admin/super_admin/sales/by_events.html',
                               tickets_summary=tickets_summary_event_wise,
                               display_currency=display_currency,
                               from_date=from_date,
                               to_date=to_date,
                               path=path,
                               orders_summary=orders_summary,
                               navigation_bar=list_navbar())
    elif path == 'organizers':
        return render_template('gentelella/admin/super_admin/sales/by_organizer.html',
                               tickets_summary=tickets_summary_organizer_wise,
                               display_currency=display_currency,
                               from_date=from_date,
                               to_date=to_date,
                               path=path,
                               orders_summary=orders_summary,
                               navigation_bar=list_navbar())
    elif path == 'locations':
        return render_template('gentelella/admin/super_admin/sales/by_location.html',
                               tickets_summary=tickets_summary_location_wise,
                               display_currency=display_currency,
                               from_date=from_date,
                               to_date=to_date,
                               path=path,
                               orders_summary=orders_summary,
                               navigation_bar=list_navbar())

    else:
        abort(404)
Пример #22
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())
Пример #23
0
def sales_by_events_view(path):
    from_date = request.args.get('from_date')
    to_date = request.args.get('to_date')

    if ('from_date' in request.args and not from_date) or ('to_date' in request.args and not to_date) or \
        ('from_date' in request.args and 'to_date' not in request.args) or \
        ('to_date' in request.args and 'from_date' not in request.args):
        return redirect(url_for('.sales_by_events_view', path=path))

    promoted_events = path == 'discounted-events'

    if from_date and to_date:
        orders = TicketingManager.get_orders(
            from_date=datetime.strptime(from_date, '%d/%m/%Y'),
            to_date=datetime.strptime(to_date, '%d/%m/%Y'),
            promoted_event=promoted_events
        )
    else:
        orders = TicketingManager.get_orders(promoted_event=promoted_events)

    if promoted_events:
        events = DataGetter.get_all_events_with_discounts()
    else:
        events = DataGetter.get_all_events()

    orders_summary = {
        'completed': {
            'class': 'success',
            'tickets_count': 0,
            'orders_count': 0,
            'total_sales': 0
        },
        'placed': {
            'class': 'info',
            'tickets_count': 0,
            'orders_count': 0,
            'total_sales': 0
        },
        'pending': {
            'class': 'warning',
            'tickets_count': 0,
            'orders_count': 0,
            'total_sales': 0
        },
        'expired': {
            'class': 'danger',
            'tickets_count': 0,
            'orders_count': 0,
            'total_sales': 0
        },
        'deleted': {
            'class': 'primary',
            'tickets_count': 0,
            'orders_count': 0,
            'total_sales': 0
        },
        'cancelled': {
            'class': 'default',
            'tickets_count': 0,
            'orders_count': 0,
            'total_sales': 0
        }
    }

    tickets_summary_event_wise = {}
    tickets_summary_organizer_wise = {}
    tickets_summary_location_wise = {}

    for event in events:
        tickets_summary_event_wise[str(event.id)] = {
            'name': event.name,
            'payment_currency': event.payment_currency,
            'marketer': '',
            'discount_code': '',
            'live_url': url_for('event_detail.display_event_detail_home', identifier=event.identifier).replace('events',
                                                                                                               'e'),
            'event_url': url_for('events.details_view', event_id=event.id),
            'start_time': event.start_time,
            'end_time': event.end_time,
            'completed': {
                'tickets_count': 0,
                'sales': 0
            },
            'placed': {
                'tickets_count': 0,
                'sales': 0
            },
            'pending': {
                'tickets_count': 0,
                'sales': 0
            },
            'expired': {
                'class': 'danger',
                'tickets_count': 0,
                'sales': 0
            },
            'cancelled': {
                'tickets_count': 0,
                'sales': 0
            },
            'deleted': {
                'tickets_count': 0,
                'sales': 0
            },
        }
        organizer = DataGetter.get_user_event_roles_by_role_name(event.id, 'organizer').first()

        if promoted_events:
            tickets_summary_event_wise[str(event.id)]['marketer'] = \
                event.discount_code.marketer.email
            tickets_summary_event_wise[str(event.id)]['discount_code'] = \
                str(event.discount_code.value) + '% off for ' + str(event.discount_code.max_quantity) + ' months'

        tickets_summary_organizer_wise[str(organizer.user.id)] = \
            copy.deepcopy(tickets_summary_event_wise[str(event.id)])
        if organizer:
            tickets_summary_organizer_wise[str(organizer.user.id)]['name'] = organizer.user.email

        tickets_summary_location_wise[unicode(event.searchable_location_name)] = \
            copy.deepcopy(tickets_summary_event_wise[str(event.id)])
        tickets_summary_location_wise[unicode(event.searchable_location_name)]['name'] = \
            event.searchable_location_name

    for order in orders:
        if order.event:
            if order.status == 'initialized':
                order.status = 'pending'
            orders_summary[str(order.status)]['orders_count'] += 1
            orders_summary[str(order.status)]['total_sales'] += forex(order.event.payment_currency,
                                                                      display_currency, order.amount)
            for order_ticket in order.tickets:
                discount = TicketingManager.get_discount_code(order.event_id, order.discount_code_id)
                orders_summary[str(order.status)]['tickets_count'] += order_ticket.quantity
                ticket = CachedGetter.get_ticket(order_ticket.ticket_id)
                tickets_summary_event_wise[str(order.event_id)][str(order.status)]['tickets_count'] \
                    += order_ticket.quantity
                tickets_summary_organizer_wise[str(organizer.user.id)][str(order.status)]['tickets_count'] \
                    += order_ticket.quantity
                tickets_summary_location_wise[unicode(order.event.searchable_location_name)][str(order.status)][
                    'tickets_count'] \
                    += order_ticket.quantity

                if order.paid_via != 'free' and order.amount > 0:
                    if discount and str(ticket.id) in discount.tickets.split(","):
                        if discount.type == "amount":
                            tickets_summary_event_wise[str(order.event_id)][str(order.status)][
                                'sales'] += forex(order.event.payment_currency, display_currency, \
                                            order_ticket.quantity * (ticket.price - discount.value))
                            tickets_summary_organizer_wise[str(organizer.user.id)][str(order.status)][
                                'sales'] += forex(order.event.payment_currency, display_currency, \
                                            order_ticket.quantity * (ticket.price - discount.value))
                            tickets_summary_location_wise[str(order.event.searchable_location_name)][str(order.status)][
                                'sales'] += forex(order.event.payment_currency, display_currency, \
                                            order_ticket.quantity * (ticket.price - discount.value))
                        else:
                            tickets_summary_event_wise[str(order.event_id)][str(order.status)]['sales'] += \
                                forex(order.event.payment_currency, display_currency, \
                                    order_ticket.quantity * (ticket.price - discount.value * ticket.price / 100.0))
                            tickets_summary_organizer_wise[str(organizer.user.id)][str(order.status)]['sales'] += \
                                forex(order.event.payment_currency, display_currency, \
                                    order_ticket.quantity * (ticket.price - discount.value * ticket.price / 100.0))
                            tickets_summary_location_wise[str(order.event.searchable_location_name)][str(order.status)]['sales'] += \
                                forex(order.event.payment_currency, display_currency, \
                                    order_ticket.quantity * (ticket.price - discount.value * ticket.price / 100.0))
                    else:
                        tickets_summary_event_wise[str(order.event_id)][str(order.status)][
                            'sales'] += forex(order.event.payment_currency, display_currency, order_ticket.quantity * ticket.price)
                        tickets_summary_organizer_wise[str(organizer.user.id)][str(order.status)][
                            'sales'] += forex(order.event.payment_currency, display_currency, order_ticket.quantity * ticket.price)
                        tickets_summary_location_wise[str(order.event.searchable_location_name)][str(order.status)][
                            'sales'] += forex(order.event.payment_currency, display_currency, order_ticket.quantity * ticket.price)
    if path == 'events' or path == 'discounted-events':
        return render_template(
            'gentelella/super_admin/sales/by_events.html',
            tickets_summary=tickets_summary_event_wise,
            display_currency=display_currency,
            from_date=from_date,
            to_date=to_date,
            path=path,
            orders_summary=orders_summary,
            navigation_bar=list_navbar())
    elif path == 'organizers':
        return render_template(
            'gentelella/super_admin/sales/by_organizer.html',
            tickets_summary=tickets_summary_organizer_wise,
            display_currency=display_currency,
            from_date=from_date,
            to_date=to_date,
            path=path,
            orders_summary=orders_summary,
            navigation_bar=list_navbar())
    elif path == 'locations':
        return render_template(
            'gentelella/super_admin/sales/by_location.html',
            tickets_summary=tickets_summary_location_wise,
            display_currency=display_currency,
            from_date=from_date,
            to_date=to_date,
            path=path,
            orders_summary=orders_summary,
            navigation_bar=list_navbar())

    else:
        abort(404)
Пример #24
0
def sales_by_marketer_view(by_discount_code=False):
    from_date = request.args.get('from_date')
    to_date = request.args.get('to_date')

    if ('from_date' in request.args and not from_date) or ('to_date' in request.args and not to_date) or \
        ('from_date' in request.args and 'to_date' not in request.args) or \
        ('to_date' in request.args and 'from_date' not in request.args):
        return redirect(url_for('.sales_by_marketer_view'))

    orders_summary = {
        'tickets_count': 0,
        'orders_count': 0,
        'total_sales': 0,
        'total_discounts': 0
    }

    tickets_summary = {}

    if not by_discount_code:
        user_roles = UserSystemRole.query.filter(CustomSysRole.name == 'Marketer').all()

        active_users_ids = [x.id for x in user_roles]

        marketers = User.query.filter(User.id.in_(active_users_ids)).all()

        for marketer in marketers:
            tickets_summary[str(marketer.id)] = {
                'email': marketer.email,
                'name': marketer.user_detail.firstname,
                'tickets_count': 0,
                'sales': 0,
                'discounts': 0
            }
    else:
        discount_codes = InvoicingManager.get_discount_codes()
        for discount_code in discount_codes:
            tickets_summary[str(discount_code.id)] = {
                'email': discount_code.code,
                'name': str(discount_code.value) + '% off for ' + str(discount_code.max_quantity) + ' months',
                'tickets_count': 0,
                'sales': 0,
                'discounts': 0,
                'marketer': discount_code.marketer.email
            }

    events = DataGetter.get_all_events_with_discounts()

    for event in events:
        temp_month_summary = {}
        print event
        discount_coupon = CachedGetter.get_discount_code(event.discount_code_id)

        if not by_discount_code:
            key = str(discount_coupon.marketer_id)
        else:
            key = str(discount_coupon.id)

        if from_date and to_date:
            orders = TicketingManager.get_orders(
                from_date=datetime.strptime(from_date, '%d/%m/%Y'),
                to_date=datetime.strptime(to_date, '%d/%m/%Y'),
                status='completed',
                event_id=event.id
            )
        else:
            orders = TicketingManager.get_orders(status='completed', event_id=event.id)

        for order in orders:
            if order.status == 'completed' and order.paid_via != 'free':
                orders_summary['orders_count'] += 1
                key = '{month:02d}{year:d}'.format(month=order.completed_at.month, year=order.completed_at.year)
                temp_month_summary[key] = order.amount
                orders_summary['sales'] += order.amount
                for order_ticket in order.tickets:
                    tickets_summary[key]['tickets_count'] += order_ticket.quantity
                    orders_summary['tickets_count'] += order_ticket.quantity

        # Calculate discount on a monthly basis
        month_count = 1
        for amount in temp_month_summary:
            if discount_coupon.max_quantity <= month_count:
                tickets_summary[key]['discounts'] \
                    += amount * (discount_coupon.value / 100)
                orders_summary['total_discounts'] += amount * (discount_coupon.value / 100)
            month_count += 1

    return render_template('gentelella/super_admin/sales/by_marketer.html',
                           tickets_summary=tickets_summary,
                           display_currency=display_currency,
                           from_date=from_date,
                           to_date=to_date,
                           key_name='marketers' if not by_discount_code else 'discount codes',
                           orders_summary=orders_summary,
                           navigation_bar=list_navbar())
Пример #25
0
def sales_by_events_view(path):
    from_date = request.args.get('from_date')
    to_date = request.args.get('to_date')

    if ('from_date' in request.args and not from_date) or ('to_date' in request.args and not to_date) or \
        ('from_date' in request.args and 'to_date' not in request.args) or \
        ('to_date' in request.args and 'from_date' not in request.args):
        return redirect(url_for('.sales_by_events_view', path=path))

    promoted_events = path == 'promoted-events'

    if from_date and to_date:
        orders = TicketingManager.get_orders(
            from_date=datetime.strptime(from_date, '%d/%m/%Y'),
            to_date=datetime.strptime(to_date, '%d/%m/%Y'),
            promoted_event=promoted_events)
    else:
        orders = TicketingManager.get_orders(promoted_event=promoted_events)

    if promoted_events:
        events = DataGetter.get_all_events_with_discounts()
    else:
        events = DataGetter.get_all_events()

    orders_summary = {
        'completed': {
            'class': 'success',
            'tickets_count': 0,
            'orders_count': 0,
            'total_sales': 0
        },
        'pending': {
            'class': 'warning',
            'tickets_count': 0,
            'orders_count': 0,
            'total_sales': 0
        },
        'expired': {
            'class': 'danger',
            'tickets_count': 0,
            'orders_count': 0,
            'total_sales': 0
        }
    }

    tickets_summary_event_wise = {}
    tickets_summary_organizer_wise = {}
    tickets_summary_location_wise = {}

    for event in events:
        tickets_summary_event_wise[str(event.id)] = {
            'name': event.name,
            'payment_currency': event.payment_currency,
            'marketer': '',
            'discount_code': '',
            'completed': {
                'tickets_count': 0,
                'sales': 0
            },
            'pending': {
                'tickets_count': 0,
                'sales': 0
            },
            'expired': {
                'class': 'danger',
                'tickets_count': 0,
                'sales': 0
            }
        }

        if promoted_events:
            tickets_summary_event_wise[str(event.id)]['marketer'] = \
                event.discount_code.marketer.email
            tickets_summary_event_wise[str(event.id)]['discount_code'] = \
                str(event.discount_code.value) + '% off for ' + str(event.discount_code.max_quantity) + ' months'

        tickets_summary_organizer_wise[str(event.creator_id)] = \
            copy.deepcopy(tickets_summary_event_wise[str(event.id)])
        if event.creator:
            tickets_summary_organizer_wise[str(
                event.creator_id)]['name'] = event.creator.email

        tickets_summary_location_wise[unicode(event.searchable_location_name)] = \
            copy.deepcopy(tickets_summary_event_wise[str(event.id)])
        tickets_summary_location_wise[unicode(event.searchable_location_name)]['name'] = \
            event.searchable_location_name

    for order in orders:
        if order.status == 'initialized':
            order.status = 'pending'
        orders_summary[str(order.status)]['orders_count'] += 1
        orders_summary[str(order.status)]['total_sales'] += forex(
            order.event.payment_currency, display_currency, order.amount)
        for order_ticket in order.tickets:
            orders_summary[str(
                order.status)]['tickets_count'] += order_ticket.quantity
            ticket = CachedGetter.get_ticket(order_ticket.ticket_id)
            tickets_summary_event_wise[str(order.event_id)][str(order.status)]['tickets_count'] \
                += order_ticket.quantity
            tickets_summary_organizer_wise[str(order.event.creator_id)][str(order.status)]['tickets_count'] \
                += order_ticket.quantity
            tickets_summary_location_wise[str(order
                                              .event.searchable_location_name)][str(order
                                                                                    .status)]['tickets_count'] \
                += order_ticket.quantity

            if order.paid_via != 'free' and order.amount > 0:
                tickets_summary_event_wise[str(order.event_id)][str(order.status)]['sales'] += \
                    order_ticket.quantity * ticket.price
                tickets_summary_organizer_wise[str(order.event.creator_id)][str(order.status)]['sales'] += \
                    order_ticket.quantity * ticket.price
                tickets_summary_location_wise[str(order.event.
                                                  searchable_location_name)][str(order.
                                                                                 status)]['sales'] += \
                    order_ticket.quantity * ticket.price

    if path == 'events' or path == 'promoted-events':
        return render_template(
            'gentelella/admin/super_admin/sales/by_events.html',
            tickets_summary=tickets_summary_event_wise,
            display_currency=display_currency,
            from_date=from_date,
            to_date=to_date,
            path=path,
            orders_summary=orders_summary,
            navigation_bar=list_navbar())
    elif path == 'organizers':
        return render_template(
            'gentelella/admin/super_admin/sales/by_organizer.html',
            tickets_summary=tickets_summary_organizer_wise,
            display_currency=display_currency,
            from_date=from_date,
            to_date=to_date,
            path=path,
            orders_summary=orders_summary,
            navigation_bar=list_navbar())
    elif path == 'locations':
        return render_template(
            'gentelella/admin/super_admin/sales/by_location.html',
            tickets_summary=tickets_summary_location_wise,
            display_currency=display_currency,
            from_date=from_date,
            to_date=to_date,
            path=path,
            orders_summary=orders_summary,
            navigation_bar=list_navbar())

    else:
        abort(404)
Пример #26
0
def display_debug_info():
    return render_template('gentelella/admin/super_admin/debug/debug.html',
                           ip=get_real_ip(),
                           cookies=request.cookies,
                           navigation_bar=list_navbar(),
                           headers=request.headers)
Пример #27
0
def index_view():
    if request.method == 'POST':
        if 'super_admin_email' in request.form:
            super_admin = DataGetter.get_super_admin_user()
            super_admin.email = request.form['super_admin_email']
            save_to_db(super_admin)
        if 'event-thumbnail_width' in request.form:
            im_size_profile = DataGetter.get_image_sizes_by_type(type='profile')
            im_size_event = DataGetter.get_image_sizes_by_type(type='event')
            if im_size_profile and im_size_event:
                im_size_profile.full_width = request.form['profile-large_width']
                im_size_profile.full_height = request.form['profile-large_width']
                im_size_profile.full_aspect = request.form.get('profile-large_aspect', 'off')
                im_size_profile.full_quality = request.form['profile-large_quality']
                im_size_profile.icon_width = request.form['profile-icon_width']
                im_size_profile.icon_height = request.form['profile-icon_width']
                im_size_profile.icon_aspect = request.form.get('profile-icon_aspect', 'off')
                im_size_profile.icon_quality = request.form['profile-icon_quality']
                im_size_profile.thumbnail_width = request.form['profile-thumbnail_width']
                im_size_profile.thumbnail_height = request.form['profile-thumbnail_width']
                im_size_profile.thumbnail_aspect = request.form.get('profile-thumbnail_aspect', 'off')
                im_size_profile.thumbnail_quality = request.form['profile-thumbnail_quality']
                im_size_profile.logo_width = None
                im_size_profile.logo_height = None
                save_to_db(im_size_profile, "Image Sizes saved")
                im_size_event.full_width = request.form['event-large_width']
                im_size_event.full_height = request.form['event-large_height']
                im_size_event.full_aspect = request.form.get('event-large_aspect', 'off')
                im_size_event.full_quality = request.form['event-large_quality']
                im_size_event.icon_width = request.form['event-icon_width']
                im_size_event.icon_height = request.form['event-icon_height']
                im_size_event.icon_aspect = request.form.get('event-icon_aspect', 'off')
                im_size_event.icon_quality = request.form['event-icon_quality']
                im_size_event.thumbnail_width = request.form['event-thumbnail_width']
                im_size_event.thumbnail_height = request.form['event-thumbnail_height']
                im_size_event.thumbnail_aspect = request.form.get('event-thumbnail_aspect', 'off')
                im_size_event.thumbnail_quality = request.form['event-thumbnail_quality']
                im_size_event.logo_width = request.form['logo_width']
                im_size_event.logo_height = request.form['logo_height']
                save_to_db(im_size_event, "Image Sizes saved")
            else:
                all_im_sizes = DataGetter.get_image_sizes()
                for sizes in all_im_sizes:
                    delete_from_db(sizes, 'Delete Image Sizes')

                im_size = ImageSizes(type='profile',
                                     full_width=request.form['profile-large_width'],
                                     full_height=request.form['profile-large_width'],
                                     full_aspect=request.form.get('profile-large_aspect', 'off'),
                                     full_quality=request.form['profile-large_quality'],
                                     icon_width=request.form['profile-icon_width'],
                                     icon_height=request.form['profile-icon_width'],
                                     icon_aspect=request.form.get('profile-icon_aspect', 'off'),
                                     icon_quality=request.form['profile-icon_quality'],
                                     thumbnail_width=request.form['profile-thumbnail_width'],
                                     thumbnail_height=request.form['profile-thumbnail_width'],
                                     thumbnail_aspect=request.form.get('profile-thumbnail_aspect', 'off'),
                                     thumbnail_quality=request.form['profile-thumbnail_quality'],
                                     logo_width=None,
                                     logo_height=None)
                save_to_db(im_size, "Image Sizes saved")
                im_size = ImageSizes(type='event',
                                     full_width=request.form['event-large_width'],
                                     full_height=request.form['event-large_height'],
                                     full_aspect=request.form.get('event-large_aspect', 'off'),
                                     full_quality=request.form['profile-large_quality'],
                                     icon_width=request.form['event-icon_width'],
                                     icon_height=request.form['event-icon_height'],
                                     icon_aspect=request.form.get('event-icon_aspect', 'off'),
                                     icon_quality=request.form['profile-icon_quality'],
                                     thumbnail_width=request.form['event-thumbnail_width'],
                                     thumbnail_height=request.form['event-thumbnail_height'],
                                     thumbnail_aspect=request.form.get('event-thumbnail_aspect', 'off'),
                                     thumbnail_quality=request.form['profile-thumbnail_quality'],
                                     logo_width=request.form['logo_width'],
                                     logo_height=request.form['logo_height'])
                save_to_db(im_size, "Image Sizes saved")

        if 'service_fee' in request.form:
            dic = ImmutableMultiDict(request.form)
        else:
            dic = dict(request.form.copy())
            for i in dic:
                v = dic[i][0]
                if not v:
                    dic[i] = None
                else:
                    dic[i] = v
        set_settings(**dic)

    settings = get_settings()
    fees = DataGetter.get_fee_settings()
    image_config = DataGetter.get_image_configs()
    event_image_sizes = DataGetter.get_image_sizes_by_type(type='event')
    profile_image_sizes = DataGetter.get_image_sizes_by_type(type='profile')

    return render_template(
        'gentelella/admin/super_admin/settings/settings.html',
        settings=settings,
        fees=fees,
        s3_regions=boto.s3.regions(),
        payment_currencies=DataGetter.get_payment_currencies(),
        included_settings=get_module_settings(),
        image_config=image_config,
        super_admin_email=DataGetter.get_super_admin_user().email,
        event_image_sizes=event_image_sizes,
        profile_image_sizes=profile_image_sizes,
        navigation_bar=list_navbar()
    )
Пример #28
0
def index_view():
    module = DataGetter.get_module()
    if request.method == 'GET':
        if not module:
            module = Module()
            save_to_db(module)
    elif request.method == 'POST':
        form = request.form
        module.ticket_include = True if form.get('ticketing') == 'on' else False
        module.payment_include = True if form.get('payments') == 'on' else False
        module.donation_include = True if form.get('donations') == 'on' else False
        save_to_db(module)

    return render_template('gentelella/admin/super_admin/modules/modules.html', module=module,navigation_bar=list_navbar())
Пример #29
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())