aboutsummaryrefslogtreecommitdiff
path: root/src/hydrilla/proxy/web_ui/items.py
diff options
context:
space:
mode:
authorWojtek Kosior <koszko@koszko.org>2022-09-02 13:51:25 +0200
committerWojtek Kosior <koszko@koszko.org>2022-09-09 13:55:05 +0200
commit781770b26a6387d7cdd5b3fc1ec56036dc62fc5b (patch)
treecde99e6298a25de9e6b5684d26afe6fe2dc70c6a /src/hydrilla/proxy/web_ui/items.py
parentcd312000a0c270f510e87f92f154af86ac16386b (diff)
downloadhaketilo-hydrilla-781770b26a6387d7cdd5b3fc1ec56036dc62fc5b.tar.gz
haketilo-hydrilla-781770b26a6387d7cdd5b3fc1ec56036dc62fc5b.zip
[proxy] allow packages to be frozen and unfrozen in the web UI
This commit also makes some minor changes and fixes in other parts of the web UI.
Diffstat (limited to 'src/hydrilla/proxy/web_ui/items.py')
-rw-r--r--src/hydrilla/proxy/web_ui/items.py62
1 files changed, 24 insertions, 38 deletions
diff --git a/src/hydrilla/proxy/web_ui/items.py b/src/hydrilla/proxy/web_ui/items.py
index 01ae406..a781856 100644
--- a/src/hydrilla/proxy/web_ui/items.py
+++ b/src/hydrilla/proxy/web_ui/items.py
@@ -124,40 +124,11 @@ def show_item(item_id: str, item_type: item_infos.ItemType) \
-> werkzeug.Response:
try:
store = item_store(_app.get_haketilo_state(), item_type)
- item_ref = store.get(str(item_id))
- version_display_infos = item_ref.get_version_display_infos()
-
- display_info: t.Union[st.MappingDisplayInfo, st.ResourceDisplayInfo]
-
- if isinstance(item_ref, st.ResourceRef):
- display_info = st.ResourceDisplayInfo(
- ref = item_ref,
- identifier = version_display_infos[0].info.identifier
- )
- else:
- version_display_infos = t.cast(
- t.Sequence[st.MappingVersionDisplayInfo],
- version_display_infos
- )
-
- active_version: t.Optional[st.MappingVersionDisplayInfo] = None
-
- for info in version_display_infos:
- if info.active != st.ActiveStatus.NOT_ACTIVE:
- active_version = info
-
- display_info = st.MappingDisplayInfo(
- ref = item_ref,
- identifier = version_display_infos[0].info.identifier,
- enabled = version_display_infos[0].mapping_enabled,
- frozen = version_display_infos[0].mapping_frozen,
- active_version = active_version
- )
+ display_info = store.get(str(item_id)).get_display_info()
html = flask.render_template(
f'items/{item_type.alt_name}_view.html.jinja',
- display_info = display_info,
- version_display_infos = version_display_infos
+ display_info = display_info
)
return flask.make_response(html, 200)
except st.MissingItemError:
@@ -194,23 +165,20 @@ def show_item_version(
try:
store = item_version_store(_app.get_haketilo_state(), item_type)
version_ref = store.get(item_version_id)
- display_infos = version_ref.get_all_version_display_infos()
+ display_info = version_ref.get_item_display_info()
- other_infos: list[ItemVersionDisplayInfo] = []
this_info: t.Optional[ItemVersionDisplayInfo] = None
- for info in display_infos:
+ for info in display_info.all_versions:
if info.ref == version_ref:
this_info = info
- else:
- other_infos.append(info)
assert this_info is not None
html = flask.render_template(
f'items/{item_type.alt_name}_viewversion.html.jinja',
- display_info = this_info,
- version_display_infos = other_infos,
+ display_info = display_info,
+ version_display_info = this_info,
**errors
)
return flask.make_response(html, 200)
@@ -246,6 +214,24 @@ def alter_item_version(item_version_id: str, item_type: item_infos.ItemType) \
enabled = st.EnabledStatus.ENABLED,
frozen = st.FrozenStatus.EXACT_VERSION,
)
+ elif action == 'unfreeze_item':
+ assert isinstance(item_version_ref, st.MappingVersionRef)
+ item_version_ref.update_mapping_status(
+ enabled = st.EnabledStatus.ENABLED,
+ frozen = st.FrozenStatus.NOT_FROZEN,
+ )
+ elif action == 'freeze_to_repo':
+ assert isinstance(item_version_ref, st.MappingVersionRef)
+ item_version_ref.update_mapping_status(
+ enabled = st.EnabledStatus.ENABLED,
+ frozen = st.FrozenStatus.REPOSITORY,
+ )
+ elif action == 'freeze_to_version':
+ assert isinstance(item_version_ref, st.MappingVersionRef)
+ item_version_ref.update_mapping_status(
+ enabled = st.EnabledStatus.ENABLED,
+ frozen = st.FrozenStatus.EXACT_VERSION,
+ )
elif action == 'install_item_version':
item_version_ref.install()
elif action == 'uninstall_item_version':