Source code for swh.web.browse.browseurls

# Copyright (C) 2017-2022  The Software Heritage developers
# See the AUTHORS file at the top-level directory of this distribution
# License: GNU Affero General Public License version 3, or any later version
# See top-level LICENSE file for more information

from typing import List, Optional

from swh.web.utils.urlsindex import UrlsIndex

browse_urls = UrlsIndex()


[docs] def browse_route( *url_patterns: str, view_name: Optional[str] = None, checksum_args: Optional[List[str]] = None, ): """ Decorator to ease the registration of a swh-web browse endpoint Args: url_patterns: list of url patterns used by Django to identify the browse routes view_name: the name of the Django view associated to the routes used to reverse the url """ url_patterns = tuple("^browse/" + url_pattern + "$" for url_pattern in url_patterns) view_name = view_name def decorator(f): # register the route and its view in the browse endpoints index for url_pattern in url_patterns: browse_urls.add_url_pattern(url_pattern, f, view_name) if checksum_args: browse_urls.add_redirect_for_checksum_args( view_name, url_patterns, checksum_args ) return f return decorator