Esempio n. 1
0
def usage_for_all_services():
    form = RequiredDateFilterForm()

    if form.validate_on_submit():
        start_date = form.start_date.data
        end_date = form.end_date.data
        headers = [
            "organisation_id", "organisation_name", "service_id",
            "service_name", "sms_cost", "sms_fragments", "letter_cost",
            "letter_breakdown"
        ]

        result = billing_api_client.get_usage_for_all_services(
            start_date, end_date)
        rows = [[
            r['organisation_id'], r["organisation_name"], r["service_id"],
            r["service_name"], r["sms_cost"], r['sms_fragments'],
            r["letter_cost"], r["letter_breakdown"].strip()
        ] for r in result]
        if rows:
            return Spreadsheet.from_rows([headers] + rows).as_csv_data, 200, {
                'Content-Type':
                'text/csv; charset=utf-8',
                'Content-Disposition':
                'attachment; filename="Usage for all services from {} to {}.csv"'
                .format(start_date, end_date)
            }
        else:
            flash('No results for dates')
    return render_template('views/platform-admin/usage_for_all_services.html',
                           form=form)
Esempio n. 2
0
def notifications_sent_by_service():
    form = RequiredDateFilterForm()

    if form.validate_on_submit():
        start_date = form.start_date.data
        end_date = form.end_date.data

        headers = [
            'date_created', 'service_id', 'service_name', 'notification_type',
            'count_sending', 'count_delivered', 'count_technical_failure',
            'count_temporary_failure', 'count_permanent_failure', 'count_sent'
        ]
        result = notification_api_client.get_notification_status_by_service(
            start_date, end_date)

        for row in result:
            row[0] = datetime.strptime(
                row[0], '%a, %d %b %Y %X %Z').strftime('%Y-%m-%d')

        return Spreadsheet.from_rows([headers] + result).as_csv_data, 200, {
            'Content-Type':
            'text/csv; charset=utf-8',
            'Content-Disposition':
            'attachment; filename="{} to {} notification status per service report.csv"'
            .format(start_date, end_date)
        }

    return render_template(
        'views/platform-admin/notifications_by_service.html', form=form)
def send_method_stats_by_service():
    form = RequiredDateFilterForm()

    if form.validate_on_submit():
        start_date = form.start_date.data
        end_date = form.end_date.data

        headers = [
            "service_id",
            "service_name",
            "org_name",
            "notification_type",
            "send_method",
            "count",
        ]
        result = platform_stats_api_client.get_send_method_stats_by_service(start_date, end_date)

        return (
            Spreadsheet.from_rows([headers] + result).as_csv_data,
            200,
            {
                "Content-Type": "text/csv; charset=utf-8",
                "Content-Disposition": 'attachment; filename="{} to {} send method per service report.csv"'.format(
                    start_date, end_date
                ),
            },
        )

    return render_template("views/platform-admin/send_method_stats_by_service.html", form=form)
def get_billing_report():
    form = RequiredDateFilterForm()

    if form.validate_on_submit():
        start_date = form.start_date.data
        end_date = form.end_date.data
        headers = [
            "organisation_id", "organisation_name", "service_id",
            "service_name", "sms_cost", "sms_fragments", "letter_cost",
            "letter_breakdown", "purchase_order_number", "contact_names",
            "contact_email_addresses", "billing_reference"
        ]
        try:
            result = billing_api_client.get_data_for_billing_report(
                start_date, end_date)
        except HTTPError as e:
            message = 'Date must be in a single financial year.'
            if e.status_code == 400 and e.message == message:
                flash(message)
                return render_template(
                    'views/platform-admin/get-billing-report.html', form=form)
            else:
                raise e
        rows = [[
            r["organisation_id"], r["organisation_name"], r["service_id"],
            r["service_name"], r["sms_cost"], r["sms_fragments"],
            r["letter_cost"], r["letter_breakdown"].strip(),
            r.get("purchase_order_number"),
            r.get("contact_names"),
            r.get("contact_email_addresses"),
            r.get("billing_reference")
        ] for r in result]
        if rows:
            return Spreadsheet.from_rows([headers] + rows).as_csv_data, 200, {
                'Content-Type':
                'text/csv; charset=utf-8',
                'Content-Disposition':
                'attachment; filename="Billing Report from {} to {}.csv"'.
                format(start_date, end_date)
            }
        else:
            flash('No results for dates')
    return render_template('views/platform-admin/get-billing-report.html',
                           form=form)
def notifications_sent_by_service():
    form = RequiredDateFilterForm()

    if form.validate_on_submit():
        start_date = form.start_date.data
        end_date = form.end_date.data

        headers = [
            "date_created",
            "service_id",
            "service_name",
            "notification_type",
            "count_sending",
            "count_delivered",
            "count_technical_failure",
            "count_temporary_failure",
            "count_permanent_failure",
            "count_sent",
        ]
        result = notification_api_client.get_notification_status_by_service(start_date, end_date)

        for row in result:
            row[0] = datetime.strptime(row[0], "%a, %d %b %Y %X %Z").strftime("%Y-%m-%d")

        return (
            Spreadsheet.from_rows([headers] + result).as_csv_data,
            200,
            {
                "Content-Type": "text/csv; charset=utf-8",
                "Content-Disposition": 'attachment; filename="{} to {} notification status per service report.csv"'.format(
                    start_date, end_date
                ),
            },
        )

    return render_template("views/platform-admin/notifications_by_service.html", form=form)