Skip to content

Correct invalid html generated by _repr_html_() #975

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 10 commits into from
Feb 2, 2023
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
- A couple non-running tests ([#912](https://github.com/stac-utils/pystac/pull/912))
- Support relative stac extension paths via `make_absolute_href` ([#884](https://github.com/stac-utils/pystac/pull/884))
- Filtering on `media_type` in `get_links()` and `get_single_link()` ([#966](https://github.com/stac-utils/pystac/pull/966))
- Missing hrefs and duplicate Item fields in html generated by `_repr_html_()` ([#975](https://github.com/stac-utils/pystac/pull/975))

## [v1.6.1]

Expand Down
18 changes: 9 additions & 9 deletions pystac/html/Asset.jinja2
Original file line number Diff line number Diff line change
Expand Up @@ -5,24 +5,24 @@
<div>
<details style="margin-left: 48px;">
<summary style="margin-bottom: 20px;">
<h3 style="margin-bottom: 0px; display: inline;">Asset: {{ asset.title }}</h3>
<h3 style="margin-bottom: 0px; display: inline;">Asset: {% if asset.title %} {{ asset.title }} {% endif %}</h3>
</summary>
<table style="width: 100%; text-align: left;">
<tr><td style="text-align: left;"><strong>href</strong>: {{ asset.href }} </td></tr>
<tr><td style="text-align: left;"><strong>href:</strong> {{ asset.href }} </td></tr>
{% if asset.media_type %}
<tr><td style="text-align: left;"><strong>type:</strong> {{ asset.media_type }} </td></tr>
{% endif %}
{% if asset.title %}
<tr><td style="text-align: left;"><strong>Title:</strong> {{ asset.title }} </td></tr>
<tr><td style="text-align: left;"><strong>title:</strong> {{ asset.title }} </td></tr>
{% endif %}
{% if asset.description %}
<tr><td style="text-align: left;"><strong>Description:</strong> {{ asset.description }} </td></tr>
{% endif %}
{% if asset.media_type %}
<tr><td style="text-align: left;"><strong>Media type:</strong> {{ asset.media_type }} </td></tr>
<tr><td style="text-align: left;"><strong>description:</strong> {{ asset.description }} </td></tr>
{% endif %}
{% if asset.roles %}
<tr><td style="text-align: left;"><strong>Roles:</strong> {{ asset.roles }} </td></tr>
<tr><td style="text-align: left;"><strong>roles:</strong> {{ asset.roles }} </td></tr>
{% endif %}
{% if asset.owner %}
<tr><td style="text-align: left;"><strong>Owner:</strong> {{ asset.Owner }} </td></tr>
<tr><td style="text-align: left;"><strong>owner:</strong> {{ asset.owner.id }} </td></tr>
{% endif %}
{{ macros.extra_fields(asset) }}
</table>
Expand Down
6 changes: 3 additions & 3 deletions pystac/html/Catalog.jinja2
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@
</h3>
</summary>
<table style="width: 100%; text-align: left;">
<tr><td style="text-align: left;">ID: {{catalog.id}} </td></tr>
<tr><td style="text-align: left;"><strong>id:</strong> {{catalog.id}} </td></tr>
{% if catalog.title %}
<tr><td style="text-align: left;"><strong>Title:</strong> {{catalog.title}} </td></tr>
<tr><td style="text-align: left;"><strong>title:</strong> {{catalog.title}} </td></tr>
{% endif %}
{% if catalog.description %}
<tr><td style="text-align: left;"><strong>Description:</strong> {{catalog.description}} </td></tr>
<tr><td style="text-align: left;"><strong>description:</strong> {{catalog.description}} </td></tr>
{% endif %}
{% block subclass_fields %} {% endblock %}
{{ macros.extra_fields(catalog) }}
Expand Down
2 changes: 1 addition & 1 deletion pystac/html/Collection.jinja2
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
{% block subclass_fields %}
{# Providers field #}
{% if catalog.providers %}
<tr><td style="text-align: left;"><strong>Providers:</strong>
<tr><td style="text-align: left;"><strong>providers:</strong>
<ul>
{% for provider in catalog.providers %}
<li>{{ provider._repr_html_() }}</li>
Expand Down
10 changes: 2 additions & 8 deletions pystac/html/Item.jinja2
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,9 @@
<h3 style="margin-bottom: 0px; display: inline;">Item: {{item.id}}</h3>
</summary>
<table style="width: 100%; text-align: left;">
<tr><td style="text-align: left;"><strong>ID</strong>: {{item.id}} </td></tr>
{% if item.title %}
<tr><td style="text-align: left;"><strong>Title:</strong> {{item.title}} </td></tr>
{% endif %}
<tr><td style="text-align: left;"><strong>id:</strong> {{item.id}} </td></tr>
{% if item.bbox %}
<tr><td style="text-align: left;"><strong>Bounding Box:</strong> {{item.bbox}} </td></tr>
{% endif %}
{% if item.datetime %}
<tr><td style="text-align: left;"><strong>Datetime:</strong> {{item.datetime}} </td></tr>
<tr><td style="text-align: left;"><strong>bbox:</strong> {{item.bbox}} </td></tr>
{% endif %}
{% if item.properties %}
{% for key in item.properties %}
Expand Down
14 changes: 7 additions & 7 deletions pystac/html/Link.jinja2
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@
<div class="jp-RenderedHTMLCommon jp-RenderedHTML jp-mod-trusted jp-OutputArea-output">
{{ macros.square('#FFF7E5', '#FF6132') }}
<div style="margin-left: 48px;">
<h4 style="margin-bottom: 0px;">Link: {{ link.id }}</h4>
{% if link.title %}
<p style="color: #9D9D9D; margin-bottom: 0px;">{{ link.title }}</p>
{% endif %}
<h4 style="margin-bottom: 0px;">Link: {% if link.title %} {{ link.title }} {% endif %}</h4>
<table style="width: 100%; text-align: left;">
<tr><td style="text-align: left;"><strong>Rel:</strong> {{ link.rel }} </td></tr>
<tr><td style="text-align: left;"><strong>Target:</strong> {{ link.target }} </td></tr>
<tr><td style="text-align: left;"><strong>rel:</strong> {{ link.rel }} </td></tr>
<tr><td style="text-align: left;"><strong>href:</strong> {{ link.get_target_str() }} </td></tr>
{% if link.media_type %}
<tr><td style="text-align: left;"><strong>Media Type:</strong> {{ link.media_type }} </td></tr>
<tr><td style="text-align: left;"><strong>type:</strong> {{ link.media_type }} </td></tr>
{% endif %}
{% if link.title %}
<tr><td style="text-align: left;"><strong>title:</strong> {{ link.title }} </td></tr>
{% endif %}
{{ macros.extra_fields(link) }}
</table>
Expand Down
4 changes: 3 additions & 1 deletion pystac/html/Macros.jinja2
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@
{% macro extra_fields(parent) -%}
{% if parent.extra_fields %}
{% for key, value in parent.extra_fields.items() %}
<tr><td style="text-align: left;"><strong>{{ key }}:</strong> {{ value }} </td></tr>
{% if (value is not iterable) or (value is iterable and value|length) %}
<tr><td style="text-align: left;"><strong>{{ key }}:</strong> {{ value }} </td></tr>
{% endif %}
{% endfor %}
{% endif %}
{%- endmacro %}
Expand Down
19 changes: 9 additions & 10 deletions tests/html/test_html.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,15 @@ def parse_html(stac_html: str) -> None:
item = pystac.Item.from_file(href)
parse_html(item._repr_html_())

# These can be uncommented once psytac issue #955 is fixed
# href = TestCases.get_path(
# "data-files/catalogs/test-case-1/country-1/area-1-1/collection.json"
# )
# collection = pystac.Collection.from_file(href)
# parse_html(collection._repr_html_())

# href = TestCases.get_path("data-files/catalogs/test-case-1/catalog.json")
# catalog = pystac.Catalog.from_file(href)
# parse_html(catalog._repr_html_())
href = TestCases.get_path(
"data-files/catalogs/test-case-1/country-1/area-1-1/collection.json"
)
collection = pystac.Collection.from_file(href)
parse_html(collection._repr_html_())

href = TestCases.get_path("data-files/catalogs/test-case-1/catalog.json")
catalog = pystac.Catalog.from_file(href)
parse_html(catalog._repr_html_())

href = TestCases.get_path("data-files/item-collection/sample-item-collection.json")
item_collection = pystac.ItemCollection.from_file(href)
Expand Down