diff options
author | Wojtek Kosior <koszko@koszko.org> | 2022-08-29 17:05:00 +0200 |
---|---|---|
committer | Wojtek Kosior <koszko@koszko.org> | 2022-09-28 12:54:54 +0200 |
commit | 2363ab8054ab5d8e7981242dc311a394e8d5ff57 (patch) | |
tree | d02a2fca005a241f42331d8bb08aeb0933c898a7 /src/hydrilla | |
parent | 7fc6312d6df526b8eb49288aecf88d04668e7c45 (diff) | |
download | haketilo-hydrilla-2363ab8054ab5d8e7981242dc311a394e8d5ff57.tar.gz haketilo-hydrilla-2363ab8054ab5d8e7981242dc311a394e8d5ff57.zip |
[proxy] refactor we UI library and package pages templates to avoid code repetition
Diffstat (limited to 'src/hydrilla')
25 files changed, 321 insertions, 336 deletions
diff --git a/src/hydrilla/item_infos.py b/src/hydrilla/item_infos.py index ddd1d80..eb9a053 100644 --- a/src/hydrilla/item_infos.py +++ b/src/hydrilla/item_infos.py @@ -163,9 +163,13 @@ class ItemInfoBase(ABC, ItemIdentity, Categorizable): generated_by: t.Optional[GeneratedBy] = dc.field(hash=False, compare=False) @property + def version_string(self) -> str: + return versions.version_string(self.version) + + @property def versioned_identifier(self) -> str: """....""" - return f'{self.identifier}-{versions.version_string(self.version)}' + return f'{self.identifier}-{self.version_string}' @property def files(self) -> tuple[FileSpecifier, ...]: @@ -213,8 +217,42 @@ class ItemInfoBase(ABC, ItemIdentity, Categorizable): ) +class ItemType(enum.Enum): + RESOURCE = 'resource' + MAPPING = 'mapping' + + @property + def info_class(self) -> t.Type[AnyInfo]: + if self == ItemType.RESOURCE: + return ResourceInfo + else: + return MappingInfo + + @property + def alt_name(self) -> str: + if self == ItemType.RESOURCE: + return 'library' + else: + return 'package' + + @property + def alt_name_plural(self) -> str: + if self == ItemType.RESOURCE: + return 'libraries' + else: + return 'packages' + @dc.dataclass(frozen=True, unsafe_hash=True) -class ResourceInfo(ItemInfoBase): +class CorrespondsToResourceDCMixin: + type: t.ClassVar[ItemType] = ItemType.RESOURCE + +@dc.dataclass(frozen=True, unsafe_hash=True) +class CorrespondsToMappingDCMixin: + type: t.ClassVar[ItemType] = ItemType.MAPPING + + +@dc.dataclass(frozen=True, unsafe_hash=True) +class ResourceInfo(ItemInfoBase, CorrespondsToResourceDCMixin): """....""" type_name: t.ClassVar[str] = 'resource' @@ -223,9 +261,8 @@ class ResourceInfo(ItemInfoBase): scripts: tuple[FileSpecifier, ...] = dc.field(hash=False, compare=False) @property - def versioned_identifier(self) -> str: - """....""" - return f'{super().versioned_identifier}-{self.revision}' + def version_string(self) -> str: + return f'{super().version_string}-{self.revision}' @property def files(self) -> tuple[FileSpecifier, ...]: @@ -304,7 +341,7 @@ def make_payloads(payloads_obj: t.Mapping[str, t.Any]) \ return Map(mapping) @dc.dataclass(frozen=True, unsafe_hash=True) -class MappingInfo(ItemInfoBase): +class MappingInfo(ItemInfoBase, CorrespondsToMappingDCMixin): """....""" type_name: t.ClassVar[str] = 'mapping' @@ -363,31 +400,6 @@ class MappingInfo(ItemInfoBase): AnyInfo = t.Union[ResourceInfo, MappingInfo] -class ItemType(enum.Enum): - RESOURCE = 'resource' - MAPPING = 'mapping' - - @property - def info_class(self) -> t.Type[AnyInfo]: - if self == ItemType.RESOURCE: - return ResourceInfo - else: - return MappingInfo - - @property - def alt_name(self) -> str: - if self == ItemType.RESOURCE: - return 'library' - else: - return 'package' - - @property - def alt_name_plural(self) -> str: - if self == ItemType.RESOURCE: - return 'libraries' - else: - return 'packages' - LoadedType = t.TypeVar('LoadedType', ResourceInfo, MappingInfo) diff --git a/src/hydrilla/proxy/state.py b/src/hydrilla/proxy/state.py index e8d8b15..69436c5 100644 --- a/src/hydrilla/proxy/state.py +++ b/src/hydrilla/proxy/state.py @@ -197,14 +197,14 @@ class RepoIterationRef(Ref): @dc.dataclass(frozen=True) -class MappingDisplayInfo: +class MappingDisplayInfo(item_infos.CorrespondsToMappingDCMixin): ref: 'MappingRef' identifier: str enabled: EnabledStatus active_version: t.Optional['MappingVersionDisplayInfo'] @dc.dataclass(frozen=True) -class MappingVersionDisplayInfo: +class MappingVersionDisplayInfo(item_infos.CorrespondsToMappingDCMixin): ref: 'MappingVersionRef' info: item_infos.MappingInfo installed: InstalledStatus @@ -214,7 +214,7 @@ class MappingVersionDisplayInfo: mapping_enabled: EnabledStatus @dc.dataclass(frozen=True, unsafe_hash=True) # type: ignore[misc] -class MappingRef(Ref): +class MappingRef(Ref, item_infos.CorrespondsToMappingDCMixin): """....""" @abstractmethod def get_version_display_infos(self) \ @@ -228,7 +228,7 @@ class MappingStore(Store[MappingRef]): ... @dc.dataclass(frozen=True, unsafe_hash=True) # type: ignore[misc] -class MappingVersionRef(Ref): +class MappingVersionRef(Ref, item_infos.CorrespondsToMappingDCMixin): @abstractmethod def install(self) -> None: ... @@ -247,12 +247,12 @@ class MappingVersionStore(Store[MappingVersionRef]): @dc.dataclass(frozen=True) -class ResourceDisplayInfo: +class ResourceDisplayInfo(item_infos.CorrespondsToResourceDCMixin): ref: 'ResourceRef' identifier: str @dc.dataclass(frozen=True) -class ResourceVersionDisplayInfo: +class ResourceVersionDisplayInfo(item_infos.CorrespondsToResourceDCMixin): ref: 'ResourceVersionRef' info: item_infos.ResourceInfo installed: InstalledStatus @@ -261,7 +261,7 @@ class ResourceVersionDisplayInfo: is_local: bool @dc.dataclass(frozen=True, unsafe_hash=True) # type: ignore[misc] -class ResourceRef(Ref): +class ResourceRef(Ref, item_infos.CorrespondsToResourceDCMixin): @abstractmethod def get_version_display_infos(self) \ -> t.Sequence[ResourceVersionDisplayInfo]: @@ -274,7 +274,7 @@ class ResourceStore(Store[ResourceRef]): @dc.dataclass(frozen=True, unsafe_hash=True) # type: ignore[misc] -class ResourceVersionRef(Ref): +class ResourceVersionRef(Ref, item_infos.CorrespondsToResourceDCMixin): @abstractmethod def install(self) -> None: ... diff --git a/src/hydrilla/proxy/web_ui/items.py b/src/hydrilla/proxy/web_ui/items.py index 03f2f2d..c0e0e0d 100644 --- a/src/hydrilla/proxy/web_ui/items.py +++ b/src/hydrilla/proxy/web_ui/items.py @@ -54,14 +54,14 @@ class InvalidUploadedMalcontent(HaketiloException): bp = flask.Blueprint('items', __package__) -@bp.route('/packages/load_from_disk', methods=['GET']) +@bp.route('/load_from_disk', methods=['GET']) def load_from_disk() -> werkzeug.Response: - html = flask.render_template('packages/load_from_disk.html.jinja') + html = flask.render_template('items/load_from_disk.html.jinja') return flask.make_response(html, 200) -@bp.route('/packages/load_from_disk', methods=['POST']) +@bp.route('/load_from_disk', methods=['POST']) def load_from_disk_post() -> werkzeug.Response: - zip_file_storage = flask.request.files.get('packages_zipfile') + zip_file_storage = flask.request.files.get('items_zipfile') if zip_file_storage is None: return load_from_disk() @@ -98,7 +98,7 @@ def packages() -> werkzeug.Response: store = _app.get_haketilo_state().mapping_store() html = flask.render_template( - 'packages/index.html.jinja', + 'items/packages.html.jinja', display_infos = store.get_display_infos() ) return flask.make_response(html, 200) @@ -108,7 +108,7 @@ def libraries() -> werkzeug.Response: store = _app.get_haketilo_state().resource_store() html = flask.render_template( - 'libraries/index.html.jinja', + 'items/libraries.html.jinja', display_infos = store.get_display_infos() ) return flask.make_response(html, 200) @@ -154,7 +154,7 @@ def show_item(item_id: str, item_type: item_infos.ItemType) \ ) html = flask.render_template( - f'{item_type.alt_name_plural}/show_single.html.jinja', + f'items/{item_type.alt_name}_view.html.jinja', display_info = display_info, version_display_infos = version_display_infos ) @@ -207,7 +207,7 @@ def show_item_version( assert this_info is not None html = flask.render_template( - f'{item_type.alt_name_plural}/show_single_version.html.jinja', + f'items/{item_type.alt_name}_viewversion.html.jinja', display_info = this_info, version_display_infos = other_infos, **errors diff --git a/src/hydrilla/proxy/web_ui/root.py b/src/hydrilla/proxy/web_ui/root.py index ab4e09b..b199506 100644 --- a/src/hydrilla/proxy/web_ui/root.py +++ b/src/hydrilla/proxy/web_ui/root.py @@ -41,7 +41,7 @@ import flask import werkzeug from ...translations import translation as make_translation -from ... import versions +from ... import item_infos from .. import state as st from .. import http_messages from . import repos @@ -82,11 +82,11 @@ class WebUIAppImpl(_app.WebUIApp): ] } - self.jinja_env.globals['versions'] = versions self.jinja_env.globals['get_current_endpoint'] = get_current_endpoint self.jinja_env.globals['EnabledStatus'] = st.EnabledStatus self.jinja_env.globals['InstalledStatus'] = st.InstalledStatus self.jinja_env.globals['ActiveStatus'] = st.ActiveStatus + self.jinja_env.globals['ItemType'] = item_infos.ItemType self.before_request(authenticate_by_referrer) diff --git a/src/hydrilla/proxy/web_ui/templates/items/item_view.html.jinja b/src/hydrilla/proxy/web_ui/templates/items/item_view.html.jinja new file mode 100644 index 0000000..b0f59ae --- /dev/null +++ b/src/hydrilla/proxy/web_ui/templates/items/item_view.html.jinja @@ -0,0 +1,63 @@ +{# +Proxy web UI item view page template. + +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 style %} + {{ super() }} + + {% include 'include/item_list_style.css.jinja' %} +{% endblock %} +{% block main %} + {% block main_info %} + <h3>{% block heading required %}{% endblock %}</h3> + {% endblock %} + {% if version_display_infos|length > 0 %} + <h4> + {% block version_list_heading required %} + {% endblock %} + </h4> + <ul id="item_list"> + {% for info in version_display_infos %} + {% set entry_classes = [] %} + {% if info.is_local %} + {% do entry_classes.append('version-entry-local') %} + {% endif %} + {% if info.is_orphan %} + {% do entry_classes.append('version-entry-orphan') %} + {% endif %} + <li class="{{ entry_classes|join(' ') }}"> + {% + set href = url_for( + '.show_{}_version'.format(info.type.alt_name), + item_version_id = info.ref.id + ) + %} + <a href="{{ href }}"> + <div> + {{ info.info.version_string }} + {% if not info.is_local %} + @ + {{ info.info.repo }} + {% endif %} + </div> + </a> + </li> + {% endfor %} + </ul> + {% endif %}{# version_display_infos|length > 0 #} +{% endblock main %} diff --git a/src/hydrilla/proxy/web_ui/templates/libraries/index.html.jinja.license b/src/hydrilla/proxy/web_ui/templates/items/item_view.html.jinja.license index bb2e0af..bb2e0af 100644 --- a/src/hydrilla/proxy/web_ui/templates/libraries/index.html.jinja.license +++ b/src/hydrilla/proxy/web_ui/templates/items/item_view.html.jinja.license diff --git a/src/hydrilla/proxy/web_ui/templates/libraries/show_single_version.html.jinja b/src/hydrilla/proxy/web_ui/templates/items/item_viewversion.html.jinja index 448a9bc..9c81bec 100644 --- a/src/hydrilla/proxy/web_ui/templates/libraries/show_single_version.html.jinja +++ b/src/hydrilla/proxy/web_ui/templates/items/item_viewversion.html.jinja @@ -1,5 +1,5 @@ {# -Proxy web UI library version show page. +Proxy web UI item version view page template. This file is part of Hydrilla&Haketilo. @@ -16,38 +16,31 @@ 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 "libraries/show_single.html.jinja" %} -{% block title %} {{ _('web_ui.libraries.single_version.title') }} {% endblock %} +{% extends "items/item_view.html.jinja" %} {% block main_info %} {% if file_installation_error is defined %} - <aside class="error-note"> - {{ _('web_ui.err.file_installation_error') }} - </aside> + <aside class="error-note"> + {{ _('web_ui.err.file_installation_error') }} + </aside> {% endif %} {% if uninstall_disallowed is defined %} - <aside class="error-note"> - {{ _('web_ui.err.uninstall_disallowed') }} - </aside> + <aside class="error-note"> + {{ _('web_ui.err.uninstall_disallowed') }} + </aside> {% endif %} {% if repo_communication_error is defined %} - <aside class="error-note"> - {{ _('web_ui.err.repo_communication_error') }} - </aside> + <aside class="error-note"> + {{ _('web_ui.err.repo_communication_error') }} + </aside> {% endif %} - <h3> - {{ - _('web_ui.libraries.single_version.heading.name_{}') - .format(display_info.info.long_name) - }} - </h3> - <div class="library-identifier"> + + {{ super() }} + + <div class="item-identifier"> {{ display_info.info.versioned_identifier }} </div> - TODO: add more info... {% if display_info.installed == InstalledStatus.INSTALLED %} - <div> - {{ _('web_ui.libraries.single_version.library_is_installed') }} - </div> + <div>{% block item_is_installed_msg %}{% endblock %}</div> {% if uninstall_disallowed is not defined and display_info.active != ActiveStatus.REQUIRED @@ -55,40 +48,34 @@ in a proprietary work, I am not going to enforce this in court. <form method="POST"> <input name="action" value="uninstall_item_version" type="hidden"> <button class="green-button"> - {{ _('web_ui.libraries.single_version.uninstall_button') }} + {{ _('web_ui.items.single_version.uninstall_button') }} </button> </form> {% endif %} {% elif display_info.installed == InstalledStatus.NOT_INSTALLED %} - <div> - {{ _('web_ui.libraries.single_version.library_is_not_installed') }} - </div> + <div>{% block item_is_not_installed_msg %}{% endblock %}</div> <form method="POST"> <input name="action" value="install_item_version" type="hidden"> <button class="green-button"> - {{ _('web_ui.libraries.single_version.install_button') }} + {{ _('web_ui.items.single_version.install_button') }} </button> </form> {% else %} - <div> - {{ _('web_ui.libraries.single_version.library_install_failed') }} - </div> + <div>{% block item_install_failed_msg %}{% endblock %}</div> <div> <form method="POST" class="inline-form"> <input name="action" value="install_item_version" type="hidden"> <button class="green-button"> - {{ _('web_ui.libraries.single_version.retry_install_button') }} + {{ _('web_ui.items.single_version.retry_install_button') }} </button> </form> <form method="POST" class="inline-form"> <input name="action" value="uninstall_item_version" type="hidden"> <button class="green-button"> - {{ _('web_ui.libraries.single_version.leave_uninstalled_button') }} + {{ _('web_ui.items.single_version.leave_uninstalled_button') }} </button> </form> </div> {% endif %} + TODO: add more info... {% endblock main_info %} -{% block version_list_heading %} - {{ _('web_ui.libraries.single_version.version_list_heading') }} -{% endblock %} diff --git a/src/hydrilla/proxy/web_ui/templates/libraries/show_single.html.jinja.license b/src/hydrilla/proxy/web_ui/templates/items/item_viewversion.html.jinja.license index bb2e0af..bb2e0af 100644 --- a/src/hydrilla/proxy/web_ui/templates/libraries/show_single.html.jinja.license +++ b/src/hydrilla/proxy/web_ui/templates/items/item_viewversion.html.jinja.license diff --git a/src/hydrilla/proxy/web_ui/templates/libraries/index.html.jinja b/src/hydrilla/proxy/web_ui/templates/items/libraries.html.jinja index 5cdda04..5cdda04 100644 --- a/src/hydrilla/proxy/web_ui/templates/libraries/index.html.jinja +++ b/src/hydrilla/proxy/web_ui/templates/items/libraries.html.jinja diff --git a/src/hydrilla/proxy/web_ui/templates/libraries/show_single_version.html.jinja.license b/src/hydrilla/proxy/web_ui/templates/items/libraries.html.jinja.license index bb2e0af..bb2e0af 100644 --- a/src/hydrilla/proxy/web_ui/templates/libraries/show_single_version.html.jinja.license +++ b/src/hydrilla/proxy/web_ui/templates/items/libraries.html.jinja.license diff --git a/src/hydrilla/proxy/web_ui/templates/items/library_view.html.jinja b/src/hydrilla/proxy/web_ui/templates/items/library_view.html.jinja new file mode 100644 index 0000000..7cde665 --- /dev/null +++ b/src/hydrilla/proxy/web_ui/templates/items/library_view.html.jinja @@ -0,0 +1,34 @@ +{# +Proxy web UI library view 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 "items/item_view.html.jinja" %} +{% block title %} {{ _('web_ui.items.single.library.title') }} {% endblock %} +{% block heading %} + {{ + _('web_ui.items.single.library.heading.name_{}') + .format(display_info.identifier) + }} +{% endblock %} +{% block main_info %} + {{ super() }} + + TODO: add more info... +{% endblock %} +{% block version_list_heading %} + {{ _('web_ui.items.single.library.version_list_heading') }} +{% endblock %} diff --git a/src/hydrilla/proxy/web_ui/templates/packages/index.html.jinja.license b/src/hydrilla/proxy/web_ui/templates/items/library_view.html.jinja.license index bb2e0af..bb2e0af 100644 --- a/src/hydrilla/proxy/web_ui/templates/packages/index.html.jinja.license +++ b/src/hydrilla/proxy/web_ui/templates/items/library_view.html.jinja.license diff --git a/src/hydrilla/proxy/web_ui/templates/items/library_viewversion.html.jinja b/src/hydrilla/proxy/web_ui/templates/items/library_viewversion.html.jinja new file mode 100644 index 0000000..7299fcb --- /dev/null +++ b/src/hydrilla/proxy/web_ui/templates/items/library_viewversion.html.jinja @@ -0,0 +1,40 @@ +{# +Proxy web UI library version view 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 "items/item_viewversion.html.jinja" %} +{% block title %} + {{ _('web_ui.items.single_version.library.title') }} +{% endblock %} +{% block heading %} + {{ + _('web_ui.items.single_version.library.heading.name_{}') + .format(display_info.info.long_name) + }} +{% endblock %} +{% block item_is_installed_msg %} +{{ _('web_ui.items.single_version.library.is_installed') }} +{% endblock %} +{% block item_is_not_nstalled_msg %} + {{ _('web_ui.items.single_version.library.is_not_installed') }} +{% endblock %} +{% block item_install_failed_msg %} + {{ _('web_ui.items.single_version.library.install_failed') }} +{% endblock %} +{% block version_list_heading %} + {{ _('web_ui.items.single_version.library.version_list_heading') }} +{% endblock %} diff --git a/src/hydrilla/proxy/web_ui/templates/packages/load_from_disk.html.jinja.license b/src/hydrilla/proxy/web_ui/templates/items/library_viewversion.html.jinja.license index bb2e0af..bb2e0af 100644 --- a/src/hydrilla/proxy/web_ui/templates/packages/load_from_disk.html.jinja.license +++ b/src/hydrilla/proxy/web_ui/templates/items/library_viewversion.html.jinja.license diff --git a/src/hydrilla/proxy/web_ui/templates/packages/load_from_disk.html.jinja b/src/hydrilla/proxy/web_ui/templates/items/load_from_disk.html.jinja index a1b191e..9ad190f 100644 --- a/src/hydrilla/proxy/web_ui/templates/packages/load_from_disk.html.jinja +++ b/src/hydrilla/proxy/web_ui/templates/items/load_from_disk.html.jinja @@ -1,5 +1,5 @@ {# -Proxy web UI package loading page. +Proxy web UI item loading page. This file is part of Hydrilla&Haketilo. @@ -17,7 +17,7 @@ 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.load_from_disk.title') }} {% endblock %} +{% block title %} {{ _('web_ui.load_from_disk.title') }} {% endblock %} {% block style %} {{ super() }} @@ -27,20 +27,20 @@ in a proprietary work, I am not going to enforce this in court. } {% endblock %} {% block main %} - <h3>{{ _('web_ui.packages.load_from_disk.heading') }}</h3> + <h3>{{ _('web_ui.load_from_disk.heading') }}</h3> <form method="POST" enctype="multipart/form-data"> <div> - <input id="packages_zipfile" name="packages_zipfile" type="file" + <input id="items_zipfile" name="items_zipfile" type="file" accept=".zip,application/zip" required=""> </div> <div> - <label class="green-button" for="packages_zipfile"> - {{ _('web_ui.packages.load_from_disk.choose_zipfile_button') }} + <label class="green-button" for="items_zipfile"> + {{ _('web_ui.load_from_disk.choose_zipfile_button') }} </label> </div> <div> <button class="green-button"> - {{ _('web_ui.packages.load_from_disk.install_button') }} + {{ _('web_ui.load_from_disk.install_button') }} </button> </div> </form> diff --git a/src/hydrilla/proxy/web_ui/templates/packages/show_single.html.jinja.license b/src/hydrilla/proxy/web_ui/templates/items/load_from_disk.html.jinja.license index bb2e0af..bb2e0af 100644 --- a/src/hydrilla/proxy/web_ui/templates/packages/show_single.html.jinja.license +++ b/src/hydrilla/proxy/web_ui/templates/items/load_from_disk.html.jinja.license diff --git a/src/hydrilla/proxy/web_ui/templates/items/package_view.html.jinja b/src/hydrilla/proxy/web_ui/templates/items/package_view.html.jinja new file mode 100644 index 0000000..f83eb0c --- /dev/null +++ b/src/hydrilla/proxy/web_ui/templates/items/package_view.html.jinja @@ -0,0 +1,34 @@ +{# +Proxy web UI package view 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 "items/item_view.html.jinja" %} +{% block title %} {{ _('web_ui.items.single.package.title') }} {% endblock %} +{% block heading %} + {{ + _('web_ui.items.single.package.heading.name_{}') + .format(display_info.identifier) + }} +{% endblock %} +{% block main_info %} + {{ super() }} + + TODO: add more info... +{% endblock %} +{% block version_list_heading %} + {{ _('web_ui.items.single.package.version_list_heading') }} +{% endblock %} diff --git a/src/hydrilla/proxy/web_ui/templates/packages/show_single_version.html.jinja.license b/src/hydrilla/proxy/web_ui/templates/items/package_view.html.jinja.license index bb2e0af..bb2e0af 100644 --- a/src/hydrilla/proxy/web_ui/templates/packages/show_single_version.html.jinja.license +++ b/src/hydrilla/proxy/web_ui/templates/items/package_view.html.jinja.license diff --git a/src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja b/src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja new file mode 100644 index 0000000..9009c9c --- /dev/null +++ b/src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja @@ -0,0 +1,40 @@ +{# +Proxy web UI package version view 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 "items/item_viewversion.html.jinja" %} +{% block title %} + {{ _('web_ui.items.single_version.package.title') }} +{% endblock %} +{% block heading %} + {{ + _('web_ui.items.single_version.package.heading.name_{}') + .format(display_info.info.long_name) + }} +{% endblock %} +{% block item_is_installed_msg %} +{{ _('web_ui.items.single_version.package.is_installed') }} +{% endblock %} +{% block item_is_not_nstalled_msg %} + {{ _('web_ui.items.single_version.package.is_not_installed') }} +{% endblock %} +{% block item_install_failed_msg %} + {{ _('web_ui.items.single_version.package.install_failed') }} +{% endblock %} +{% block version_list_heading %} + {{ _('web_ui.items.single_version.package.version_list_heading') }} +{% endblock %} diff --git a/src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja.license b/src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja.license new file mode 100644 index 0000000..bb2e0af --- /dev/null +++ b/src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja.license @@ -0,0 +1,7 @@ +Spdx-License-Identifier: GPL-3.0-or-later OR CC-BY-SA-4.0 + +Copyright (C) 2022 Wojtek Kosior + +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. diff --git a/src/hydrilla/proxy/web_ui/templates/packages/index.html.jinja b/src/hydrilla/proxy/web_ui/templates/items/packages.html.jinja index e2aad5d..09b20f0 100644 --- a/src/hydrilla/proxy/web_ui/templates/packages/index.html.jinja +++ b/src/hydrilla/proxy/web_ui/templates/items/packages.html.jinja @@ -42,9 +42,11 @@ in a proprietary work, I am not going to enforce this in court. if info.active_version is not none and info.active_version.active == ActiveStatus.REQUIRED %} - {% set ver = info.active_version.info.version %} - {% set ver_str = versions.version_string(ver) %} - {% set ver_desc = ver_str + '@' + info.active_version.info.repo %} + {% set ver_desc = info.active_version.info.version_string %} + {% if not info.active_version.is_local %} + {% set repo_name = info.active_version.info.repo %} + {% set ver_desc = ver_desc + ' @ ' + repo_name %} + {% endif %} <div class="small-print"> {{ _('web_ui.packages.enabled_version_{}').format(ver_desc) }} </div> diff --git a/src/hydrilla/proxy/web_ui/templates/items/packages.html.jinja.license b/src/hydrilla/proxy/web_ui/templates/items/packages.html.jinja.license new file mode 100644 index 0000000..bb2e0af --- /dev/null +++ b/src/hydrilla/proxy/web_ui/templates/items/packages.html.jinja.license @@ -0,0 +1,7 @@ +Spdx-License-Identifier: GPL-3.0-or-later OR CC-BY-SA-4.0 + +Copyright (C) 2022 Wojtek Kosior + +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. diff --git a/src/hydrilla/proxy/web_ui/templates/libraries/show_single.html.jinja b/src/hydrilla/proxy/web_ui/templates/libraries/show_single.html.jinja deleted file mode 100644 index 8ee96ba..0000000 --- a/src/hydrilla/proxy/web_ui/templates/libraries/show_single.html.jinja +++ /dev/null @@ -1,76 +0,0 @@ -{# -Proxy web UI library 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.libraries.single.title') }} {% endblock %} -{% block style %} - {{ super() }} - - {% include 'include/item_list_style.css.jinja' %} -{% endblock %} -{% block main %} - {% block main_info %} - <h3> - {{ - _('web_ui.libraries.single.heading.name_{}') - .format(display_info.identifier) - }} - </h3> - TODO: add more info... - {% endblock %} - <h4> - {% if version_display_infos|length > 0 %} - {% block version_list_heading %} - {{ _('web_ui.libraries.single.version_list_heading') }} - {% endblock %} - {% endif %} - </h4> - <ul id="item_list"> - {% for info in version_display_infos %} - {% set entry_classes = [] %} - {% if info.is_local %} - {% do entry_classes.append('version-entry-local') %} - {% endif %} - {% if info.is_orphan %} - {% do entry_classes.append('version-entry-orphan') %} - {% endif %} - <li class="{{ entry_classes|join(' ') }}"> - {% - set href = url_for( - '.show_library_version', - item_version_id = info.ref.id - ) - %} - <a href="{{ href }}"> - <div> - {{ - versions.version_string( - info.info.version, - rev = info.info.revision - ) - }} - {% 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.html.jinja b/src/hydrilla/proxy/web_ui/templates/packages/show_single.html.jinja deleted file mode 100644 index 24d9a58..0000000 --- a/src/hydrilla/proxy/web_ui/templates/packages/show_single.html.jinja +++ /dev/null @@ -1,71 +0,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.title') }} {% endblock %} -{% block style %} - {{ super() }} - - {% include 'include/item_list_style.css.jinja' %} -{% endblock %} -{% block main %} - {% block main_info %} - <h3> - {{ - _('web_ui.packages.single.heading.name_{}') - .format(display_info.identifier) - }} - </h3> - TODO: add more info... - {% endblock %} - <h4> - {% if version_display_infos|length > 0 %} - {% block version_list_heading %} - {{ _('web_ui.packages.single.version_list_heading') }} - {% endblock %} - {% endif %} - </h4> - <ul id="item_list"> - {% for info in version_display_infos %} - {% set entry_classes = [] %} - {% if info.is_local %} - {% do entry_classes.append('version-entry-local') %} - {% endif %} - {% if info.is_orphan %} - {% do entry_classes.append('version-entry-orphan') %} - {% endif %} - <li class="{{ entry_classes|join(' ') }}"> - {% - set href = url_for( - '.show_package_version', - item_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 deleted file mode 100644 index 12e5416..0000000 --- a/src/hydrilla/proxy/web_ui/templates/packages/show_single_version.html.jinja +++ /dev/null @@ -1,94 +0,0 @@ -{# -Proxy web UI package version 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 "packages/show_single.html.jinja" %} -{% block title %} {{ _('web_ui.packages.single_version.title') }} {% endblock %} -{% block main_info %} - {% if file_installation_error is defined %} - <aside class="error-note"> - {{ _('web_ui.err.file_installation_error') }} - </aside> - {% endif %} - {% if uninstall_disallowed is defined %} - <aside class="error-note"> - {{ _('web_ui.err.uninstall_disallowed') }} - </aside> - {% endif %} - {% if repo_communication_error is defined %} - <aside class="error-note"> - {{ _('web_ui.err.repo_communication_error') }} - </aside> - {% endif %} - <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... - {% if display_info.installed == InstalledStatus.INSTALLED %} - <div> - {{ _('web_ui.packages.single_version.package_is_installed') }} - </div> - {% - if uninstall_disallowed is not defined and - display_info.active != ActiveStatus.REQUIRED - %} - <form method="POST"> - <input name="action" value="uninstall_item_version" type="hidden"> - <button class="green-button"> - {{ _('web_ui.packages.single_version.uninstall_button') }} - </button> - </form> - {% endif %} - {% elif display_info.installed == InstalledStatus.NOT_INSTALLED %} - <div> - {{ _('web_ui.packages.single_version.package_is_not_installed') }} - </div> - <form method="POST"> - <input name="action" value="install_item_version" type="hidden"> - <button class="green-button"> - {{ _('web_ui.packages.single_version.install_button') }} - </button> - </form> - {% else %} - <div> - {{ _('web_ui.packages.single_version.package_install_failed') }} - </div> - <div> - <form method="POST" class="inline-form"> - <input name="action" value="install_item_version" type="hidden"> - <button class="green-button"> - {{ _('web_ui.packages.single_version.retry_install_button') }} - </button> - </form> - <form method="POST" class="inline-form"> - <input name="action" value="uninstall_item_version" type="hidden"> - <button class="green-button"> - {{ _('web_ui.packages.single_version.leave_uninstalled_button') }} - </button> - </form> - </div> - {% endif %} -{% endblock main_info %} -{% block version_list_heading %} - {{ _('web_ui.packages.single_version.version_list_heading') }} -{% endblock %} |