mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
imported patch alchemy05_fixes_01
This commit is contained in:
@@ -28,6 +28,7 @@ PSI = 0.3b1.1
|
||||
[eggs:noplatform]
|
||||
amqplib = 0.6.1
|
||||
Beaker = 1.4
|
||||
decorator = 3.1.2
|
||||
docutils = 0.4
|
||||
elementtree = 1.2.6_20050316
|
||||
lrucache = 0.2
|
||||
@@ -41,8 +42,8 @@ PasteDeploy = 1.3.1
|
||||
PasteScript = 1.3.6
|
||||
Routes = 1.6.3
|
||||
simplejson = 1.5
|
||||
SQLAlchemy = 0.4.7p1
|
||||
sqlalchemy_migrate = 0.4.5
|
||||
SQLAlchemy = 0.5.6
|
||||
sqlalchemy_migrate = 0.5.4
|
||||
Tempita = 0.1
|
||||
twill = 0.9
|
||||
WebError = 0.8a
|
||||
@@ -77,6 +78,7 @@ threadframe = http://www.majid.info/python/threadframe/threadframe-0.2.tar.gz
|
||||
guppy = http://pypi.python.org/packages/source/g/guppy/guppy-0.1.8.tar.gz
|
||||
amqplib = http://py-amqplib.googlecode.com/files/amqplib-0.6.1.tgz
|
||||
Beaker = http://cheeseshop.python.org/packages/source/B/Beaker/Beaker-1.4.tar.gz
|
||||
decorator = http://pypi.python.org/packages/source/d/decorator/decorator-3.1.2.tar.gz
|
||||
docutils = http://downloads.sourceforge.net/docutils/docutils-0.4.tar.gz
|
||||
elementtree = http://effbot.org/downloads/elementtree-1.2.6-20050316.tar.gz
|
||||
lrucache = http://evan.prodromou.name/lrucache/lrucache-0.2.tar.gz
|
||||
@@ -90,8 +92,8 @@ PasteScript = http://cheeseshop.python.org/packages/source/P/PasteScript/PasteSc
|
||||
PSI = http://pypi.python.org/packages/source/P/PSI/PSI-0.3b1.1.tar.gz
|
||||
Routes = http://pypi.python.org/packages/source/R/Routes/Routes-1.6.3.tar.gz
|
||||
simplejson = http://cheeseshop.python.org/packages/source/s/simplejson/simplejson-1.5.tar.gz
|
||||
SQLAlchemy = http://pypi.python.org/packages/source/S/SQLAlchemy/SQLAlchemy-0.4.7p1.tar.gz
|
||||
sqlalchemy_migrate = http://pypi.python.org/packages/source/s/sqlalchemy-migrate/sqlalchemy-migrate-0.4.5.tar.gz
|
||||
SQLAlchemy = http://pypi.python.org/packages/source/S/SQLAlchemy/SQLAlchemy-0.5.6.tar.gz
|
||||
sqlalchemy_migrate = http://pypi.python.org/packages/source/s/sqlalchemy-migrate/sqlalchemy-migrate-0.5.4.tar.gz
|
||||
Tempita = http://pypi.python.org/packages/source/T/Tempita/Tempita-0.1.tar.gz
|
||||
twill = http://darcs.idyll.org/~t/projects/twill-0.9.tar.gz
|
||||
WebError = http://pypi.python.org/packages/source/W/WebError/WebError-0.8a.tar.gz
|
||||
|
||||
@@ -18,7 +18,7 @@ from sqlalchemy.orm.collections import attribute_mapped_collection
|
||||
from sqlalchemy.ext.associationproxy import association_proxy
|
||||
|
||||
metadata = MetaData()
|
||||
context = Session = scoped_session( sessionmaker( autoflush=False, transactional=False ) )
|
||||
context = Session = scoped_session( sessionmaker( autoflush=False, autocommit=True ) )
|
||||
|
||||
# For backward compatibility with "context.current"
|
||||
context.current = Session
|
||||
|
||||
@@ -7,7 +7,7 @@ pkg_resources.require( "sqlalchemy-migrate" )
|
||||
|
||||
from migrate.versioning import repository, schema
|
||||
from sqlalchemy import *
|
||||
from sqlalchemy.exceptions import NoSuchTableError
|
||||
from sqlalchemy.exc import NoSuchTableError
|
||||
|
||||
log = logging.getLogger( __name__ )
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
from sqlalchemy import *
|
||||
from sqlalchemy.orm import *
|
||||
from sqlalchemy.exceptions import *
|
||||
from sqlalchemy.exc import *
|
||||
from migrate import *
|
||||
from migrate.changeset import *
|
||||
|
||||
@@ -20,7 +20,7 @@ log.addHandler( handler )
|
||||
from galaxy.model.custom_types import *
|
||||
|
||||
metadata = MetaData( migrate_engine )
|
||||
db_session = scoped_session( sessionmaker( bind=migrate_engine, autoflush=False, transactional=False ) )
|
||||
db_session = scoped_session( sessionmaker( bind=migrate_engine, autoflush=False, autocommit=True ) )
|
||||
|
||||
if migrate_engine.name == 'postgres':
|
||||
# http://blog.pythonisito.com/2008/01/cascading-drop-table-with-sqlalchemy.html
|
||||
|
||||
@@ -12,7 +12,7 @@ handler.setFormatter( formatter )
|
||||
log.addHandler( handler )
|
||||
|
||||
metadata = MetaData( migrate_engine )
|
||||
db_session = scoped_session( sessionmaker( bind=migrate_engine, autoflush=False, transactional=False ) )
|
||||
db_session = scoped_session( sessionmaker( bind=migrate_engine, autoflush=False, autocommit=True ) )
|
||||
User_table = Table( "galaxy_user", metadata, autoload=True )
|
||||
HistoryDatasetAssociation_table = Table( "history_dataset_association", metadata, autoload=True )
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ from galaxy.util.bunch import Bunch
|
||||
|
||||
|
||||
metadata = MetaData( migrate_engine )
|
||||
context = scoped_session( sessionmaker( autoflush=False, transactional=False ) )
|
||||
context = scoped_session( sessionmaker( autoflush=False, autocommit=True ) )
|
||||
|
||||
|
||||
## classes
|
||||
@@ -662,7 +662,7 @@ def upgrade():
|
||||
log.debug( "Fixing a discrepancy concerning deleted shared history items." )
|
||||
affected_items = 0
|
||||
start_time = time.time()
|
||||
for dataset in context.query( Dataset ).filter( and_( Dataset.c.deleted == True, Dataset.c.purged == False ) ):
|
||||
for dataset in context.query( Dataset ).filter( and_( Dataset.deleted == True, Dataset.purged == False ) ):
|
||||
for dataset_instance in dataset.history_associations + dataset.library_associations:
|
||||
if not dataset_instance.deleted:
|
||||
dataset.deleted = False
|
||||
|
||||
@@ -16,7 +16,7 @@ handler.setFormatter( formatter )
|
||||
log.addHandler( handler )
|
||||
|
||||
metadata = MetaData( migrate_engine )
|
||||
db_session = scoped_session( sessionmaker( bind=migrate_engine, autoflush=False, transactional=False ) )
|
||||
db_session = scoped_session( sessionmaker( bind=migrate_engine, autoflush=False, autocommit=True ) )
|
||||
|
||||
def display_migration_details():
|
||||
print "========================================"
|
||||
|
||||
@@ -11,7 +11,7 @@ This migration script adds the following new tables for supporting Galaxy forms:
|
||||
"""
|
||||
from sqlalchemy import *
|
||||
from sqlalchemy.orm import *
|
||||
from sqlalchemy.exceptions import *
|
||||
from sqlalchemy.exc import *
|
||||
from migrate import *
|
||||
from migrate.changeset import *
|
||||
|
||||
@@ -31,7 +31,7 @@ log.addHandler( handler )
|
||||
from galaxy.model.custom_types import *
|
||||
|
||||
metadata = MetaData( migrate_engine )
|
||||
db_session = scoped_session( sessionmaker( bind=migrate_engine, autoflush=False, transactional=False ) )
|
||||
db_session = scoped_session( sessionmaker( bind=migrate_engine, autoflush=False, autocommit=True ) )
|
||||
|
||||
def display_migration_details():
|
||||
print "========================================"
|
||||
|
||||
@@ -9,7 +9,7 @@ from migrate import *
|
||||
from migrate.changeset import *
|
||||
import sys, logging
|
||||
from galaxy.model.custom_types import *
|
||||
from sqlalchemy.exceptions import *
|
||||
from sqlalchemy.exc import *
|
||||
|
||||
log = logging.getLogger( __name__ )
|
||||
log.setLevel(logging.DEBUG)
|
||||
|
||||
@@ -10,7 +10,7 @@ is too long
|
||||
"""
|
||||
from sqlalchemy import *
|
||||
from sqlalchemy.orm import *
|
||||
from sqlalchemy.exceptions import *
|
||||
from sqlalchemy.exc import *
|
||||
from migrate import *
|
||||
from migrate.changeset import *
|
||||
|
||||
@@ -30,7 +30,7 @@ log.addHandler( handler )
|
||||
from galaxy.model.custom_types import *
|
||||
|
||||
metadata = MetaData( migrate_engine )
|
||||
db_session = scoped_session( sessionmaker( bind=migrate_engine, autoflush=False, transactional=False ) )
|
||||
db_session = scoped_session( sessionmaker( bind=migrate_engine, autoflush=False, autocommit=True ) )
|
||||
|
||||
def display_migration_details():
|
||||
print "========================================"
|
||||
|
||||
@@ -5,7 +5,7 @@ manually created.
|
||||
"""
|
||||
from sqlalchemy import *
|
||||
from sqlalchemy.orm import *
|
||||
from sqlalchemy.exceptions import *
|
||||
from sqlalchemy.exc import *
|
||||
from migrate import *
|
||||
from migrate.changeset import *
|
||||
|
||||
@@ -25,7 +25,7 @@ log.addHandler( handler )
|
||||
from galaxy.model.custom_types import *
|
||||
|
||||
metadata = MetaData( migrate_engine )
|
||||
db_session = scoped_session( sessionmaker( bind=migrate_engine, autoflush=False, transactional=False ) )
|
||||
db_session = scoped_session( sessionmaker( bind=migrate_engine, autoflush=False, autocommit=True ) )
|
||||
|
||||
def display_migration_details():
|
||||
print "========================================"
|
||||
|
||||
@@ -6,7 +6,7 @@ which is a string, allowing for more flexibility with request states.
|
||||
"""
|
||||
from sqlalchemy import *
|
||||
from sqlalchemy.orm import *
|
||||
from sqlalchemy.exceptions import *
|
||||
from sqlalchemy.exc import *
|
||||
from migrate import *
|
||||
from migrate.changeset import *
|
||||
import datetime
|
||||
@@ -24,7 +24,7 @@ handler.setFormatter( formatter )
|
||||
log.addHandler( handler )
|
||||
|
||||
metadata = MetaData( migrate_engine )
|
||||
db_session = scoped_session( sessionmaker( bind=migrate_engine, autoflush=False, transactional=False ) )
|
||||
db_session = scoped_session( sessionmaker( bind=migrate_engine, autoflush=False, autocommit=True ) )
|
||||
|
||||
def display_migration_details():
|
||||
print "========================================"
|
||||
|
||||
@@ -17,7 +17,7 @@ with a shortened name.
|
||||
"""
|
||||
from sqlalchemy import *
|
||||
from sqlalchemy.orm import *
|
||||
from sqlalchemy.exceptions import *
|
||||
from sqlalchemy.exc import *
|
||||
from migrate import *
|
||||
from migrate.changeset import *
|
||||
import sys, logging
|
||||
|
||||
@@ -16,7 +16,7 @@ handler.setFormatter( formatter )
|
||||
log.addHandler( handler )
|
||||
|
||||
metadata = MetaData( migrate_engine )
|
||||
db_session = scoped_session( sessionmaker( bind=migrate_engine, autoflush=False, transactional=False ) )
|
||||
db_session = scoped_session( sessionmaker( bind=migrate_engine, autoflush=False, autocommit=True ) )
|
||||
LibraryFolder_table = Table( "library_folder", metadata, autoload=True )
|
||||
LibraryDatasetDatasetAssociation_table = Table( "library_dataset_dataset_association", metadata, autoload=True )
|
||||
LibraryDataset_table = Table( "library_dataset", metadata, autoload=True )
|
||||
|
||||
@@ -5,7 +5,7 @@ This migration script provides support for (a) ordering tags by recency and
|
||||
|
||||
from sqlalchemy import *
|
||||
from sqlalchemy.orm import *
|
||||
from sqlalchemy.exceptions import *
|
||||
from sqlalchemy.exc import *
|
||||
from migrate import *
|
||||
import migrate.changeset
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
from sqlalchemy import *
|
||||
from sqlalchemy.orm import *
|
||||
from sqlalchemy.exceptions import *
|
||||
from sqlalchemy.exc import *
|
||||
from migrate import *
|
||||
from migrate.changeset import *
|
||||
import datetime
|
||||
@@ -18,7 +18,7 @@ handler.setFormatter( formatter )
|
||||
log.addHandler( handler )
|
||||
|
||||
metadata = MetaData( migrate_engine )
|
||||
db_session = scoped_session( sessionmaker( bind=migrate_engine, autoflush=False, transactional=False ) )
|
||||
db_session = scoped_session( sessionmaker( bind=migrate_engine, autoflush=False, autocommit=True ) )
|
||||
|
||||
def display_migration_details():
|
||||
print "========================================"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
from sqlalchemy import *
|
||||
from sqlalchemy.orm import *
|
||||
from sqlalchemy.exceptions import *
|
||||
from sqlalchemy.exc import *
|
||||
from migrate import *
|
||||
from migrate.changeset import *
|
||||
import datetime
|
||||
@@ -18,7 +18,7 @@ handler.setFormatter( formatter )
|
||||
log.addHandler( handler )
|
||||
|
||||
metadata = MetaData( migrate_engine )
|
||||
db_session = scoped_session( sessionmaker( bind=migrate_engine, autoflush=False, transactional=False ) )
|
||||
db_session = scoped_session( sessionmaker( bind=migrate_engine, autoflush=False, autocommit=True ) )
|
||||
|
||||
def display_migration_details():
|
||||
print ""
|
||||
|
||||
@@ -15,22 +15,36 @@ __all__ = [ 'assign_mapper' ]
|
||||
|
||||
from sqlalchemy import util, exceptions
|
||||
import types
|
||||
from sqlalchemy.orm import mapper, Query
|
||||
from sqlalchemy.orm import Query
|
||||
from sqlalchemy.orm import mapper as sqla_mapper
|
||||
|
||||
def _monkeypatch_session_method(name, session, class_, make_list=False):
|
||||
def do(self, *args, **kwargs):
|
||||
if make_list:
|
||||
self = [ self ]
|
||||
return getattr(session, name)( self, *args, **kwargs )
|
||||
def _monkeypatch_session_method( name, session, class_ ):
|
||||
# TODO: eliminate this method by fixing the session flushes
|
||||
def do( self, *args, **kwargs ):
|
||||
if self not in session.deleted:
|
||||
session.add( self )
|
||||
return session.flush()
|
||||
try:
|
||||
do.__name__ = name
|
||||
except:
|
||||
pass
|
||||
if not hasattr(class_, name):
|
||||
setattr(class_, name, do)
|
||||
|
||||
if not hasattr( class_, name ):
|
||||
setattr( class_, name, do )
|
||||
def session_mapper( scoped_session, class_, *args, **kwargs ):
|
||||
def mapper( cls, *arg, **kw ):
|
||||
validate = kw.pop( 'validate', False )
|
||||
if cls.__init__ is object.__init__:
|
||||
def __init__( self, **kwargs ):
|
||||
for key, value in kwargs.items():
|
||||
if validate:
|
||||
if not cls_mapper.has_property( key ):
|
||||
raise TypeError( "Invalid __init__ argument: '%s'" % key )
|
||||
setattr( self, key, value )
|
||||
cls.__init__ = __init__
|
||||
cls.query = scoped_session.query_property()
|
||||
_monkeypatch_session_method( 'flush', scoped_session, cls )
|
||||
return sqla_mapper( cls, *arg, **kw )
|
||||
return mapper( class_, *args, **kwargs )
|
||||
def assign_mapper( session, class_, *args, **kwargs ):
|
||||
m = class_.mapper = session.mapper( class_, *args, **kwargs )
|
||||
for name in ( 'flush', ):
|
||||
_monkeypatch_session_method( name, session, class_, make_list=True )
|
||||
m = class_.mapper = session_mapper( session, class_, *args, **kwargs )
|
||||
return m
|
||||
|
||||
@@ -450,7 +450,7 @@ class Forms( BaseController ):
|
||||
# create corresponding row in the form_definition_current table
|
||||
fd.form_definition_current = fdc
|
||||
fdc.latest_form = fd
|
||||
trans.sa_session.save_or_update( fdc )
|
||||
trans.sa_session.add( fdc )
|
||||
trans.sa_session.flush()
|
||||
msg = "The new form named '%s' has been created. " % (fd.name)
|
||||
return fd, msg
|
||||
|
||||
@@ -726,7 +726,7 @@ class HistoryController( BaseController ):
|
||||
share.history = history
|
||||
share.user = send_to_user
|
||||
session = trans.sa_session
|
||||
session.save_or_update( share )
|
||||
session.add( share )
|
||||
session.flush()
|
||||
if history not in shared_histories:
|
||||
shared_histories.append( history )
|
||||
|
||||
@@ -135,7 +135,7 @@ class PageController( BaseController ):
|
||||
page_revision.content = ""
|
||||
# Persist
|
||||
session = trans.sa_session
|
||||
session.save_or_update( page )
|
||||
session.add( page )
|
||||
session.flush()
|
||||
# Display the management page
|
||||
## trans.set_message( "Page '%s' created" % page.title )
|
||||
@@ -240,4 +240,4 @@ class PageController( BaseController ):
|
||||
raise web.httpexceptions.HTTPNotFound()
|
||||
return trans.fill_template( "page/display.mako", page=page )
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ class WorkflowController( BaseController ):
|
||||
user = trans.get_user()
|
||||
workflows = trans.sa_session.query( model.StoredWorkflow ) \
|
||||
.filter_by( user=user, deleted=False ) \
|
||||
.order_by( desc( model.StoredWorkflow.c.update_time ) ) \
|
||||
.order_by( desc( model.StoredWorkflow.table.c.update_time ) ) \
|
||||
.all()
|
||||
shared_by_others = trans.sa_session \
|
||||
.query( model.StoredWorkflowUserShareAssociation ) \
|
||||
@@ -53,13 +53,13 @@ class WorkflowController( BaseController ):
|
||||
user = trans.get_user()
|
||||
workflows = trans.sa_session.query( model.StoredWorkflow ) \
|
||||
.filter_by( user=user, deleted=False ) \
|
||||
.order_by( desc( model.StoredWorkflow.c.update_time ) ) \
|
||||
.order_by( desc( model.StoredWorkflow.table.c.update_time ) ) \
|
||||
.all()
|
||||
shared_by_others = trans.sa_session \
|
||||
.query( model.StoredWorkflowUserShareAssociation ) \
|
||||
.filter_by( user=user ) \
|
||||
.filter( model.StoredWorkflow.c.deleted == False ) \
|
||||
.order_by( desc( model.StoredWorkflow.c.update_time ) ) \
|
||||
.filter( model.StoredWorkflow.deleted == False ) \
|
||||
.order_by( desc( model.StoredWorkflow.table.c.update_time ) ) \
|
||||
.all()
|
||||
return trans.fill_template( "workflow/list_for_run.mako",
|
||||
workflows = workflows,
|
||||
@@ -91,7 +91,7 @@ class WorkflowController( BaseController ):
|
||||
share.stored_workflow = stored
|
||||
share.user = other
|
||||
session = trans.sa_session
|
||||
session.save_or_update( share )
|
||||
session.add( share )
|
||||
session.flush()
|
||||
trans.set_message( "Workflow '%s' shared with user '%s'" % ( stored.name, other.email ) )
|
||||
return trans.response.send_redirect( url_for( controller='workflow', action='sharing', id=id ) )
|
||||
@@ -142,7 +142,7 @@ class WorkflowController( BaseController ):
|
||||
share.stored_workflow = stored
|
||||
share.user = trans.user
|
||||
session = trans.sa_session
|
||||
session.save_or_update( share )
|
||||
session.add( share )
|
||||
session.flush()
|
||||
# Redirect to load galaxy frames.
|
||||
return trans.response.send_redirect( url_for( controller='workflow' ) )
|
||||
@@ -180,7 +180,7 @@ class WorkflowController( BaseController ):
|
||||
new_stored.user = user
|
||||
# Persist
|
||||
session = trans.sa_session
|
||||
session.save_or_update( new_stored )
|
||||
session.add( new_stored )
|
||||
session.flush()
|
||||
# Display the management page
|
||||
trans.set_message( 'Clone created with name "%s"' % new_stored.name )
|
||||
@@ -205,7 +205,7 @@ class WorkflowController( BaseController ):
|
||||
stored_workflow.latest_workflow = workflow
|
||||
# Persist
|
||||
session = trans.sa_session
|
||||
session.save_or_update( stored_workflow )
|
||||
session.add( stored_workflow )
|
||||
session.flush()
|
||||
# Display the management page
|
||||
trans.set_message( "Workflow '%s' created" % stored_workflow.name )
|
||||
@@ -514,7 +514,7 @@ class WorkflowController( BaseController ):
|
||||
stored.name = workflow_name
|
||||
workflow.stored_workflow = stored
|
||||
stored.latest_workflow = workflow
|
||||
trans.sa_session.save_or_update( stored )
|
||||
trans.sa_session.add( stored )
|
||||
trans.sa_session.flush()
|
||||
# Index page with message
|
||||
return trans.show_message( "Workflow '%s' created from current history." % workflow_name )
|
||||
@@ -656,12 +656,12 @@ class WorkflowController( BaseController ):
|
||||
ids_in_menu = set( [ x.stored_workflow_id for x in user.stored_workflow_menu_entries ] )
|
||||
workflows = trans.sa_session.query( model.StoredWorkflow ) \
|
||||
.filter_by( user=user, deleted=False ) \
|
||||
.order_by( desc( model.StoredWorkflow.c.update_time ) ) \
|
||||
.order_by( desc( model.StoredWorkflow.table.c.update_time ) ) \
|
||||
.all()
|
||||
shared_by_others = trans.sa_session \
|
||||
.query( model.StoredWorkflowUserShareAssociation ) \
|
||||
.filter_by( user=user ) \
|
||||
.filter( model.StoredWorkflow.c.deleted == False ) \
|
||||
.filter( model.StoredWorkflow.deleted == False ) \
|
||||
.all()
|
||||
return trans.fill_template( "workflow/configure_menu.mako",
|
||||
workflows=workflows,
|
||||
|
||||
@@ -111,10 +111,10 @@ class Grid( object ):
|
||||
if sort_key.startswith( "-" ):
|
||||
sort_key = sort_key[1:]
|
||||
sort_order = 'desc'
|
||||
query = query.order_by( self.model_class.c.get( sort_key ).desc() )
|
||||
query = query.order_by( self.model_class.table.c.get( sort_key ).desc() )
|
||||
else:
|
||||
sort_order = 'asc'
|
||||
query = query.order_by( self.model_class.c.get( sort_key ).asc() )
|
||||
query = query.order_by( self.model_class.table.c.get( sort_key ).asc() )
|
||||
extra_url_args['sort'] = encoded_sort_key
|
||||
|
||||
# There might be a current row
|
||||
|
||||
Reference in New Issue
Block a user