aboutsummaryrefslogtreecommitdiff
path: root/src/hydrilla/proxy/web_ui
diff options
context:
space:
mode:
authorWojtek Kosior <koszko@koszko.org>2022-08-23 09:26:16 +0200
committerWojtek Kosior <koszko@koszko.org>2022-09-28 12:54:52 +0200
commit5fefb11ffd50dcda826cd5a256c8b3f650221050 (patch)
treed98721a1b054b894e282668aea79157788903e73 /src/hydrilla/proxy/web_ui
parentc100476b0a34f5098efc96bf2487f09b66b4a6c4 (diff)
downloadhaketilo-hydrilla-5fefb11ffd50dcda826cd5a256c8b3f650221050.tar.gz
haketilo-hydrilla-5fefb11ffd50dcda826cd5a256c8b3f650221050.zip
introduce package installation state enum
Diffstat (limited to 'src/hydrilla/proxy/web_ui')
-rw-r--r--src/hydrilla/proxy/web_ui/packages.py35
-rw-r--r--src/hydrilla/proxy/web_ui/root.py2
-rw-r--r--src/hydrilla/proxy/web_ui/templates/packages.html.jinja19
-rw-r--r--src/hydrilla/proxy/web_ui/templates/packages__show_single.html.jinja35
-rw-r--r--src/hydrilla/proxy/web_ui/templates/packages__show_single_version.html.jinja38
5 files changed, 110 insertions, 19 deletions
diff --git a/src/hydrilla/proxy/web_ui/packages.py b/src/hydrilla/proxy/web_ui/packages.py
index 90876aa..d4146a5 100644
--- a/src/hydrilla/proxy/web_ui/packages.py
+++ b/src/hydrilla/proxy/web_ui/packages.py
@@ -94,7 +94,7 @@ def load_from_disk_post() -> werkzeug.Response:
@bp.route('/packages')
def packages() -> werkzeug.Response:
- store = _app.get_haketilo_state().mapping_version_store()
+ store = _app.get_haketilo_state().mapping_store()
html = flask.render_template(
'packages.html.jinja',
@@ -105,11 +105,40 @@ def packages() -> werkzeug.Response:
@bp.route('/packages/view/<string:mapping_id>')
def show_package(mapping_id: str) -> werkzeug.Response:
try:
- store = _app.get_haketilo_state().mapping_version_store()
- display_info = store.get(mapping_id).get_display_info()
+ store = _app.get_haketilo_state().mapping_store()
+ mapping_ref = store.get(str(mapping_id))
+ version_display_infos = mapping_ref.get_version_display_infos()
+
+ active_list = [info for info in version_display_infos if info.is_active]
+
+ active_version_ref = None if active_list == [] else active_list[0].ref
+ active_version_info = None if active_list == [] else active_list[0].info
+
+ display_info = st.MappingDisplayInfo(
+ ref = mapping_ref,
+ identifier = version_display_infos[0].info.identifier,
+ enabled = version_display_infos[0].mapping_enabled,
+ active_version_ref = active_version_ref,
+ active_version_info = active_version_info
+ )
html = flask.render_template(
'packages__show_single.html.jinja',
+ display_info = display_info,
+ version_display_infos = version_display_infos
+ )
+ return flask.make_response(html, 200)
+ except st.MissingItemError:
+ flask.abort(404)
+
+@bp.route('/packages/viewversion/<string:mapping_version_id>')
+def show_package_version(mapping_version_id: str) -> werkzeug.Response:
+ try:
+ store = _app.get_haketilo_state().mapping_version_store()
+ display_info = store.get(mapping_version_id).get_display_info()
+
+ html = flask.render_template(
+ 'packages__show_single_version.html.jinja',
display_info = display_info
)
return flask.make_response(html, 200)
diff --git a/src/hydrilla/proxy/web_ui/root.py b/src/hydrilla/proxy/web_ui/root.py
index 0f42981..67cf6ba 100644
--- a/src/hydrilla/proxy/web_ui/root.py
+++ b/src/hydrilla/proxy/web_ui/root.py
@@ -74,6 +74,8 @@ class WebUIAppImpl(_app.WebUIApp):
]
}
+ self.jinja_env.globals['versions'] = versions
+
self.before_request(authenticate_by_referrer)
for blueprint in [repos.bp, packages.bp]:
diff --git a/src/hydrilla/proxy/web_ui/templates/packages.html.jinja b/src/hydrilla/proxy/web_ui/templates/packages.html.jinja
index bcb8dea..bac774e 100644
--- a/src/hydrilla/proxy/web_ui/templates/packages.html.jinja
+++ b/src/hydrilla/proxy/web_ui/templates/packages.html.jinja
@@ -30,23 +30,18 @@ in a proprietary work, I am not going to enforce this in court.
<h3>{{ _('web_ui.packages.heading') }}</h3>
<ul id="item_list">
{% for info in display_infos %}
- {% if info.info.repo == '<local>' -%}
- {%- set entry_classes = 'package-entry-local' -%}
- {%- else -%}
- {%- set entry_classes = '' -%}
- {%- endif -%}
<li class="{{ entry_classes }}">
<a href="{{ url_for('.show_package', mapping_id=info.ref.id) }}">
<div>
- {{ info.info.long_name }}
+ {{ info.identifier }}
</div>
- <div class="small-print">
- {{ info.info.versioned_identifier }}
- {% if info.info.repo != '<local>' %}
+ {% if info.active_version_ref is not none %}
+ <div class="small-print">
+ {{ versions.version_string(info.active_version_info.version) }}
@
- {{ info.info.repo }}
- {% endif %}
- </div>
+ {{ info.active_version_info.repo }}
+ </div>
+ {% endif %}
</a>
</li>
{% endfor %}
diff --git a/src/hydrilla/proxy/web_ui/templates/packages__show_single.html.jinja b/src/hydrilla/proxy/web_ui/templates/packages__show_single.html.jinja
index eb526c4..17f958c 100644
--- a/src/hydrilla/proxy/web_ui/templates/packages__show_single.html.jinja
+++ b/src/hydrilla/proxy/web_ui/templates/packages__show_single.html.jinja
@@ -23,15 +23,42 @@ in a proprietary work, I am not going to enforce this in court.
{% block title %} {{ _('web_ui.packages.single.title') }} {% endblock %}
{% block style %}
{{ super() }}
+
+ {% include 'include/item_list_style.css.jinja' %}
{% endblock %}
{% block main %}
<h3>
{{
_('web_ui.packages.single.heading.name_{}')
- .format(display_info.info.long_name)
+ .format(display_info.identifier)
}}
</h3>
- <div class="package-identifier">
- {{ display_info.info.versioned_identifier }}
- </div>
+ TODO: add more info...
+ <h4>{{ _('web_ui.packages.single.version_list_heading') }}</h4>
+ <ul id="item_list">
+ {%- for info in version_display_infos %}
+ {% if info.info.repo == '<local>' -%}
+ {%- set entry_classes = 'version-entry-local' -%}
+ {%- else -%}
+ {%- set entry_classes = '' -%}
+ {%- endif %}
+ <li class="{{ entry_classes }}">
+ {%-
+ set href = url_for(
+ '.show_package_version',
+ mapping_version_id = info.ref.id
+ )
+ %}
+ <a href="{{ href }}">
+ <div>
+ {{ versions.version_string(info.info.version) }}
+ {%- if not info.is_local %}
+ @
+ {{ info.info.repo }}
+ {%- endif %}
+ </div>
+ </a>
+ </li>
+ {%- endfor %}
+ </ul>
{% endblock %}
diff --git a/src/hydrilla/proxy/web_ui/templates/packages__show_single_version.html.jinja b/src/hydrilla/proxy/web_ui/templates/packages__show_single_version.html.jinja
new file mode 100644
index 0000000..beedd43
--- /dev/null
+++ b/src/hydrilla/proxy/web_ui/templates/packages__show_single_version.html.jinja
@@ -0,0 +1,38 @@
+{#
+Spdx-License-Identifier: GPL-3.0-or-later OR CC-BY-SA-4.0
+
+
+Proxy web UI package show page.
+
+This file is part of Hydrilla&Haketilo.
+
+Copyright (C) 2022 Wojtek Kosior
+
+Dual licensed under
+* GNU General Public License v3.0 or later and
+* Creative Commons Attribution Share Alike 4.0 International.
+
+You can choose to use either of these licenses or both.
+
+
+I, Wojtek Kosior, thereby promise not to sue for violation of this
+file's licenses. Although I request that you do not make use this code
+in a proprietary work, I am not going to enforce this in court.
+#}
+{% extends "base.html.jinja" %}
+{% block title %} {{ _('web_ui.packages.single_version.title') }} {% endblock %}
+{% block style %}
+ {{ super() }}
+{% endblock %}
+{% block main %}
+ <h3>
+ {{
+ _('web_ui.packages.single_version.heading.name_{}')
+ .format(display_info.info.long_name)
+ }}
+ </h3>
+ <div class="package-identifier">
+ {{ display_info.info.versioned_identifier }}
+ </div>
+ TODO: add more info...
+{% endblock %}