will alias() the secondary (association) table so
that multiple contains() calls will not conflict
with each other [ticket:1058]
+
+ - fixed bug preventing merge() from functioning in
+ conjunction with a comparable_property()
- mysql
- Added 'CALL' to the list of SQL keywords which return
return not self.parent.non_primary
- def merge(self, session, source, dest):
+ def merge(self, session, source, dest, dont_load, _recursive):
"""Merge the attribute represented by this ``MapperProperty``
from source to destination object"""
self.descriptor = SynonymProp()
sessionlib.register_attribute(class_, self.key, uselist=False, proxy_property=self.descriptor, useobject=False, comparator=comparator)
- def merge(self, session, source, dest, _recursive):
+ def merge(self, session, source, dest, dont_load, _recursive):
pass
SynonymProperty.logger = logging.class_logger(SynonymProperty)
def create_row_processor(self, selectcontext, mapper, row):
return (None, None, None)
+ def merge(self, session, source, dest, dont_load, _recursive):
+ pass
+
class PropertyLoader(StrategizedProperty):
"""Describes an object property that holds a single item or list
except exceptions.InvalidRequestError, e:
assert "dont_load=True option does not support" in str(e)
+ def test_synonym_comparable(self):
+ class User(object):
+
+ class Comparator(PropComparator):
+ pass
+
+ def _getValue(self):
+ return self._value
+
+ def _setValue(self, value):
+ setattr(self, '_value', value)
+
+ value = property(_getValue, _setValue)
+
+ mapper(User, users, properties={
+ 'uid':synonym('id'),
+ 'foobar':comparable_property(User.Comparator,User.value),
+ })
+
+ sess = create_session()
+ u = User()
+ u.name = 'ed'
+ sess.save(u)
+ sess.flush()
+ sess.expunge(u)
+ sess.merge(u)
if __name__ == "__main__":
testenv.main()