Skip to content

Commit

Permalink
check dbkey: [".."] as well, fix mypy errors
Browse files Browse the repository at this point in the history
  • Loading branch information
ahmedhamidawan committed Jan 30, 2024
1 parent 38b1107 commit 3e94c4d
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 5 deletions.
11 changes: 7 additions & 4 deletions lib/galaxy/managers/genomes.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ def _get_index_filename(self, id, tbl_entries, ext, index_type):

class GenomeFilterMixin:
orm_filter_parsers: "OrmFilterParsersType"
database_connection: str
valid_ops = ("eq", "contains", "has")

def create_genome_filter(self, attr, op, val):
Expand All @@ -89,19 +90,21 @@ def _create_genome_filter(model_class=None):
# Doesn't filter genome_build for collections
if model_class.__name__ == "HistoryDatasetCollectionAssociation":
return False
# TODO: should use is_postgres(self.app.config.database_connection) in 23.2
if self.app.config.database_connection.startswith("postgres"):
# 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})
3 changes: 2 additions & 1 deletion lib/galaxy/managers/history_contents.py
Original file line number Diff line number Diff line change
Expand Up @@ -631,9 +631,10 @@ def parse_type_id_list(self, type_id_list_string, sep=","):
return [self.decode_type_id(type_id) for type_id in type_id_list_string.split(sep)]

def _add_parsers(self):
database_connection: str = self.app.config.database_connection
super()._add_parsers()
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)
Expand Down

0 comments on commit 3e94c4d

Please sign in to comment.