예제 #1
0
파일: views.py 프로젝트: nicenicegame/jix
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')
예제 #2
0
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)
예제 #3
0
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', {})