def index_view(): live_events = DataGetter.get_all_live_events() draft_events = DataGetter.get_all_draft_events() past_events = DataGetter.get_all_past_events() all_events = DataGetter.get_all_events() trash_events = DataGetter.get_trash_events() free_ticket_count = {} paid_ticket_count = {} donation_ticket_count = {} max_free_ticket = {} max_paid_ticket = {} max_donation_ticket = {} for event in all_events: free_ticket_count[event.id] = TicketingManager.get_orders_count_by_type(event.id, type='free') max_free_ticket[event.id] = TicketingManager.get_max_orders_count(event.id, type='free') paid_ticket_count[event.id] = TicketingManager.get_orders_count_by_type(event.id, type='paid') max_paid_ticket[event.id] = TicketingManager.get_max_orders_count(event.id, type='paid') donation_ticket_count[event.id] = TicketingManager.get_orders_count_by_type(event.id, type='donation') max_donation_ticket[event.id] = TicketingManager.get_max_orders_count(event.id, type='donation') return render_template('gentelella/admin/super_admin/events/events.html', live_events=live_events, draft_events=draft_events, past_events=past_events, all_events=all_events, trash_events=trash_events, free_ticket_count=free_ticket_count, paid_ticket_count=paid_ticket_count, donation_ticket_count=donation_ticket_count, max_free_ticket=max_free_ticket, max_paid_ticket=max_paid_ticket, max_donation_ticket=max_donation_ticket, navigation_bar=list_navbar())
def index_view(): mails = DataGetter.get_all_mails(count=300) notifications = DataGetter.get_all_notifications(count=300) activities = DataGetter.get_all_activities(count=600) on_heroku = HerokuApi.is_on_heroku() on_kubernetes = KubernetesApi.is_on_kubernetes() pods_info = None logplex_url = None if on_kubernetes: kubernetes_api = KubernetesApi() pods_info = kubernetes_api.get_pods()['items'] elif on_heroku: heroku_api = HerokuApi() logplex_url = heroku_api.get_logplex_url() return render_template( 'gentelella/admin/super_admin/reports/reports.html', mails=mails, notifications=notifications, on_heroku=on_heroku, logplex_url=logplex_url, on_kubernetes=on_kubernetes, pods_info=pods_info, activities=activities, navigation_bar=list_navbar() )
def 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())
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())
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())
def index_view(): mails = DataGetter.get_all_mails(count=300) notifications = DataGetter.get_all_notifications(count=300) activities = DataGetter.get_all_activities(count=600) on_heroku = HerokuApi.is_on_heroku() on_kubernetes = KubernetesApi.is_on_kubernetes() pods_info = None logplex_url = None if on_kubernetes: kubernetes_api = KubernetesApi() pods_info = kubernetes_api.get_pods()['items'] elif on_heroku: heroku_api = HerokuApi() logplex_url = heroku_api.get_logplex_url() return render_template('gentelella/admin/super_admin/reports/reports.html', mails=mails, notifications=notifications, on_heroku=on_heroku, logplex_url=logplex_url, on_kubernetes=on_kubernetes, pods_info=pods_info, activities=activities, navigation_bar=list_navbar())
def 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 details_view(page_id): page = DataGetter.get_page_by_id(page_id) if request.method == 'POST': DataManager().update_page(page, request.form) return redirect(url_for('sadmin_content.details_view', page_id=page_id)) pages = DataGetter.get_all_pages() return render_template('gentelella/admin/super_admin/content/content.html', pages=pages, current_page=page, navigation_bar=list_navbar())
def 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())
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() )
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())
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())
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())
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() )
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())
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)
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 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)
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())
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)
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)
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() )
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())
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())