mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-21 13:50:20 +08:00
Merge branch 'release_23.0' into release_23.1
This commit is contained in:
@@ -4,7 +4,10 @@ from typing import (
|
||||
TYPE_CHECKING,
|
||||
)
|
||||
|
||||
from sqlalchemy import func
|
||||
from sqlalchemy import (
|
||||
func,
|
||||
text,
|
||||
)
|
||||
|
||||
from galaxy import model as m
|
||||
from galaxy.exceptions import (
|
||||
@@ -75,6 +78,7 @@ class GenomesManager:
|
||||
|
||||
class GenomeFilterMixin:
|
||||
orm_filter_parsers: "OrmFilterParsersType"
|
||||
database_connection: str
|
||||
valid_ops = ("eq", "contains", "has")
|
||||
|
||||
def create_genome_filter(self, attr, op, val):
|
||||
@@ -86,15 +90,21 @@ class GenomeFilterMixin:
|
||||
# Doesn't filter genome_build for collections
|
||||
if model_class.__name__ == "HistoryDatasetCollectionAssociation":
|
||||
return False
|
||||
column = func.json_extract(model_class.table.c._metadata, "$.dbkey")
|
||||
# TODO: should use is_postgres(self.database_connection) in 23.2
|
||||
if self.database_connection.startswith("postgres"):
|
||||
column = text("convert_from(metadata, 'UTF8')::json ->> 'dbkey'")
|
||||
else:
|
||||
column = func.json_extract(model_class.table.c._metadata, "$.dbkey")
|
||||
lower_val = val.lower() # Ignore case
|
||||
# dbkey can either be "hg38" or '["hg38"]', so we need to check both
|
||||
if op == "eq":
|
||||
cond = func.lower(column) == lower_val
|
||||
cond = func.lower(column) == lower_val or func.lower(column) == f'["{lower_val}"]'
|
||||
else:
|
||||
cond = func.lower(column).contains(lower_val, autoescape=True)
|
||||
return cond
|
||||
|
||||
return _create_genome_filter
|
||||
|
||||
def _add_parsers(self):
|
||||
def _add_parsers(self, database_connection: str):
|
||||
self.database_connection = database_connection
|
||||
self.orm_filter_parsers.update({"genome_build": self.create_genome_filter})
|
||||
|
||||
@@ -637,8 +637,9 @@ class HistoryContentsFilters(
|
||||
|
||||
def _add_parsers(self):
|
||||
super()._add_parsers()
|
||||
database_connection: str = self.app.config.database_connection
|
||||
annotatable.AnnotatableFilterMixin._add_parsers(self)
|
||||
genomes.GenomeFilterMixin._add_parsers(self)
|
||||
genomes.GenomeFilterMixin._add_parsers(self, database_connection)
|
||||
deletable.PurgableFiltersMixin._add_parsers(self)
|
||||
taggable.TaggableFilterMixin._add_parsers(self)
|
||||
tools.ToolFilterMixin._add_parsers(self)
|
||||
|
||||
Reference in New Issue
Block a user