def toggle_email_notification_settings(user_id, value): """ Settings will be toggled to database with proper User id """ events = DataGetter.get_all_events() user = DataGetter.get_user(user_id) notification_ids = [] for event in events: if user.is_speaker_at_event(event.id) or user.is_organizer(event.id): email_notification = DataGetter.get_email_notification_settings_by_event_id(user_id, event.id) if email_notification: email_notification.next_event = value email_notification.new_paper = value email_notification.session_schedule = value email_notification.session_accept_reject = value email_notification.after_ticket_purchase = value save_to_db(email_notification, "EmailSettings Toggled") notification_ids.append(email_notification.id) else: new_email_notification_setting = EmailNotification(next_event=value, new_paper=value, session_schedule=value, session_accept_reject=value, after_ticket_purchase=value, user_id=user_id, event_id=event.id) save_to_db(new_email_notification_setting, "EmailSetting Toggled") notification_ids.append(new_email_notification_setting.id) return notification_ids
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 email_preferences_view(): events = DataGetter.get_all_events() message_settings = DataGetter.get_all_message_setting() settings = DataGetter.get_email_notification_settings(login.current_user.id) user = DataGetter.get_user(login.current_user.id) return render_template('gentelella/users/settings/pages/email_preferences.html', settings=settings, events=events, message_settings=message_settings, user=user)
def fees_by_events_view(self): 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: 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, self.display_currency, fee) fee_summary[str(order.event.id)]['fee_amount'] += fee fee_total += fee return self.render('/gentelella/admin/super_admin/sales/fees.html', fee_summary=fee_summary, display_currency=self.display_currency, from_date=from_date, to_date=to_date, tickets_total=tickets_total, fee_total=fee_total)
def email_preferences_view(user_id): events = DataGetter.get_all_events() message_settings = DataGetter.get_all_message_setting() settings = DataGetter.get_email_notification_settings(user_id) user = DataGetter.get_user(int(user_id)) user.admin_access = 1 return render_template('gentelella/users/settings/pages/email_preferences.html', settings=settings, events=events, message_settings=message_settings, user=user)
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 email_preferences_view(): events = DataGetter.get_all_events() message_settings = DataGetter.get_all_message_setting() settings = DataGetter.get_email_notification_settings( login.current_user.id) return render_template( 'gentelella/admin/settings/pages/email_preferences.html', settings=settings, events=events, message_settings=message_settings)
def fees_by_events_view(self): 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')) 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' ) else: orders = TicketingManager.get_orders(status='completed') 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: for order_ticket in order.tickets: fee_summary[str(order.event.id)]['tickets_count'] += order_ticket.quantity tickets_total += order_ticket.quantity ticket = TicketingManager.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, self.display_currency, fee) fee_summary[str(order.event.id)]['fee_amount'] += fee fee_total += fee return self.render('/gentelella/admin/super_admin/sales/fees.html', fee_summary=fee_summary, display_currency=self.display_currency, from_date=from_date, to_date=to_date, tickets_total=tickets_total, fee_total=fee_total)
def index_view(): live_events = DataGetter.get_live_events_of_user() draft_events = DataGetter.get_draft_events_of_user() past_events = DataGetter.get_past_events_of_user() all_events = DataGetter.get_all_events() imported_events = DataGetter.get_imports_by_user() 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') if not AuthManager.is_verified_user(): flash( Markup( 'Your account is unverified. ' 'Please verify by clicking on the confirmation link that has been emailed to you.' '<br>Did not get the email? Please <a href="/resend_email/" class="alert-link"> ' 'click here to resend the confirmation.</a>')) return render_template('gentelella/admin/event/index.html', live_events=live_events, draft_events=draft_events, past_events=past_events, all_events=all_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, imported_events=imported_events)
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(): live_events = DataGetter.get_live_events_of_user() draft_events = DataGetter.get_draft_events_of_user() past_events = DataGetter.get_past_events_of_user() all_events = DataGetter.get_all_events() imported_events = DataGetter.get_imports_by_user() 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') if not AuthManager.is_verified_user(): flash(Markup('Your account is unverified. ' 'Please verify by clicking on the confirmation link that has been emailed to you.' '<br>Did not get the email? Please <a href="/resend_email/" class="alert-link"> ' 'click here to resend the confirmation.</a>')) return render_template('gentelella/admin/event/index.html', live_events=live_events, draft_events=draft_events, past_events=past_events, all_events=all_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, imported_events=imported_events)
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())
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 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 == '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 sales_by_events_view(self, 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)) 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') ) else: orders = TicketingManager.get_orders() events = DataGetter.get_all_events() completed_count = 0 completed_amount = 0 tickets_count = 0 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, 'completed': { 'tickets_count': 0, 'sales': 0 }, 'pending': { 'tickets_count': 0, 'sales': 0 }, 'expired': { 'class': 'danger', 'tickets_count': 0, 'sales': 0 } } 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, self.display_currency, order.amount) for order_ticket in order.tickets: orders_summary[str(order.status)]['tickets_count'] += order_ticket.quantity ticket = TicketingManager.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': return self.render('/gentelella/admin/super_admin/sales/by_events.html', tickets_summary=tickets_summary_event_wise, display_currency=self.display_currency, from_date=from_date, to_date=to_date, orders_summary=orders_summary) elif path == 'organizers': return self.render('/gentelella/admin/super_admin/sales/by_organizer.html', tickets_summary=tickets_summary_organizer_wise, display_currency=self.display_currency, from_date=from_date, to_date=to_date, orders_summary=orders_summary) elif path == 'locations': return self.render('/gentelella/admin/super_admin/sales/by_location.html', tickets_summary=tickets_summary_location_wise, display_currency=self.display_currency, from_date=from_date, to_date=to_date, orders_summary=orders_summary) else: abort(404)
def sales_by_events_view(self, 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() completed_count = 0 completed_amount = 0 tickets_count = 0 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, self.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 self.render( '/gentelella/admin/super_admin/sales/by_events.html', tickets_summary=tickets_summary_event_wise, display_currency=self.display_currency, from_date=from_date, to_date=to_date, path=path, orders_summary=orders_summary) elif path == 'organizers': return self.render( '/gentelella/admin/super_admin/sales/by_organizer.html', tickets_summary=tickets_summary_organizer_wise, display_currency=self.display_currency, from_date=from_date, to_date=to_date, path=path, orders_summary=orders_summary) elif path == 'locations': return self.render( '/gentelella/admin/super_admin/sales/by_location.html', tickets_summary=tickets_summary_location_wise, display_currency=self.display_currency, from_date=from_date, to_date=to_date, path=path, orders_summary=orders_summary) else: abort(404)