diff options
Diffstat (limited to 'src/hydrilla/proxy/web_ui/items.py')
-rw-r--r-- | src/hydrilla/proxy/web_ui/items.py | 62 |
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': |