aboutsummaryrefslogtreecommitdiff
path: root/src/hydrilla/proxy/web_ui/items.py
diff options
context:
space:
mode:
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':