Skip to content

Commit

Permalink
adding schema template and bug fixes to main
Browse files Browse the repository at this point in the history
  • Loading branch information
leah committed Mar 25, 2024
1 parent 302690d commit bcfbe24
Show file tree
Hide file tree
Showing 3 changed files with 87 additions and 20 deletions.
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -131,3 +131,8 @@ pygeoapi/db.sqlite3
.pygeoapi/docker/examples/elastic/ES/data
.pygeoapi/docker/examples/mvt-elastic/ES/data
.pygeoapi/docker/examples/mvt-tippecanoe/ES/data

# Node
node_modules/
package-lock.json
package.json
52 changes: 32 additions & 20 deletions pygeoapi/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -1423,13 +1423,14 @@ def get_collection_schema(
p = load_plugin('provider', get_provider_by_type(
self.config['resources'][dataset]['providers'], 'feature'))
except ProviderTypeError:
LOGGER.debug('Loading coverage provider')
p = load_plugin('provider', get_provider_by_type(
self.config['resources'][dataset]['providers'], 'coverage'))
except ProviderTypeError:
LOGGER.debug('Loading record provider')
p = load_plugin('provider', get_provider_by_type(
self.config['resources'][dataset]['providers'], 'record'))
try:
LOGGER.debug('Loading coverage provider')
p = load_plugin('provider', get_provider_by_type(
self.config['resources'][dataset]['providers'], 'coverage'))
except ProviderTypeError:
LOGGER.debug('Loading record provider')
p = load_plugin('provider', get_provider_by_type(
self.config['resources'][dataset]['providers'], 'record'))
except ProviderGenericError as err:
LOGGER.error(err)
return self.get_exception(
Expand Down Expand Up @@ -1506,13 +1507,14 @@ def get_collection_queryables(self, request: Union[APIRequest, Any],
p = load_plugin('provider', get_provider_by_type(
self.config['resources'][dataset]['providers'], 'feature'))
except ProviderTypeError:
LOGGER.debug('Loading coverage provider')
p = load_plugin('provider', get_provider_by_type(
self.config['resources'][dataset]['providers'], 'coverage'))
except ProviderTypeError:
LOGGER.debug('Loading record provider')
p = load_plugin('provider', get_provider_by_type(
self.config['resources'][dataset]['providers'], 'record'))
try:
LOGGER.debug('Loading coverage provider')
p = load_plugin('provider', get_provider_by_type(
self.config['resources'][dataset]['providers'], 'coverage'))
except ProviderTypeError:
LOGGER.debug('Loading record provider')
p = load_plugin('provider', get_provider_by_type(
self.config['resources'][dataset]['providers'], 'record'))
except ProviderGenericError as err:
LOGGER.error(err)
return self.get_exception(
Expand Down Expand Up @@ -1976,12 +1978,22 @@ def get_collection_items(
'feature')
}
)
except FormatterSerializationError as err:
LOGGER.error(err)
msg = 'Error serializing output'
return self.get_exception(
HTTPStatus.INTERNAL_SERVER_ERROR, headers, request.format,
'NoApplicableCode', msg)
except ProviderTypeError:
try:
content = formatter.write(
data=content,
options={
'provider_def': get_provider_by_type(
collections[dataset]['providers'],
'record')
}
)
except FormatterSerializationError as err:
LOGGER.error(err)
msg = 'Error serializing output'
return self.get_exception(
HTTPStatus.INTERNAL_SERVER_ERROR, headers, request.format,
'NoApplicableCode', msg)

headers['Content-Type'] = formatter.mimetype

Expand Down
50 changes: 50 additions & 0 deletions pygeoapi/templates/collections/schema.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
{% if config['server']['templates']['base'] %}
{% extends config['server']['templates']['base'] %}
{% else %}
{% extends "_base.html" %}
{% endif %}
{% block title %}{{ super() }} {{ data['title'] }} {% endblock %}
{% block crumbs %}{{ super() }}
<li><a href="../../collections?lang={{ (locale|lower)[:2] }}">{% trans %}Collections{% endtrans %}</a></li>
<li><a href="{{ data['$id']|replace('/schema', '') }}?lang={{ (locale|lower)[:2] }}">{{ data['title'] }}</a></li>
<li><a href="./{{ data['id'] }}schema?lang={{ (locale|lower)[:2] }}">{% trans %}Schema{% endtrans %}</a></a></li>
{% endblock %}
{% block body %}
<section id="collection-schema">
<h1>{{ data['title'] }}</h1>
<p>{{ data['description'] }}</p>
<p>
{% for kw in data['keywords'] %}
<span class="badge text-bg-primary bg-primary">{{ kw }}</span>
{% endfor %}
</p>
<h3>{% trans %}Schema{% endtrans %}</h3>
<table class="table table-striped table-bordered">
<th>Name</th>
<th>Title</th>
<th>Type</th>
<th>Units</th>
<th>Values</th>
<ul>
{% for qname, qinfo in data['properties'].items() %}
<tr>
<td>{{ qname }}</td>
<td>{{ qinfo['title'] }}</td>
{% if qname == 'geometry' %}
<td><a href="{{ qinfo['$ref'] }}">{{ qname }} </a></td>
{% else %}
<td><code>{{ qinfo['type'] }}</code></td>
{% endif %}
<td>{{ qinfo['x-ogc-unit'] }}</td>
<td>
<ul>
{% for value in qinfo['enum'] %}
<li><i>{{ value }}</i></li>
{% endfor %}
</ul>
</td>
</tr>
{% endfor %}
</table>
</section>
{% endblock %}

0 comments on commit bcfbe24

Please sign in to comment.