Source code for ciowarehouse2.routes

"""CioWarehouse2 route definitions."""

from __future__ import annotations

from pyramid.request import Request
from pyramid.config import Configurator

from .lib.ciotype import CioType
from .lib.ciopath import CioPath

WAREHOUSE_REFRESH_PATH = 'warehouse/refresh'
HOME_PAGES = ['warehouse_index', 'search_favorite']
ADVANCED_SEARCH_ROUTE = '/search/favorite'


# =============================================================================
[docs] def includeme(configurator: Configurator): """Function to include routes. :type configurator: pyramid.config.Configurator :param configurator: Object used to do configuration declaration within the application. """ # Configuration configurator.add_route('ciowarehouse2_view', '/ciowarehouse2/view') configurator.add_route('ciowarehouse2_edit', '/ciowarehouse2/edit') # Seed configurator.add_route('seed_index', '/seed/index') configurator.add_route('seed_index_filter', '/seed/index/filter') configurator.add_route('seed_create', '/seed/create') configurator.add_route('seed_edit', '/seed/edit/{seed_id}') configurator.add_route('seed_view', '/seed/view/{seed_id}') # Warehouse configurator.add_route('warehouse_index', '/warehouse/index') configurator.add_route('warehouse_index_filter', '/warehouse/index/filter') configurator.add_route('warehouse_create', '/warehouse/create') configurator.add_route('warehouse_edit', '/warehouse/edit/{warehouse_id}') configurator.add_route('warehouse_view', '/warehouse/view/{warehouse_id}') configurator.add_route('warehouse_refresh', f'/{WAREHOUSE_REFRESH_PATH}') # Browse configurator.add_route('browse', '/browse/*ciopath') configurator.add_route('glance', '/glance/*ciopath') # Files configurator.add_route('file_view', '/file/view/{ciotype}/*ciopath') configurator.add_route('file_edit', '/file/edit/{ciotype}/*ciopath') configurator.add_route('file_preview', '/file/preview/{ciotype}/*ciopath') configurator.add_route('file_download', '/file/download/*ciopath') configurator.add_route('file_get', '/file/get/*ciopath') configurator.add_route( 'file_thumbnail', '/file/thumbnail/{size}/{extension}/{ciotype}/*ciopath') configurator.add_route('file_save', '/file/save/{ciotype}/*ciopath') configurator.add_route('file_move', '/file/move') # Suggest configurator.add_route('suggest_all', '/suggest/all') configurator.add_route('suggest_favorite', '/suggest/favorite') configurator.add_route('suggest_warehouse', '/suggest/warehouse/*ciopath') configurator.add_route('suggest_directory', '/suggest/directory/*ciopath') # Search configurator.add_route('search_all', '/search/all') configurator.add_route('search_favorite', ADVANCED_SEARCH_ROUTE) configurator.add_route('search_warehouse', '/search/warehouse/*ciopath') # Sharings configurator.add_route( 'sharing_download', '/sharing/download/{sharing_id}') configurator.add_route( 'sharing_download_one', '/sharing/download_one/{sharing_id}/*ciopath')
# =============================================================================
[docs] def route_thumbnail( request: Request, ciopath: CioPath, ciotype: CioType, icon: str, thumbnail_ext: str | None, size: str = 'medium') -> str: """Return the route path to the thumbnail of the given `CioPath`. :type request: pyramid.request.Request :param request: Current request. :type ciopath: .lib.ciopath.CioPath :param ciopath: The `CioPath` representing the file. :type ciotype: .lib.ciotype.CioType :param ciotype: The `CioType` representing the file. :param str icon: File name of the icon. :param str thumbnail_ext: Thumnbnail extension. :param str size: (``'medium'`` [default] or ``'large'``) The wanted size. :rtype: str """ # No known thumbnail => icon if thumbnail_ext is None: return route_icon(icon, 'medium') # Thumbnail return request.route_path( 'file_thumbnail', size=size, extension=thumbnail_ext, ciotype=ciotype.route(), ciopath=ciopath.route())
# =============================================================================
[docs] def route_icon(icon: str, size: str = 'medium') -> str: """Return the route path to the icon. :param str icon: File name of the icon. :param str size: (``'medium'`` [default] or ``'small'`` ) The wanted size. """ return f"/{__package__.split('.', maxsplit=1)[0]}/home/icons"\ f'/{size}/{icon}'