예제 #1
0
def report_detail(request, slug):
    """Render report detail or list of reports in case of wrong report slug is specified"""
    data = {}
    all_reports = {}
    template = 'reporting/reports.html'
    report = None
    form = Form()
    reports_date_init = True
    try:
        # Retrieving report name by slug specified in an URL
        report = reporting.get_report(slug)(request)
    except reporting.NoReportException:
        pass

    if report is not None:
        form = report.form_class(request.POST or None)
        if request.method == "POST" and form.is_valid():
            if request.POST.get('generate', None):
                data = report.generate(**form.cleaned_data)
                reports_date_init = False
        template = report.template_name
    else:
        # Wrong report slug is specified. rendering all the reports list
        all_reports = [(slug, unicode(r.verbose_name)) for slug, r in reporting.all_reports()]
    return direct_to_template(request, template, {
        'form': form,
        'data': data,
        'report': report,
        'reports_date_init': reports_date_init,
        'object_list': all_reports,
    })
예제 #2
0
def report_detail(request, slug):
    """Render report detail or list of reports in case of wrong report slug is specified"""
    data = {}
    all_reports = {}
    template = 'reporting/reports.html'
    report = None
    form = Form()
    reports_date_init = True
    try:
        # Retrieving report name by slug specified in an URL
        report = reporting.get_report(slug)(request)
    except reporting.NoReportException:
        pass

    if report is not None:
        form = report.form_class(request.POST or None)
        if request.method == "POST" and form.is_valid():
            if request.POST.get('generate', None):
                data = report.generate(**form.cleaned_data)
                reports_date_init = False
        template = report.template_name
    else:
        # Wrong report slug is specified. rendering all the reports list
        all_reports = [(slug, unicode(r.verbose_name))
                       for slug, r in reporting.all_reports()]
    return direct_to_template(
        request, template, {
            'form': form,
            'data': data,
            'report': report,
            'reports_date_init': reports_date_init,
            'object_list': all_reports,
        })
예제 #3
0
def get_csv(request, slug):
    report = reporting.get_report(slug)(request)

    response = HttpResponse(mimetype='text/csv')
    response['Content-Disposition'] = 'attachment; filename=xpot_report_' + \
        date.today().isoformat() + '.csv'

    row_csv = []
    writer = csv.writer(response)
    # GENERATE HEADERS #

    if report.show_details:
        headers = report.get_details_headers()
        row_csv.append(report.get_headers()[0].text)
        for header in headers:
            row_csv.append(str(header))
    else:
        headers = report.get_headers()
        for header in headers:
            row_csv.append(header.text)
    writer.writerow(row_csv)

    for row in report.results:

        if report.show_details:
            row_csv = []
            for value in row['details']:
                row_csv = []
                row_csv.append(row['values'][0])
                for final in value:
                    row_csv.append(final)
                writer.writerow(row_csv)
        else:
            row_csv = []
            for value in row['values']:
                row_csv.append(value)
            writer.writerow(row_csv)
    row_csv = []
    if report.show_details:
        headers = report.get_details_headers()
    else:
        headers = report.get_headers()
    cant_of_group = len(headers) - len(report.aggregate)

    row_csv = []
    for i in range(0, cant_of_group):
        row_csv.append('')
    if report.show_details:
        row_csv.append('')
    for title, value in report.get_aggregation():
        row_csv.append(title + ':' + str(value))
    writer.writerow(row_csv)

    return response
예제 #4
0
파일: views.py 프로젝트: MVReddy/TMS
def reports_detail(request, slug):
    """ Render report detail """
    data = {}
    reports_date_init = True
    report = reporting.get_report(slug)(request)
    form = report.form_class(request.POST or None)
    if request.method == "POST" and form.is_valid():
        if request.POST.get('generate', None):
            data = report.generate(**form.cleaned_data)
            reports_date_init = False
    return direct_to_template(request, report.template_name, {
        'form': form,
        'data': data,
        'report': report,
        'reports_date_init': reports_date_init,
        })
예제 #5
0
def see_plot(request, slug):
    for_csv = slug + '/' + 'csv/?'
    count_params = 0
    for key, value in request.REQUEST.iteritems():
        if count_params == 0:
            if key != 'type_of_plot' and key != 'x_axis' and key != 'y_axis':
                for_csv = for_csv + key + '=' + value
        else:
            if key != 'type_of_plot' and key != 'x_axis' and key != 'y_axis':
                for_csv = for_csv + '&' + key + '=' + value

    report = reporting.get_report(slug)(request)
    x_index = 0
    y_index = 0
    data_to_plot = []
    if report.show_details:
        headers = report.get_details_headers()
        x_index = headers.index('x_axis')
        y_index = headers.index('y_axis')
    else:
        headers = report.get_headers()
        header_titles = []
        for header in headers:
            header_titles.append(header.text)
        x_index = header_titles.index(request.GET.get('x_axis'))
        y_index = header_titles.index(request.GET.get('y_axis'))
        for row in report.results:
            new_row = []
            new_row.append(str(row['values'][x_index]))
            if isinstance(row['values'][y_index], decimal.Decimal):
                y_value = float(row['values'][y_index])
            else:
                y_value = row['values'][y_index]
            new_row.append(y_value)
            data_to_plot.append(new_row)

    data = {'report': report,
            'title': report.verbose_name,
            'for_csv': for_csv,
            'slug': slug,
            'data_to_plot': data_to_plot,
            'type_of_plot': request.GET.get('type_of_plot')}

    return render_to_response('reporting/plot.html',
                              data,
                              context_instance=RequestContext(request))
예제 #6
0
def reports_detail(request, slug):
    """ Render report detail """
    data = {}
    reports_date_init = True
    report = reporting.get_report(slug)(request)
    form = report.form_class(request.POST or None)
    if request.method == "POST" and form.is_valid():
        if request.POST.get('generate', None):
            data = report.generate(**form.cleaned_data)
            reports_date_init = False
    return direct_to_template(
        request, report.template_name, {
            'form': form,
            'data': data,
            'report': report,
            'reports_date_init': reports_date_init,
        })
예제 #7
0
def view_report(request, slug):
    for_csv = ''
    count_params = 0
    for key,value in request.REQUEST.iteritems():
        if count_params == 0:
            for_csv = key + '=' + value
        else:
            for_csv = for_csv + '&' + key + '=' + value
        count_params = count_params + 1
    report = reporting.get_report(slug)(request)
    if report.show_details:
        headers = report.get_details_headers()
    else:
        headers = report.get_headers()
    cant_of_group = len(headers) - len(report.aggregate)
    data = {'report': report, 'title':report.verbose_name, 'for_csv':for_csv, 'range':range(cant_of_group),'cant_of_group':cant_of_group +1}
    return render_to_response('reporting/view.html', data, 
                              context_instance=RequestContext(request))
예제 #8
0
def view_report(request, slug):
    report = reporting.get_report(slug)(request)
    data = {'report': report, 'title':report.verbose_name}
    return render_to_response('reporting/view.html', data, 
                              context_instance=RequestContext(request))
예제 #9
0
def view_report(request, slug):
    report = reporting.get_report(slug)(request)
    data = {'report': report, 'title': report.verbose_name}
    return render_to_response('reporting/view.html',
                              data,
                              context_instance=RequestContext(request))
예제 #10
0
 def get_report(self, slug):
     try:
         return reporting.get_report(slug)(self.request)
     except reporting.ReportNotFound:
         raise Http404
예제 #11
0
 def get_report(self, slug):
     try:
         return reporting.get_report(slug)(self.request)
     except reporting.ReportNotFound:
         raise Http404