diff options
Diffstat (limited to 'src/hydrilla/proxy/web_ui')
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 %} |