{% extends 'base.html' %} {% import 'boxes.html' as boxes %} {% block title %} {{ super () }} Publisher: {{publisher_name[publisher]}} {% endblock %} {% block page_header %} (Publisher Stats JSON)

Publisher: {{publisher_name[publisher]}}

{% endblock %} {% block content %}

Table of Contents

Headlines

On the Registry {{publisher}}
Reporting Org on Registry {% if ckan_publishers and publisher in ckan_publishers %} {{ckan_publishers[publisher].result.publisher_iati_id}} {% endif %}
Reporting Org(s) in Data {% for org in publisher_stats.reporting_orgs%} {{org|replace(' ', ' ')}} {% endfor %}
Activity Files {{publisher_stats.activity_files}}
Organisation Files {{publisher_stats.organisation_files}}
Total File Size {{publisher_stats.file_size|filesizeformat}}
Activities {{publisher_stats.activities}}
Unique Activities {{publisher_stats.iati_identifiers|count}}
Organisations {{publisher_stats.organisations}}
Versions {%for version in publisher_stats.versions.keys() %} {{version|replace(' ', ' ')|safe}} {%endfor%}
Hierarchies {%for hierarchy in publisher_stats.hierarchies %} {{hierarchy}} {%endfor%}
Licenses {%for license in publisher_licenses %} {{license}} {%endfor%}
Files failing validation {% if publisher in current_stats.inverted_file_grouped.validation.fail %} {{current_stats.inverted_file_grouped.validation.fail[publisher]|length}} {% else %} 0 {% endif %}
{{boxes.box('Activities', publisher_stats.activities, '../publisher_imgs/'+publisher+'_activities.png', publisher+'/activities.json', '', '-publisher')}}
{{boxes.box('Activity Files', publisher_stats.activity_files, '../publisher_imgs/'+publisher+'_activity_files.png', publisher+'/activity_files.json', '', '-publisher')}} {{boxes.box('Organisation Files', publisher_stats.organisation_files, '../publisher_imgs/'+publisher+'_organisation_files.png', publisher+'/organisation_files.json', '', '-publisher')}}
{{boxes.box('Files per version', '', '../publisher_imgs/'+publisher+'_versions.png', publisher+'/versions.json', '../publisher_imgs/'+publisher+'_versions_legend.png', '-publisher')}} {{boxes.box('Total File Size', publisher_stats.file_size|filesizeformat, '../publisher_imgs/'+publisher+'_file_size.png', publisher+'/file_size.json', '', '-publisher')}}
{{boxes.box('Files failing validation', publisher_stats.validation.fail, '../publisher_imgs/'+publisher+'_validation.png', publisher+'/validation.json', '', '-publisher')}} {{boxes.box('Files where XML is not well-formed', publisher_stats.invalidxml, '../publisher_imgs/'+publisher+'_invalidxml.png', publisher+'/invalidxml.json', '', '-publisher')}}

Data Quality

{% if publisher in current_stats.inverted_file_grouped.validation.fail %}

Files Failing Validation

{% else %}

This section will be blank if no issues were found.

{% endif %} {% if 1 in publisher_inverted.invalidxml.values() %}
(J)

Files where XML is not well-formed

{% for dataset, invalid in publisher_inverted.invalidxml.items() %} {% if invalid %} {% endif %} {% endfor %}
Dataset
{{dataset}}
{% endif %} {% if 1 in publisher_inverted.nonstandardroots.values() %}
(J)

Files with non-standard roots

{% for dataset, nonstandard in publisher_inverted.nonstandardroots.items() %} {% if nonstandard %} {% endif %} {% endfor %}
Dataset
{{dataset}}
{% endif %}

Financial

{% macro currency_value(d) %} {% if d %} {% for currency, value in d.items() %} {% if value!=None %} {{value}} {{currency}}
{% endif %} {% endfor %} {% endif %} {% endmacro %}

Budgets

The below figures are calculated based on the data contained within the <budget> element for each reported activity. Original and revised elements are based on the value declared in the budget/@type attribute. Where budgets fall across two calendar years, the month of the <period-end> date is used to determine annual groupings, with budgets for periods ending January-June added to the previous calendar year.

{% for row in budget_table %} {% endfor %}
Year Count (all) Sum (all) Count (Original) Sum (Original) Count (Revised) Sum (Revised)
{{row.year}} {% if row.count_total %}{{row.count_total}}{% endif %} {% if row.sum_total %}{{currency_value(row.sum_total)}}{% endif %} {% if row.count_original %}{{row.count_original}}{% endif %} {{currency_value(row.sum_original)}} {% if row.count_revised %}{{row.count_revised}}{% endif %} {{currency_value(row.sum_revised)}}

Exploring Data

Files

{% for package, activities in publisher_inverted.activities.items() %} {% endfor %}
Package Activities (J) Organisations (J) File Size (J) Version (J)
{{package}} {{activities}} {{current_stats.inverted_file.organisations.get(package)}} {{current_stats.inverted_file.file_size.get(package)|filesizeformat}} {{current_stats.aggregated_file[publisher][package]['versions'].keys()[0]}}
{% for major_version in MAJOR_VERSIONS %} {% if major_version in publisher_stats.codelist_values_by_major_version %}
(J)

Codelist Values (version {{major_version}}.xx)

{% for element, values in publisher_stats.codelist_values_by_major_version[major_version].items() %} {% with element_i=current_stats.inverted_publisher.codelist_values_by_major_version[major_version].keys().index(element) %} {% with codes=sorted(codelist_sets[major_version].get(codelist_mapping[major_version].get(element)).intersection(values.keys())) %} {% endwith %} {% with codes=sorted(set(values.keys()).difference(codelist_sets[major_version].get(codelist_mapping[major_version].get(element)))) %} {% endwith %} {% endwith %} {% endfor %}
Element/Attribute Codelist Values on Codelist Values not on Codelist
{{element}} {{codelist_mapping[major_version].get(element)}}{% if codes|count %} {{codes|count}} {%else%}{{codes|count}}{%endif%} {% if codes|count %} {{codes|count}} {% if codelist_conditions[major_version][element] %}
Note: this attribute can be on multiple codelists (specified by the @vocabulary attribute) but the Dashboard only currently checks against the default codelist - see issue #174. Therefore some publishers may incorrectly show up as "Not On Codelist".
{% endif %} {%else%} {{codes|count}} {%endif%}
{% endif %} {% endfor %}
(J)

Elements and Attributes Published

{% for element, count in publisher_stats.elements.items() %} {% with element_i=current_stats.inverted_publisher.elements.keys().index(element) %} {% endwith %} {% endfor %}
Element/Attribute Activities/Organisations Files
{{element}} {{count}} {{publisher_inverted.elements[element]|count}}
{% endblock %} {% block extrafooter %} {% endblock %} {% block tablesorterscript %} {% endblock %}