From 5fefb11ffd50dcda826cd5a256c8b3f650221050 Mon Sep 17 00:00:00 2001 From: Wojtek Kosior Date: Tue, 23 Aug 2022 09:26:16 +0200 Subject: introduce package installation state enum --- src/hydrilla/proxy/web_ui/packages.py | 35 ++++++++++++++++++-- src/hydrilla/proxy/web_ui/root.py | 2 ++ .../proxy/web_ui/templates/packages.html.jinja | 19 ++++------- .../templates/packages__show_single.html.jinja | 35 +++++++++++++++++--- .../packages__show_single_version.html.jinja | 38 ++++++++++++++++++++++ 5 files changed, 110 insertions(+), 19 deletions(-) create mode 100644 src/hydrilla/proxy/web_ui/templates/packages__show_single_version.html.jinja (limited to 'src/hydrilla/proxy/web_ui') 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/') 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/') +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.

{{ _('web_ui.packages.heading') }}

    {% for info in display_infos %} - {% if info.info.repo == '' -%} - {%- set entry_classes = 'package-entry-local' -%} - {%- else -%} - {%- set entry_classes = '' -%} - {%- endif -%}
  • - {{ info.info.long_name }} + {{ info.identifier }}
    -
    - {{ info.info.versioned_identifier }} - {% if info.info.repo != '' %} + {% if info.active_version_ref is not none %} +
    + {{ versions.version_string(info.active_version_info.version) }} @ - {{ info.info.repo }} - {% endif %} -
    + {{ info.active_version_info.repo }} +
    + {% endif %}
  • {% 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 %}

    {{ _('web_ui.packages.single.heading.name_{}') - .format(display_info.info.long_name) + .format(display_info.identifier) }}

    -
    - {{ display_info.info.versioned_identifier }} -
    + TODO: add more info... +

    {{ _('web_ui.packages.single.version_list_heading') }}

    + {% 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 %} +

    + {{ + _('web_ui.packages.single_version.heading.name_{}') + .format(display_info.info.long_name) + }} +

    +
    + {{ display_info.info.versioned_identifier }} +
    + TODO: add more info... +{% endblock %} -- cgit v1.2.3