Пример #1
0
def view_jobs(service_id):
    page = int(request.args.get('page', 1))
    jobs_response = job_api_client.get_page_of_jobs(service_id, page=page)
    jobs = [add_rate_to_job(job) for job in jobs_response['data']]

    prev_page = None
    if jobs_response['links'].get('prev', None):
        prev_page = generate_previous_dict('main.view_jobs', service_id, page)
    next_page = None
    if jobs_response['links'].get('next', None):
        next_page = generate_next_dict('main.view_jobs', service_id, page)

    scheduled_jobs = ''
    if not current_user.has_permissions('view_activity') and page == 1:
        scheduled_jobs = render_template(
            'views/dashboard/_upcoming.html',
            scheduled_jobs=job_api_client.get_scheduled_jobs(service_id),
            hide_heading=True,
        )

    return render_template(
        'views/jobs/jobs.html',
        jobs=jobs,
        page=page,
        prev_page=prev_page,
        next_page=next_page,
        scheduled_jobs=scheduled_jobs,
    )
Пример #2
0
def view_jobs(service_id):
    page = int(request.args.get("page", 1))
    jobs_response = job_api_client.get_page_of_jobs(service_id, page=page)
    jobs = [add_rate_to_job(job) for job in jobs_response["data"]]

    prev_page = None
    if jobs_response["links"].get("prev", None):
        prev_page = generate_previous_dict("main.view_jobs", service_id, page)
    next_page = None
    if jobs_response["links"].get("next", None):
        next_page = generate_next_dict("main.view_jobs", service_id, page)

    return render_template(
        "views/jobs/jobs.html",
        jobs=jobs,
        page=page,
        prev_page=prev_page,
        next_page=next_page,
        scheduled_jobs=render_template(
            "views/dashboard/_upcoming.html",
            scheduled_jobs=job_api_client.get_scheduled_jobs(service_id),
            hide_show_more=True,
            title=_("Scheduled messages"),
        ) if page == 1 else None,
    )
Пример #3
0
def view_jobs(service_id):
    page = int(request.args.get('page', 1))
    # all but scheduled and cancelled
    statuses_to_display = job_api_client.JOB_STATUSES - {
        'scheduled', 'cancelled'
    }
    jobs_response = job_api_client.get_jobs(service_id,
                                            statuses=statuses_to_display,
                                            page=page)
    jobs = [add_rate_to_job(job) for job in jobs_response['data']]

    prev_page = None
    if jobs_response['links'].get('prev', None):
        prev_page = generate_previous_dict('main.view_jobs', service_id, page)
    next_page = None
    if jobs_response['links'].get('next', None):
        next_page = generate_next_dict('main.view_jobs', service_id, page)

    return render_template(
        'views/jobs/jobs.html',
        jobs=jobs,
        page=page,
        prev_page=prev_page,
        next_page=next_page,
    )
Пример #4
0
def test_add_rate_to_job_calculates_rate(failed, delivered,
                                         expected_failure_rate):
    resp = add_rate_to_job({
        'notifications_failed': failed,
        'notifications_delivered': delivered,
        'id': 'foo'
    })

    assert resp['failure_rate'] == expected_failure_rate
def test_add_rate_to_job_calculates_rate(failed, delivered,
                                         expected_failure_rate):
    resp = add_rate_to_job({
        "notifications_failed": failed,
        "notifications_delivered": delivered,
        "id": "foo",
    })

    assert resp["failure_rate"] == expected_failure_rate
Пример #6
0
def get_dashboard_partials(service_id):
    all_statistics = template_statistics_client.get_template_statistics_for_service(
        service_id, limit_days=7)
    template_statistics = aggregate_template_usage(all_statistics)

    scheduled_jobs, immediate_jobs = [], []
    if job_api_client.has_jobs(service_id):
        scheduled_jobs = job_api_client.get_scheduled_jobs(service_id)
        immediate_jobs = [
            add_rate_to_job(job)
            for job in job_api_client.get_immediate_jobs(service_id)
        ]

    stats = aggregate_notifications_stats(all_statistics)
    column_width, max_notifiction_count = get_column_properties(
        number_of_columns=(
            3 if current_service.has_permission('letter') else 2))
    dashboard_totals = get_dashboard_totals(stats),
    highest_notification_count = max(
        sum(value[key] for key in {'requested', 'failed', 'delivered'})
        for key, value in dashboard_totals[0].items())

    return {
        'upcoming':
        render_template('views/dashboard/_upcoming.html',
                        scheduled_jobs=scheduled_jobs),
        'inbox':
        render_template(
            'views/dashboard/_inbox.html',
            inbound_sms_summary=(
                service_api_client.get_inbound_sms_summary(service_id)
                if current_service.has_permission('inbound_sms') else None),
        ),
        'totals':
        render_template(
            'views/dashboard/_totals.html',
            service_id=service_id,
            statistics=dashboard_totals[0],
            column_width=column_width,
            smaller_font_size=(highest_notification_count >
                               max_notifiction_count),
        ),
        'template-statistics':
        render_template(
            'views/dashboard/template-statistics.html',
            template_statistics=template_statistics,
            most_used_template_count=max(
                [row['count'] for row in template_statistics] or [0]),
        ),
        'has_template_statistics':
        bool(template_statistics),
        'jobs':
        render_template('views/dashboard/_jobs.html', jobs=immediate_jobs),
        'has_jobs':
        bool(immediate_jobs)
    }
Пример #7
0
def test_add_rate_to_job_preserves_initial_fields():
    resp = add_rate_to_job({
        'notifications_failed': 0,
        'notifications_delivered': 0,
        'id': 'foo'
    })

    assert set(resp.keys()) == {
        'notifications_failed', 'notifications_delivered', 'id', 'failure_rate'
    }
def test_add_rate_to_job_preserves_initial_fields():
    resp = add_rate_to_job(
        {
            'notifications_failed': 0,
            'notifications_delivered': 0,
            'id': 'foo'
        }
    )

    assert set(resp.keys()) == {'notifications_failed', 'notifications_delivered', 'id', 'failure_rate'}
def test_add_rate_to_job_calculates_rate(failed, delivered, expected_failure_rate):
    resp = add_rate_to_job(
        {
            'notifications_failed': failed,
            'notifications_delivered': delivered,
            'id': 'foo'
        }
    )

    assert resp['failure_rate'] == expected_failure_rate
def test_add_rate_to_job_preserves_initial_fields():
    resp = add_rate_to_job({
        "notifications_failed": 0,
        "notifications_delivered": 0,
        "id": "foo"
    })

    assert set(resp.keys()) == {
        "notifications_failed",
        "notifications_delivered",
        "id",
        "failure_rate",
    }
Пример #11
0
def get_dashboard_partials(service_id):
    all_statistics = template_statistics_client.get_template_statistics_for_service(
        service_id, limit_days=7)
    template_statistics = aggregate_template_usage(all_statistics)

    scheduled_jobs, immediate_jobs = [], []
    if job_api_client.has_jobs(service_id):
        scheduled_jobs = job_api_client.get_scheduled_jobs(service_id)
        immediate_jobs = [
            add_rate_to_job(job)
            for job in job_api_client.get_immediate_jobs(service_id)
        ]

    stats = aggregate_notifications_stats(all_statistics)
    column_width, max_notifiction_count = get_column_properties(
        number_of_columns=(
            3 if current_service.has_permission("letter") else 2))
    dashboard_totals = (get_dashboard_totals(stats), )
    highest_notification_count = max(
        sum(value[key] for key in {"requested", "failed", "delivered"})
        for key, value in dashboard_totals[0].items())

    return {
        "upcoming":
        render_template("views/dashboard/_upcoming.html",
                        scheduled_jobs=scheduled_jobs),
        "totals":
        render_template(
            "views/dashboard/_totals.html",
            service_id=service_id,
            statistics=dashboard_totals[0],
            column_width=column_width,
            smaller_font_size=(highest_notification_count >
                               max_notifiction_count),
        ),
        "template-statistics":
        render_template(
            "views/dashboard/template-statistics.html",
            template_statistics=template_statistics,
            most_used_template_count=max(
                [row["count"] for row in template_statistics] or [0]),
        ),
        "has_template_statistics":
        bool(template_statistics),
        "jobs":
        render_template("views/dashboard/_jobs.html", jobs=immediate_jobs),
        "has_jobs":
        bool(immediate_jobs),
        "has_scheduled_jobs":
        bool(scheduled_jobs),
    }
Пример #12
0
def view_jobs(service_id):
    page = int(request.args.get("page", 1))
    # all but scheduled and cancelled
    statuses_to_display = job_api_client.JOB_STATUSES - {"scheduled", "cancelled"}
    jobs_response = job_api_client.get_jobs(service_id, statuses=statuses_to_display, page=page)
    jobs = [add_rate_to_job(job) for job in jobs_response["data"]]

    prev_page = None
    if jobs_response["links"].get("prev", None):
        prev_page = generate_previous_dict("main.view_jobs", service_id, page)
    next_page = None
    if jobs_response["links"].get("next", None):
        next_page = generate_next_dict("main.view_jobs", service_id, page)

    return render_template("views/jobs/jobs.html", jobs=jobs, page=page, prev_page=prev_page, next_page=next_page)
Пример #13
0
def get_dashboard_partials(service_id):
    # all but scheduled and cancelled
    statuses_to_display = job_api_client.JOB_STATUSES - {
        'scheduled', 'cancelled'
    }

    template_statistics = aggregate_usage(
        template_statistics_client.get_template_statistics_for_service(
            service_id, limit_days=7))

    scheduled_jobs = sorted(job_api_client.get_jobs(service_id,
                                                    statuses=['scheduled'
                                                              ])['data'],
                            key=lambda job: job['scheduled_for'])
    immediate_jobs = [
        add_rate_to_job(job) for job in job_api_client.get_jobs(
            service_id, limit_days=7, statuses=statuses_to_display)['data']
    ]
    service = service_api_client.get_detailed_service(service_id)

    return {
        'upcoming':
        render_template('views/dashboard/_upcoming.html',
                        scheduled_jobs=scheduled_jobs),
        'totals':
        render_template('views/dashboard/_totals.html',
                        service_id=service_id,
                        statistics=get_dashboard_totals(
                            service['data']['statistics'])),
        'template-statistics':
        render_template(
            'views/dashboard/template-statistics.html',
            template_statistics=template_statistics,
            most_used_template_count=max(
                [row['count'] for row in template_statistics] or [0]),
        ),
        'has_template_statistics':
        bool(template_statistics),
        'jobs':
        render_template('views/dashboard/_jobs.html', jobs=immediate_jobs),
        'has_jobs':
        bool(immediate_jobs),
        'usage':
        render_template(
            'views/dashboard/_usage.html',
            **calculate_usage(
                service_api_client.get_service_usage(service_id)['data'])),
    }
Пример #14
0
def get_dashboard_partials(service_id):
    # all but scheduled and cancelled
    statuses_to_display = job_api_client.JOB_STATUSES - {'scheduled', 'cancelled'}

    template_statistics = aggregate_usage(
        template_statistics_client.get_template_statistics_for_service(service_id, limit_days=7)
    )

    scheduled_jobs = sorted(
        job_api_client.get_jobs(service_id, statuses=['scheduled'])['data'],
        key=lambda job: job['scheduled_for']
    )
    immediate_jobs = [
        add_rate_to_job(job)
        for job in job_api_client.get_jobs(service_id, limit_days=7, statuses=statuses_to_display)['data']
    ]
    service = service_api_client.get_detailed_service(service_id)

    return {
        'upcoming': render_template(
            'views/dashboard/_upcoming.html',
            scheduled_jobs=scheduled_jobs
        ),
        'totals': render_template(
            'views/dashboard/_totals.html',
            service_id=service_id,
            statistics=get_dashboard_totals(service['data']['statistics'])
        ),
        'template-statistics': render_template(
            'views/dashboard/template-statistics.html',
            template_statistics=template_statistics,
            most_used_template_count=max(
                [row['count'] for row in template_statistics] or [0]
            ),
        ),
        'has_template_statistics': bool(template_statistics),
        'jobs': render_template(
            'views/dashboard/_jobs.html',
            jobs=immediate_jobs
        ),
        'has_jobs': bool(immediate_jobs),
        'usage': render_template(
            'views/dashboard/_usage.html',
            **calculate_usage(service_api_client.get_service_usage(service_id)['data'])
        ),
    }
Пример #15
0
def get_dashboard_partials(service_id):
    # all but scheduled and cancelled
    statuses_to_display = job_api_client.JOB_STATUSES - {
        'scheduled', 'cancelled'
    }

    template_statistics = aggregate_usage(
        template_statistics_client.get_template_statistics_for_service(
            service_id, limit_days=7))

    scheduled_jobs = sorted(job_api_client.get_jobs(service_id,
                                                    statuses=['scheduled'
                                                              ])['data'],
                            key=lambda job: job['scheduled_for'])
    immediate_jobs = [
        add_rate_to_job(job) for job in job_api_client.get_jobs(
            service_id, limit_days=7, statuses=statuses_to_display)['data']
    ]
    service = service_api_client.get_detailed_service(service_id)
    column_width, max_notifiction_count = get_column_properties(
        number_of_columns=(
            3 if 'letter' in current_service['permissions'] else 2))
    dashboard_totals = get_dashboard_totals(service['data']['statistics']),
    highest_notification_count = max(
        sum(value[key] for key in {'requested', 'failed', 'delivered'})
        for key, value in dashboard_totals[0].items())

    return {
        'upcoming':
        render_template('views/dashboard/_upcoming.html',
                        scheduled_jobs=scheduled_jobs),
        'inbox':
        render_template(
            'views/dashboard/_inbox.html',
            inbound_sms_summary=(
                service_api_client.get_inbound_sms_summary(service_id)
                if 'inbound_sms' in current_service['permissions'] else None),
        ),
        'totals':
        render_template(
            'views/dashboard/_totals.html',
            service_id=service_id,
            statistics=dashboard_totals[0],
            column_width=column_width,
            smaller_font_size=(highest_notification_count >
                               max_notifiction_count),
        ),
        'template-statistics':
        render_template(
            'views/dashboard/template-statistics.html',
            template_statistics=template_statistics,
            most_used_template_count=max(
                [row['count'] for row in template_statistics] or [0]),
        ),
        'has_template_statistics':
        bool(template_statistics),
        'jobs':
        render_template('views/dashboard/_jobs.html', jobs=immediate_jobs),
        'has_jobs':
        bool(immediate_jobs)
    }