{% extends 'reports/email/bases/report/medium.jinja' %} {#=============================================== render_dash_link ===============================================#} {% macro render_dash_link() %} See job {% endmacro %} {#=============================================== render_header_data_value ===============================================#} {% macro render_header_data_value(value, classes=None) %} {% if value %} {% if classes %} {{ value }} {% else %} {{ value }} {% endif %} {% endif %} {% endmacro %} {#=============================================== render_header_data ===============================================#} {% macro render_header_data(name, value, classes=None) %} {{ name }}: {% if value %} {% if 'Job' == name and show_job_button %} {{ render_header_data_job_link(value, classes) }} {% else %} {{ render_header_data_value(value, classes) }} {% endif %} {% else %} - {% endif %} {% endmacro %} {#=============================================== render_header_data_job_link ===============================================#} {% macro render_header_data_job_link(value, classes=None) %} {% if classes %} {{ value }} {% else %} {{ value }} {% endif %} {% endmacro %} {#=============================================== render_header_data_list ===============================================#} {% macro render_header_data_list(name, values, classes=None) %} {{ name }}: {% if values %} {% for value in values %}{{ render_header_data_value(value, classes) }}{% endfor %} {% else %} - {% endif %} {% endmacro %} {#=============================================== render_header_data_separator ===============================================#} {% macro render_header_data_separator() %}
{% endmacro %} {#=============================================== page_styles ===============================================#} {% block page_styles %} {% include 'reports/email/monitors/result.css' %} {% endblock %} {#=============================================== page_content ===============================================#} {% block page_content %} {#----------------------------------------------- TITLE ------------------------------------------------#} {% if data.job and show_job_button %} {% endif %}

{{ report_title or 'Report Title' }}

{{ render_dash_link() }}
{#----------------------------------------------- SUMMARY ------------------------------------------------#}
{#------------------------ VALUES ------------------------#}
{#------------------------ JOB OR SPIDER ------------------------#} {% set items_count = data.stats.get('item_scraped_count', 0) %} {% set requests_count = data.stats.get('downloader/request_count', 0) %} {% set stats_count = data.stats|length %} {% set passed_monitors_count = result.monitors_passed_results|length %} {% set failed_monitors_count = result.monitors_failed_results|length %} {#------------------------ JOB ------------------------#} {% if data.job %} {% set is_script = data.job.metadata['spider'].startswith('py:') %} {% set job_finished_time = data.job.metadata.get('finished_time', 0) %} {% if not job_finished_time %} {% set job_finished_time = datetime.datetime.utcnow().strftime('%s')|int*1000 %} {% endif %} {% set job_running_time = data.job.metadata.get('running_time', 0) %} {% set running_time = job_finished_time - job_running_time %} {% if is_script %} {{ render_header_data('Script', data.job.metadata['spider'][3:], 'label label-blue') }} {% else %} {{ render_header_data('Spider', data.job.metadata['spider'], 'label label-blue') }} {{ render_header_data('Version', data.job.metadata['version']) }} {{ render_header_data('Items', items_count, "badge badge-green") }} {{ render_header_data('Requests', requests_count, "badge") }} {% endif %} {% if show_log_count %} {% set logs_count = data.job.logs.list()|list|length %} {% set log_errors = data.job.logs|get_log_errors %} {% set log_errors_count = log_errors|length %} {{ render_header_data('Errors', log_errors_count, "badge badge-red") }} {{ render_header_data('Logs', logs_count, "badge") }} {% else %} {% set log_errors_count = data.stats.get('log_count/ERROR', 0) %} {{ render_header_data('Errors', log_errors_count, "badge badge-red") }} {% endif %} {{ render_header_data('Stats', stats_count, "badge") }} {{ render_header_data('Running Time', running_time|format_time) }} {#------------------------ SPIDER ------------------------#} {% elif data.spider %} {% set log_errors_count = data.stats.get('log_count/ERROR', 0) %} {% set running_time = data.stats.get('finish_time') - data.stats.get('start_time') %} {{ render_header_data('Spider', data.spider.name, 'label label-blue') }} {{ render_header_data('Items', items_count, "badge badge-green") }} {{ render_header_data('Requests', requests_count, "badge") }} {{ render_header_data('Errors', log_errors_count, "badge badge-red") }} {{ render_header_data('Stats', stats_count, "badge") }} {{ render_header_data('Running Time', running_time|format_time) }} {% endif %} {#------------------------ BOTH ------------------------#} {% if passed_monitors_count or failed_monitors_count %} {% set monitors = [render_header_data_value(passed_monitors_count, "badge"), render_header_data_value(failed_monitors_count, "badge badge-red")] %} {{ render_header_data_list('Monitors', monitors) }} {% else %} {{ render_header_data('Monitors', None) }} {% endif %} {#------------------------ JOB ONLY ------------------------#} {% if data.job %} {{ render_header_data_separator() }} {{ render_header_data('Job', data.job.key, classes='label label-blue') }} {{ render_header_data('State', data.job.metadata['state']) }} {{ render_header_data('Outcome', data.job.metadata['close_reason']) }} {{ render_header_data('Priority', data.job.metadata['priority']) }} {{ render_header_data('Bot Group', data.job.metadata['botgroup']) }} {{ render_header_data_list('Tags', data.job.metadata['tags'], 'label label-gray') }} {% endif %}
{#----------------------------------------------- MONITORS ------------------------------------------------#}

Monitors

{% if result.monitor_results %} {% for group in result.monitor_results|groupby('monitor.monitor_name') %}

{{ group.grouper }}

{% for result in group.list %} {% if loop.first and result.monitor.monitor_description %}
{{ result.monitor.monitor_description }}
{% endif %} {% endfor %}
{% if result.status != 'OK' %} {{ result.monitor.method_name }} {% else %} {{ result.monitor.method_name }} {% endif %} {% if result.status != 'OK' %} {{ result.status }} {% endif %}
{% endfor %} {% else %}
No monitors defined...
{% endif %}
{#----------------------------------------------- MONITOR FAILURES ------------------------------------------------#} {% if result.monitors_failed_results %}

Monitor Failures

{% for group in result.monitors_failed_results|groupby('monitor.monitor_name') %} {% for result in group.list %}

{{ result.monitor.name }}

{{ result.status }}
{% if result.monitor.method_description %}
{{ result.monitor.method_description }}
{% endif %} {% if result.reason %}
{{ result.reason }}
{% endif %}
{{ result.error|indent }}
{% endfor %} {% endfor %}
{% endif %} {#----------------------------------------------- STATS ------------------------------------------------#}

Stats

{% if data.stats %}
{{ data.stats|pprint }}
{% else %}
No stats available...
{% endif %}
{% endblock %}