swh.web.utils package#

Subpackages:

Submodules:

Module contents:

swh.web.utils.reverse(viewname: str, url_args: Optional[Dict[str, Any]] = None, query_params: Optional[Mapping[str, Optional[str]]] = None, current_app: Optional[str] = None, urlconf: Optional[str] = None, request: Optional[HttpRequest] = None) str[source]#

An override of django reverse function supporting query parameters.

Parameters:
  • viewname – the name of the django view from which to compute a url

  • url_args – dictionary of url arguments indexed by their names

  • query_params – dictionary of query parameters to append to the reversed url

  • current_app – the name of the django app tighten to the view

  • urlconf – url configuration module

  • request – build an absolute URI if provided

Returns:

the url of the requested view with processed arguments and query parameters

Return type:

str

swh.web.utils.datetime_to_utc(date)[source]#

Returns datetime in UTC without timezone info

Parameters:

date (datetime.datetime) – input datetime with timezone info

Returns:

datetime in UTC without timezone info

Return type:

datetime.datetime

swh.web.utils.parse_iso8601_date_to_utc(iso_date: str) datetime[source]#

Given an ISO 8601 datetime string, parse the result as UTC datetime.

Returns:

a timezone-aware datetime representing the parsed date

Raises:

swh.web.utils.exc.BadInputExc – provided date does not respect ISO 8601 format

Samples:
  • 2016-01-12

  • 2016-01-12T09:19:12+0100

  • 2007-01-14T20:34:22Z

swh.web.utils.shorten_path(path)[source]#

Shorten the given path: for each hash present, only return the first 8 characters followed by an ellipsis

swh.web.utils.format_utc_iso_date(iso_date, fmt='%d %B %Y, %H:%M:%S UTC')[source]#

Turns a string representation of an ISO 8601 datetime string to UTC and format it into a more human readable one.

For instance, from the following input string: ‘2017-05-04T13:27:13+02:00’ the following one is returned: ‘04 May 2017, 11:27 UTC’. Custom format string may also be provided as parameter

Parameters:
  • iso_date (str) – a string representation of an ISO 8601 date

  • fmt (str) – optional date formatting string

Returns:

a formatted string representation of the input iso date

Return type:

str

swh.web.utils.gen_path_info(path)[source]#

Function to generate path data navigation for use with a breadcrumb in the swh web ui.

For instance, from a path /folder1/folder2/folder3, it returns the following list:

[{'name': 'folder1', 'path': 'folder1'},
 {'name': 'folder2', 'path': 'folder1/folder2'},
 {'name': 'folder3', 'path': 'folder1/folder2/folder3'}]
Parameters:

path – a filesystem path

Returns:

a list of path data for navigation as illustrated above.

Return type:

list

swh.web.utils.parse_rst(text, report_level=2)[source]#

Parse a reStructuredText string with docutils.

Parameters:
  • text (str) – string with reStructuredText markups in it

  • report_level (int) – level of docutils report messages to print (1 info 2 warning 3 error 4 severe 5 none)

Returns:

a parsed docutils document

Return type:

docutils.nodes.document

swh.web.utils.get_client_ip(request)[source]#

Return the client IP address from an incoming HTTP request.

Parameters:

request (django.http.HttpRequest) – the incoming HTTP request

Returns:

The client IP address

Return type:

str

swh.web.utils.is_swh_web_development(request: HttpRequest) bool[source]#

Indicate if we are running a development version of swh-web.

swh.web.utils.is_swh_web_staging(request: HttpRequest) bool[source]#

Indicate if we are running a staging version of swh-web.

swh.web.utils.is_swh_web_production(request: HttpRequest) bool[source]#

Indicate if we are running the public production version of swh-web.

swh.web.utils.context_processor(request)[source]#

Django context processor used to inject variables in all swh-web templates.

swh.web.utils.resolve_branch_alias(snapshot: Dict[str, Any], branch: Optional[Dict[str, Any]]) Optional[Dict[str, Any]][source]#

Resolve branch alias in snapshot content.

Parameters:
  • snapshot – a full snapshot content

  • branch – a branch alias contained in the snapshot

Returns:

The real snapshot branch that got aliased.

swh.web.utils.rst_to_html(rst: str) str[source]#

Convert reStructuredText document into HTML.

Parameters:

rst – A string containing a reStructuredText document

Returns:

Body content of the produced HTML conversion.

swh.web.utils.prettify_html(html: str) str[source]#

Prettify an HTML document.

Parameters:

html – Input HTML document

Returns:

The prettified HTML document

swh.web.utils.django_cache(timeout: int = <object object>, catch_exception: bool = False, exception_return_value: ~typing.Optional[~typing.Any] = None, invalidate_cache_pred: ~typing.Callable[[~typing.Any], bool] = <function <lambda>>)[source]#

Decorator to put the result of a function call in Django cache, subsequent calls will directly return the cached value.

Parameters:
  • timeout – The number of seconds value will be hold in cache

  • catch_exception – If True, any thrown exception by the decorated function will be caught and not reraised

  • exception_return_value – The value to return if previous parameter is set to True

  • invalidate_cache_pred – A predicate function enabling to invalidate the cache under certain conditions, decorated function will then be called again

Returns:

The returned value of the decorated function for the specified parameters

swh.web.utils.get_deposits_list(username: Optional[str] = None) List[Dict[str, Any]][source]#

Return the list of software deposits using swh-deposit API

swh.web.utils.origin_visit_types(use_cache: bool = True) List[str][source]#

Return the exhaustive list of visit types for origins ingested into the archive.

Parameters:

use_cache – if True, store visit types in django cache for 24 hours.

swh.web.utils.redirect_to_new_route(request, new_route, permanent=True)[source]#

Redirect a request to another route with url args and query parameters eg: /origin/<url:url-val>/log?path=test can be redirected as /log?url=<url-val>&path=test. This can be used to deprecate routes