mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Fix broken sqlalchemy identity logic. Example:
``` In [3]: sa_session.query(galaxy.model.User).filter(galaxy.model.User.deleted is False).all() Out[3]: [] In [4]: sa_session.query(galaxy.model.User).filter(galaxy.model.User.deleted == False).all() Out[4]: [<galaxy.model.User at 0x1094e1610>] ```
This commit is contained in:
@@ -8,7 +8,7 @@ import logging
|
||||
import threading
|
||||
from Queue import Queue, Empty
|
||||
|
||||
from sqlalchemy.sql.expression import and_, or_, select, func
|
||||
from sqlalchemy.sql.expression import and_, or_, select, func, true
|
||||
|
||||
from galaxy import model
|
||||
from galaxy.util.sleeper import Sleeper
|
||||
@@ -112,7 +112,7 @@ class JobHandlerQueue( object ):
|
||||
.outerjoin( model.User ) \
|
||||
.filter( model.Job.state.in_( in_list ) &
|
||||
( model.Job.handler == self.app.config.server_name ) &
|
||||
or_( ( model.Job.user_id is None ), ( model.User.active is True ) ) ).all()
|
||||
or_( ( model.Job.user_id is None ), ( model.User.active == true() ) ) ).all()
|
||||
else:
|
||||
jobs_at_startup = self.sa_session.query( model.Job ).enable_eagerloads( False ) \
|
||||
.filter( model.Job.state.in_( in_list ) &
|
||||
@@ -204,23 +204,23 @@ class JobHandlerQueue( object ):
|
||||
.join(model.Dataset) \
|
||||
.filter(and_( (model.Job.state == model.Job.states.NEW ),
|
||||
or_( ( model.HistoryDatasetAssociation._state == model.HistoryDatasetAssociation.states.FAILED_METADATA ),
|
||||
( model.HistoryDatasetAssociation.deleted is True ),
|
||||
( model.HistoryDatasetAssociation.deleted == true() ),
|
||||
( model.Dataset.state != model.Dataset.states.OK ),
|
||||
( model.Dataset.deleted is True) ) ) ).subquery()
|
||||
( model.Dataset.deleted == true() ) ) ) ).subquery()
|
||||
ldda_not_ready = self.sa_session.query(model.Job.id).enable_eagerloads(False) \
|
||||
.join(model.JobToInputLibraryDatasetAssociation) \
|
||||
.join(model.LibraryDatasetDatasetAssociation) \
|
||||
.join(model.Dataset) \
|
||||
.filter(and_((model.Job.state == model.Job.states.NEW),
|
||||
or_((model.LibraryDatasetDatasetAssociation._state is not None),
|
||||
(model.LibraryDatasetDatasetAssociation.deleted is True),
|
||||
(model.LibraryDatasetDatasetAssociation.deleted == true()),
|
||||
(model.Dataset.state != model.Dataset.states.OK),
|
||||
(model.Dataset.deleted is True)))).subquery()
|
||||
(model.Dataset.deleted == true())))).subquery()
|
||||
if self.app.config.user_activation_on:
|
||||
jobs_to_check = self.sa_session.query(model.Job).enable_eagerloads(False) \
|
||||
.outerjoin( model.User ) \
|
||||
.filter(and_((model.Job.state == model.Job.states.NEW),
|
||||
or_((model.Job.user_id is None), (model.User.active is True)),
|
||||
or_((model.Job.user_id is None), (model.User.active == true())),
|
||||
(model.Job.handler == self.app.config.server_name),
|
||||
~model.Job.table.c.id.in_(hda_not_ready),
|
||||
~model.Job.table.c.id.in_(ldda_not_ready))) \
|
||||
|
||||
@@ -9,6 +9,7 @@ pkg_resources.require( "Paste" )
|
||||
|
||||
pkg_resources.require( "SQLAlchemy >= 0.4" )
|
||||
import sqlalchemy
|
||||
from sqlalchemy.sql.expression import true, false
|
||||
|
||||
from galaxy import exceptions
|
||||
from galaxy.web import _future_expose_api as expose_api
|
||||
@@ -122,8 +123,7 @@ class HistoriesController( BaseAPIController, ExportsHistoryMixin, ImportsHistor
|
||||
|
||||
rval = []
|
||||
for history in histories:
|
||||
history_dict = self.history_serializer.serialize_to_view( history,
|
||||
user=trans.user, trans=trans, **serialization_params )
|
||||
history_dict = self.history_serializer.serialize_to_view( history, user=trans.user, trans=trans, **serialization_params )
|
||||
rval.append( history_dict )
|
||||
return rval
|
||||
|
||||
@@ -141,7 +141,7 @@ class HistoriesController( BaseAPIController, ExportsHistoryMixin, ImportsHistor
|
||||
|
||||
# the deleted string bool was also used as an 'include deleted' flag
|
||||
if deleted in ( 'True', 'true' ):
|
||||
return [ self.app.model.History.deleted is True ]
|
||||
return [ self.app.model.History.deleted == true() ]
|
||||
|
||||
# the third option not handled here is 'return only deleted'
|
||||
# if this is passed in (in the form below), simply return and let the filter system handle it
|
||||
@@ -149,7 +149,7 @@ class HistoriesController( BaseAPIController, ExportsHistoryMixin, ImportsHistor
|
||||
return []
|
||||
|
||||
# otherwise, do the default filter of removing the deleted histories
|
||||
return [ self.app.model.History.deleted is False ]
|
||||
return [ self.app.model.History.deleted == false() ]
|
||||
|
||||
@expose_api_anonymous
|
||||
def show( self, trans, id, deleted='False', **kwd ):
|
||||
|
||||
Reference in New Issue
Block a user