Merge pull request #20239 from natefoo/fix-ucsc-display-as

[24.1] Refactor display_as URL generation for UCSC links and fix to remove double slashes in URL
This commit is contained in:
Marius van den Beek
2025-05-19 16:52:44 +02:00
committed by GitHub
3 changed files with 26 additions and 34 deletions
+2 -7
View File
@@ -49,6 +49,7 @@ from galaxy.util import (
unicodify,
)
from galaxy.util.compression_utils import FileObjType
from .util.generic_util import display_as_url
gal_Log = logging.getLogger(__name__)
verbose = False
@@ -121,13 +122,7 @@ class GenomeGraphs(Tabular):
action="display_at",
filename=f"ucsc_{site_name}",
)
display_url = "%s%s/display_as?id=%i&display_app=%s&authz_method=display_at" % (
base_url,
app.url_for(controller="root"),
dataset.id,
type,
)
display_url = quote_plus(display_url)
display_url = display_as_url(app, base_url, str(dataset.id), type)
# was display_url = quote_plus( "%s/display_as?id=%i&display_app=%s" % (base_url, dataset.id, type) )
# redirect_url = quote_plus( "%sdb=%s&position=%s:%s-%s&hgt.customText=%%s" % (site_url, dataset.dbkey, chrom, start, stop) )
sl = [
+4 -27
View File
@@ -52,6 +52,7 @@ from . import (
data,
dataproviders,
)
from .util.generic_util import display_as_url
log = logging.getLogger(__name__)
@@ -345,15 +346,7 @@ class Interval(Tabular):
action="display_at",
filename="ucsc_" + site_name,
)
display_url = quote_plus(
"%s%s/display_as?id=%i&display_app=%s&authz_method=display_at"
% (
base_url,
app.url_for(controller="root"),
dataset.id,
type,
)
)
display_url = display_as_url(app, base_url, str(dataset.id), type)
redirect_url = quote_plus(f"{site_url}db={dataset.dbkey}&position={chrom}:{start}-{stop}&hgt.customText=%s")
link = f"{internal_url}?redirect_url={redirect_url}&display_url={display_url}"
ret_val.append((site_name, link))
@@ -783,15 +776,7 @@ class _RemoteCallMixin:
"""
internal_url = f"{app.url_for(controller='dataset', dataset_id=dataset.id, action='display_at', filename=f'{type}_{site_name}')}"
base_url = app.config.get("display_at_callback", base_url)
display_url = quote_plus(
"%s%s/display_as?id=%i&display_app=%s&authz_method=display_at"
% (
base_url,
app.url_for(controller="root"),
dataset.id,
type,
)
)
display_url = display_as_url(app, base_url, str(dataset.id), type)
link = f"{internal_url}?redirect_url={redirect_url}&display_url={display_url}"
return link
@@ -1566,15 +1551,7 @@ class CustomTrack(Tabular):
for site_name, site_url in app.datatypes_registry.get_legacy_sites_by_build("ucsc", dataset.dbkey):
if site_name in app.datatypes_registry.get_display_sites("ucsc"):
internal_url = f"{app.url_for(controller='dataset', dataset_id=dataset.id, action='display_at', filename='ucsc_' + site_name)}"
display_url = quote_plus(
"%s%s/display_as?id=%i&display_app=%s&authz_method=display_at"
% (
base_url,
app.url_for(controller="root"),
dataset.id,
type,
)
)
display_url = display_as_url(app, base_url, str(dataset.id), type)
redirect_url = quote_plus(
f"{site_url}db={dataset.dbkey}&position={chrom}:{start}-{stop}&hgt.customText=%s"
)
+20
View File
@@ -1,3 +1,9 @@
from urllib.parse import (
quote_plus,
urlencode,
urljoin,
)
from galaxy.util import commands
@@ -16,3 +22,17 @@ def count_special_lines(word, filename, invert=False):
except commands.CommandLineException:
return 0
return int(out)
def display_as_url(app, base_url: str, dataset_id: str, display_app: str) -> str:
"""Generate a link to the ``display_as`` action the the ``root`` controller, encoded for use as a query param."""
display_base_url = urljoin(base_url, app.url_for(controller="root", action="display_as"))
display_query = urlencode(
{
"id": dataset_id,
"display_app": display_app,
"authz_method": "display_at",
}
)
display_url = quote_plus(f"{display_base_url}?{display_query}")
return display_url