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:
Dannon Baker
2015-07-13 11:00:57 -04:00
parent 5e149d01ba
commit ab45efaba9
2 changed files with 11 additions and 11 deletions
+7 -7
View File
@@ -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))) \
+4 -4
View File
@@ -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 ):