# HG changeset patch # User Goffi # Date 1633013874 -7200 # Node ID 2c84498852728a6125dec18433cd3e8267f2c80c # Parent 87e48b6a1bbd403d30fe5907466cdb0d36caea9a pages: query parameters can now be specified using keyword arguments in `getURL:` rel: 399 diff -r 87e48b6a1bbd -r 2c8449885272 libervia/server/pages.py --- a/libervia/server/pages.py Thu Sep 30 11:55:42 2021 +0200 +++ b/libervia/server/pages.py Thu Sep 30 16:57:54 2021 +0200 @@ -665,11 +665,12 @@ else url.encode("utf-8"), ) - def getURL(self, *args: str) -> str: + def getURL(self, *args: str, **kwargs: str) -> str: """retrieve URL of the page set arguments @param *args: arguments to add to the URL as path elements empty or None arguments will be ignored + @param **kwargs: query parameters """ url_args = [quote(a) for a in args if a] @@ -683,11 +684,20 @@ url_base = redirect_data[current_hash] remaining = args[limit:] remaining_url = "/".join(remaining) - return os.path.join("/", url_base, remaining_url) + url = os.path.join("/", url_base, remaining_url) + break + else: + url = os.path.join(self.url, *url_args) + + if kwargs: + encoded = urllib.parse.urlencode( + {k: v for k, v in kwargs.items()} + ) + url += f"?{encoded}" return self.host.checkRedirection( self.vhost_root, - os.path.join(self.url, *url_args) + url ) def getCurrentURL(self, request):