def report_event(request, event_category, event_slug): """Report specific event. Returns: HttpResponseObject -- report event page """ event = check_event(request, event_category=event_category, event_slug=event_slug) if event: if request.method == 'POST': report_form = ReportForm(request.POST) if report_form.is_valid(): report = Report(event=event, report_type=request.POST['report_type'], detail=request.POST['detail']) report.save() messages.warning(request, f'{event.title} is reported.') return redirect('events:feed') else: report_form = ReportForm() return render(request, 'events/report_event.html', { 'report_form': report_form, 'event': event }) else: return redirect('events:feed')
def home_view(request): sales_df = None positions_df = None merged_df = None df = None chart = None no_data = None search_form = SalesSearchForm(request.POST or None) report_form = ReportForm() if request.method == 'POST': date_from = request.POST.get('date_from') date_to = request.POST.get('date_to') chart_type = request.POST.get('chart_type') results_by = request.POST.get('results_by') sale_qs = Sale.objects.filter(created__date__lte=date_to, created__date__gte=date_from) if len(sale_qs) > 0: sales_df = pd.DataFrame(sale_qs.values()) sales_df['customer_id'] = sales_df['customer_id'].apply( get_customer_from_id) sales_df['salesman_id'] = sales_df['salesman_id'].apply( get_salesman_from_id) sales_df['created'] = sales_df['created'].apply( lambda x: x.strftime('%Y-%m-%d')) sales_df.rename( { 'customer_id': 'customer', 'salesman_id': 'salesman', 'id': 'sales_id' }, axis=1, inplace=True) positions_data = [] for sale in sale_qs: for pos in sale.get_positions(): obj = { 'position_id': pos.id, 'product': pos.product.name, 'quantity': pos.quantity, 'price': pos.price, 'sales_id': pos.get_sales_id(), } positions_data.append(obj) positions_df = pd.DataFrame(positions_data) merged_df = pd.merge(sales_df, positions_df, on='sales_id') df = merged_df.groupby('transaction_id', as_index=False)['price'].agg('sum') chart = get_chart(chart_type, sales_df, results_by) # print('chart', chart) sales_df = sales_df.to_html() positions_df = positions_df.to_html() merged_df = merged_df.to_html() df = df.to_html() else: no_data = 'No data is available in this date range' context = { 'search_form': search_form, 'report_form': report_form, 'sales_df': sales_df, 'positions_df': positions_df, 'merged_df': merged_df, 'df': df, 'chart': chart, 'no_data': no_data, } return render(request, 'sales/home.html', context)
def create_report(request): if request.method == 'POST': form = ReportForm(request.POST) if form.is_valid(): #check rules in forms.py report_name = request.POST.get('report_name') #from html report_obj = Report(name=report_name) #get data into Report Model report_obj.user_id = request.user #from user that login report_obj.save() #save data intp database item_stage1_name = request.POST.getlist('stage1') for item in item_stage1_name: if item != '': item_obj = Items(name=item, stage=1, report_id=report_obj) item_obj.save() item_stage2_name = request.POST.getlist('stage2') for item in item_stage2_name: if item != '': item_obj = Items(name=item, stage=2, report_id=report_obj) item_obj.save() item_stage3_name = request.POST.getlist('stage3') for item in item_stage3_name: if item != '': item_obj = Items(name=item, stage=3, report_id=report_obj) item_obj.save() if request.POST.get("check_default", False): Items.objects.bulk_create([ Items(name="Do I know what topic I would like to write?", stage=1, report_id=report_obj), Items(name="Do I have enough information to write?", stage=1, report_id=report_obj), Items(name="Does the report have the title?", stage=2, report_id=report_obj), Items(name="Does the report have the table of content?", stage=2, report_id=report_obj), Items(name="Does the report have the content?", stage=2, report_id=report_obj), Items(name="Does the report have the references?", stage=2, report_id=report_obj), Items( name= "Do I send an email to my lecturer that I complete the report?", stage=3, report_id=report_obj), Items(name="Do I post it on my Facebook?", stage=3, report_id=report_obj), ]) return HttpResponseRedirect( reverse('report.views.create_report')) #redirect after POST else: form = ReportForm() return render(request, 'create_report.html', {})