def create_pie_chart(start, end): airline = your_airline() cursor.execute( 'SELECT * FROM purchases NATURAL JOIN ticket WHERE purchase_date BETWEEN %s AND %s AND \ airline_name=%s', (start, end, airline)) puchases = cursor.fetchall() cust_revenue = 0 agent_revenue = 0 for bought in puchases: ticket_id = bought['ticket_id'] cursor.execute( 'SELECT price FROM ticket NATURAL JOIN flight WHERE ticket_id=%s AND airline_name=%s', (ticket_id, airline)) price = cursor.fetchone()['price'] if (bought['booking_agent_id'] == None): cust_revenue += price else: agent_revenue += price total_revenue = agent_revenue + cust_revenue data = pd.Series([ float(agent_revenue / total_revenue), float(cust_revenue / total_revenue) ], index=['Booking Agent', 'Customer']) pie_chart = Donut(data) pie_chart.toolbar_location = None info = [pie_chart, cust_revenue, agent_revenue] return info
def budget_detail(request, budget_id): budget_owner = User.objects.get(id=Budget.objects.get(id=budget_id).user_id).username title = Budget.objects.get(id=budget_id).title base = Cost.objects.filter(budget_id=budget_id, user=request.user).values() total = Cost.objects.filter(budget_id=budget_id, user=request.user).aggregate(Sum('value'))['value__sum'] budget = Budget.objects.get(id=budget_id).value date = [] date_url = [] categories = [] categories_id = [] for item in Cost.objects.filter(budget_id=budget_id, user=request.user).values('title', 'publish', 'category_id'): date.append(str(item['publish'])) date_url.append(str(item['publish']).replace('-', '/')) categories.append(Category.objects.get(id=item['category_id']).title) categories_id.append(Category.objects.get(id=item['category_id']).id) categories_title = [] categories_title_id =[] categories_data = [] for item in Category.objects.values('title', 'id'): val = Cost.objects.filter(budget_id=budget_id, user=request.user, category_id=item['id']).aggregate(Sum('value'))['value__sum'] if val is not None: categories_title.append(item['title']) categories_title_id.append(item['id']) categories_data.append(val) try: total_budget = budget - total except TypeError: total_budget = 0 info = zip(base, date, date_url, categories, categories_id) data = { 'money': [float(x) for x in categories_data], 'labels': categories_title } p1 = Donut(data, values='money', label='labels', plot_width=390, plot_height=400, legend=None, responsive=True) p1.logo = None p1.toolbar_location = None script, div = components(p1, CDN) cat_all = zip(categories_title, categories_data, categories_title_id) return render(request, 'core_sm/costs/budget/budget_detail.html', {'info': info, 'title': title, 'total': total, 'budget': budget, 'total_budget': total_budget, 'script': mark_safe(script), 'div': mark_safe(div), 'cat_all': cat_all, 'categories_data': categories_data, 'budget_owner': budget_owner})
plot_width=220, color=source.data['color']) wedge_r = Donut(df, plot_height=220, plot_width=220, color=source.data['color']) wedge_z = Donut(df, plot_height=220, plot_width=220, color=source.data['color']) wedge_b.logo = None wedge_r.logo = None wedge_z.logo = None wedge_b.toolbar_location = None wedge_r.toolbar_location = None wedge_z.toolbar_location = None curdoc().add_root(row(widgetbox(title, width=700))) curdoc().add_root(row(widgetbox(slider, width=700))) curdoc().add_root( row( column( widgetbox(Div(text="<b>Cameras:</b>")), p, row(widgetbox(Div(text=""), width=50), widgetbox(wedge_metric_select, width=600))), column(widgetbox(Div(text="<b>Metrics:</b>"), width=150), widgetbox(metric_select, width=150))))
def category_detail(request, category_id): category_title = Category.objects.get(id=category_id).title spends = Cost.objects.filter(category_id=category_id, user=request.user) stats = [] days = [] days_url = [] for item in spends: stats.append(Budget.objects.get(id=item.budget_id).title) for item in spends.values('publish'): days.append(str(item['publish'])) days_url.append(str(item['publish']).replace('-', '/')) data = zip(spends, stats, days, days_url) data_sum = Cost.objects.filter(category_id=category_id, user=request.user).aggregate(Sum('value'))['value__sum'] data_avg = Cost.objects.filter(category_id=category_id, user=request.user).aggregate(Avg('value'))['value__avg'] data_min = Cost.objects.filter(category_id=category_id, user=request.user).aggregate(Min('value'))['value__min'] data_max = Cost.objects.filter(category_id=category_id, user=request.user).aggregate(Max('value'))['value__max'] category_budget_title = [] category_budget_spends = [] category_budget_id = [] for item in Budget.objects.values('title', 'id'): val = Cost.objects.filter(budget_id=item['id'], category_id=category_id, user=request.user).aggregate(Sum('value'))[ 'value__sum'] if val is not None: category_budget_title.append(item['title']) category_budget_spends.append(val) category_budget_id.append(item['id']) else: pass budgets = [] budgets_id = [] budgets_data = [] for item in Budget.objects.filter(user=request.user).values('title', 'id'): val = Cost.objects.filter(category_id=category_id, user=request.user, budget_id=Budget.objects.get(id=item['id']).id).aggregate(Sum('value'))['value__sum'] if val is not None: budgets_data.append(val) budgets.append(item['title']) budgets_id.append(item['id']) table_data = { 'money': [float(x) for x in budgets_data], 'labels': budgets } p1 = Donut(table_data, values='money', label='labels', plot_width=390, plot_height=400, legend=None, responsive=True) p1.logo = None p1.toolbar_location = None script, div = components(p1, CDN) category_budget_data = zip(category_budget_title, category_budget_spends, category_budget_id) return render(request, 'core_sm/costs/category/category_detail.html', {'data': data, 'data_sum': data_sum, 'data_avg': data_avg, 'data_min': data_min, 'data_max': data_max, 'category_title': category_title, 'category_budget_data': category_budget_data, 'script': mark_safe(script), 'div': mark_safe(div)})