aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWojtek Kosior <koszko@koszko.org>2022-08-29 17:05:00 +0200
committerWojtek Kosior <koszko@koszko.org>2022-09-28 12:54:54 +0200
commit2363ab8054ab5d8e7981242dc311a394e8d5ff57 (patch)
treed02a2fca005a241f42331d8bb08aeb0933c898a7
parent7fc6312d6df526b8eb49288aecf88d04668e7c45 (diff)
downloadhaketilo-hydrilla-2363ab8054ab5d8e7981242dc311a394e8d5ff57.tar.gz
haketilo-hydrilla-2363ab8054ab5d8e7981242dc311a394e8d5ff57.zip
[proxy] refactor we UI library and package pages templates to avoid code repetition
-rw-r--r--src/hydrilla/item_infos.py74
-rw-r--r--src/hydrilla/proxy/state.py16
-rw-r--r--src/hydrilla/proxy/web_ui/items.py16
-rw-r--r--src/hydrilla/proxy/web_ui/root.py4
-rw-r--r--src/hydrilla/proxy/web_ui/templates/items/item_view.html.jinja63
-rw-r--r--src/hydrilla/proxy/web_ui/templates/items/item_view.html.jinja.license (renamed from src/hydrilla/proxy/web_ui/templates/libraries/index.html.jinja.license)0
-rw-r--r--src/hydrilla/proxy/web_ui/templates/items/item_viewversion.html.jinja (renamed from src/hydrilla/proxy/web_ui/templates/libraries/show_single_version.html.jinja)59
-rw-r--r--src/hydrilla/proxy/web_ui/templates/items/item_viewversion.html.jinja.license (renamed from src/hydrilla/proxy/web_ui/templates/libraries/show_single.html.jinja.license)0
-rw-r--r--src/hydrilla/proxy/web_ui/templates/items/libraries.html.jinja (renamed from src/hydrilla/proxy/web_ui/templates/libraries/index.html.jinja)0
-rw-r--r--src/hydrilla/proxy/web_ui/templates/items/libraries.html.jinja.license (renamed from src/hydrilla/proxy/web_ui/templates/libraries/show_single_version.html.jinja.license)0
-rw-r--r--src/hydrilla/proxy/web_ui/templates/items/library_view.html.jinja34
-rw-r--r--src/hydrilla/proxy/web_ui/templates/items/library_view.html.jinja.license (renamed from src/hydrilla/proxy/web_ui/templates/packages/index.html.jinja.license)0
-rw-r--r--src/hydrilla/proxy/web_ui/templates/items/library_viewversion.html.jinja40
-rw-r--r--src/hydrilla/proxy/web_ui/templates/items/library_viewversion.html.jinja.license (renamed from src/hydrilla/proxy/web_ui/templates/packages/load_from_disk.html.jinja.license)0
-rw-r--r--src/hydrilla/proxy/web_ui/templates/items/load_from_disk.html.jinja (renamed from src/hydrilla/proxy/web_ui/templates/packages/load_from_disk.html.jinja)14
-rw-r--r--src/hydrilla/proxy/web_ui/templates/items/load_from_disk.html.jinja.license (renamed from src/hydrilla/proxy/web_ui/templates/packages/show_single.html.jinja.license)0
-rw-r--r--src/hydrilla/proxy/web_ui/templates/items/package_view.html.jinja34
-rw-r--r--src/hydrilla/proxy/web_ui/templates/items/package_view.html.jinja.license (renamed from src/hydrilla/proxy/web_ui/templates/packages/show_single_version.html.jinja.license)0
-rw-r--r--src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja40
-rw-r--r--src/hydrilla/proxy/web_ui/templates/items/package_viewversion.html.jinja.license7
-rw-r--r--src/hydrilla/proxy/web_ui/templates/items/packages.html.jinja (renamed from src/hydrilla/proxy/web_ui/templates/packages/index.html.jinja)8
-rw-r--r--src/hydrilla/proxy/web_ui/templates/items/packages.html.jinja.license7
-rw-r--r--src/hydrilla/proxy/web_ui/templates/libraries/show_single.html.jinja76
-rw-r--r--src/hydrilla/proxy/web_ui/templates/packages/show_single.html.jinja71
-rw-r--r--src/hydrilla/proxy/web_ui/templates/packages/show_single_version.html.jinja94
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 %}