imported patch alchemy05_fixes_01

This commit is contained in:
Nate Coraor
2009-11-03 12:52:00 -05:00
parent 1d4ed96a04
commit 7a21067ad8
23 changed files with 73 additions and 57 deletions
+6 -4
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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 ""
+26 -12
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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 )
+2 -2
View File
@@ -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 )
+11 -11
View File
@@ -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,
+2 -2
View File
@@ -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