from sqlalchemy import util, logging, topological
from sqlalchemy.orm import attributes
+from sqlalchemy.orm import util as mapperutil
from sqlalchemy.orm.mapper import object_mapper, class_mapper
from sqlalchemy.exceptions import *
import StringIO
save/delete registration is entered for the object.
"""
+
#print "REGISTER", repr(obj), repr(getattr(obj, '_instance_key', None)), str(isdelete), str(listonly)
# if object is not in the overall session, do nothing
if not self.uow._is_valid(obj):
+ if logging.is_debug_enabled(self.logger):
+ self.logger.debug("object %s not part of session, not registering for flush" % (mapperutil.instance_str(obj)))
return
+ if logging.is_debug_enabled(self.logger):
+ self.logger.debug("register object for flush: %s isdelete=%s listonly=%s postupdate=%s" % (mapperutil.instance_str(obj), isdelete, listonly, postupdate))
+
mapper = object_mapper(obj)
self.mappers.add(mapper)
task = self.get_task_by_mapper(mapper)
from sqlalchemy.orm import unitofwork
+from sqlalchemy.orm import util as mapperutil
"""Dumps out a string representation of a UOWTask structure"""
objid = "(placeholder)"
else:
if attribute is not None:
- objid = "%s(%s).%s" % (te.obj.__class__.__name__, hex(id(te.obj)), attribute)
+ objid = "%s.%s" % (mapperutil.instance_str(te.obj), attribute)
else:
- objid = "%s(%s)" % (te.obj.__class__.__name__, hex(id(te.obj)))
+ objid = mapperutil.instance_str(te.obj)
if self.verbose:
return "%s (UOWTaskElement(%s, %s))" % (objid, hex(id(te)), (te.listonly and 'listonly' or (te.isdelete and 'delete' or 'save')))
elif process:
else:
return '(none)'
- def _repr(self, obj):
- return "%s(%s)" % (obj.__class__.__name__, hex(id(obj)))
-
def _indent(self):
return " |" * self.indent
self.isouter = isouter
name = property(lambda s: "Join object on " + s.left.name + " " + s.right.name)
-
+ encodedname = property(lambda s: s.name.encode('ascii', 'backslashreplace'))
+
def _locate_oid_column(self):
return self.left.oid_column
alias = alias[0:15]
alias = alias + "_" + hex(random.randint(0, 65535))[2:]
self.name = alias
+ self.encodedname = alias.encode('ascii', 'backslashreplace')
self.case_sensitive = getattr(baseselectable, "case_sensitive", True)
def supports_execution(self):