mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-10-24 02:04:04 +08:00
Fix SA2.0 usage in managers.datasets
This commit is contained in:
@@ -13,6 +13,8 @@ from typing import (
|
||||
TypeVar,
|
||||
)
|
||||
|
||||
from sqlalchemy import select
|
||||
|
||||
from galaxy import (
|
||||
exceptions,
|
||||
model,
|
||||
@@ -25,6 +27,10 @@ from galaxy.managers import (
|
||||
secured,
|
||||
users,
|
||||
)
|
||||
from galaxy.model import (
|
||||
Dataset,
|
||||
DatasetHash,
|
||||
)
|
||||
from galaxy.model.base import transaction
|
||||
from galaxy.schema.tasks import (
|
||||
ComputeDatasetHashTaskRequest,
|
||||
@@ -103,7 +109,7 @@ class DatasetManager(base.ModelManager[model.Dataset], secured.AccessibleManager
|
||||
self.error_unless_dataset_purge_allowed()
|
||||
with self.session().begin():
|
||||
for dataset_id in request.dataset_ids:
|
||||
dataset: model.Dataset = self.session().query(model.Dataset).get(dataset_id)
|
||||
dataset: Dataset = self.session().get(Dataset, dataset_id)
|
||||
if dataset.user_can_purge:
|
||||
try:
|
||||
dataset.full_delete()
|
||||
@@ -158,15 +164,7 @@ class DatasetManager(base.ModelManager[model.Dataset], secured.AccessibleManager
|
||||
# TODO: replace/update if the combination of dataset_id/hash_function has already
|
||||
# been stored.
|
||||
sa_session = self.session()
|
||||
hash = (
|
||||
sa_session.query(model.DatasetHash)
|
||||
.filter(
|
||||
model.DatasetHash.dataset_id == dataset.id,
|
||||
model.DatasetHash.hash_function == hash_function,
|
||||
model.DatasetHash.extra_files_path == extra_files_path,
|
||||
)
|
||||
.one_or_none()
|
||||
)
|
||||
hash = get_dataset_hash(sa_session, dataset.id, hash_function, extra_files_path)
|
||||
if hash is None:
|
||||
sa_session.add(dataset_hash)
|
||||
with transaction(sa_session):
|
||||
@@ -477,7 +475,7 @@ class DatasetAssociationManager(
|
||||
|
||||
def detect_datatype(self, trans, dataset_assoc):
|
||||
"""Sniff and assign the datatype to a given dataset association (ldda or hda)"""
|
||||
data = trans.sa_session.query(self.model_class).get(dataset_assoc.id)
|
||||
data = trans.sa_session.get(self.model_class, dataset_assoc.id)
|
||||
self.ensure_can_change_datatype(data)
|
||||
self.ensure_can_set_metadata(data)
|
||||
path = data.dataset.get_file_name()
|
||||
@@ -489,7 +487,7 @@ class DatasetAssociationManager(
|
||||
|
||||
def set_metadata(self, trans, dataset_assoc, overwrite=False, validate=True):
|
||||
"""Trigger a job that detects and sets metadata on a given dataset association (ldda or hda)"""
|
||||
data = trans.sa_session.query(self.model_class).get(dataset_assoc.id)
|
||||
data = trans.sa_session.get(self.model_class, dataset_assoc.id)
|
||||
self.ensure_can_set_metadata(data)
|
||||
if overwrite:
|
||||
self.overwrite_metadata(data)
|
||||
@@ -874,3 +872,13 @@ class DatasetAssociationFilterParser(base.ModelFilterParser, deletable.PurgableF
|
||||
if datatype_class:
|
||||
comparison_classes.append(datatype_class)
|
||||
return comparison_classes and isinstance(dataset_assoc.datatype, tuple(comparison_classes))
|
||||
|
||||
|
||||
def get_dataset_hash(session, dataset_id, hash_function, extra_files_path):
|
||||
stmt = (
|
||||
select(DatasetHash)
|
||||
.where(DatasetHash.dataset_id == dataset_id)
|
||||
.where(DatasetHash.hash_function == hash_function)
|
||||
.where(DatasetHash.extra_files_path == extra_files_path)
|
||||
)
|
||||
return session.scalars(stmt).one_or_none()
|
||||
|
||||
Reference in New Issue
Block a user