From: Mike Bayer Date: Sun, 4 Sep 2005 20:00:30 +0000 (+0000) Subject: (no commit message) X-Git-Tag: rel_0_1_0~794 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=44d01c83b57de224cedf84b22a19ac11334bd6b9;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git --- diff --git a/lib/sqlalchemy/mapper.py b/lib/sqlalchemy/mapper.py index cb26a32164..74b72dd1bf 100644 --- a/lib/sqlalchemy/mapper.py +++ b/lib/sqlalchemy/mapper.py @@ -375,8 +375,11 @@ class ColumnProperty(MapperProperty): def getattr(self, object): return getattr(object, self.key, None) - def setattr(self, object, value): - clean_setattr(object, self.key, value) + def setattr(self, object, value, clean = False): + if clean: + clean_setattr(object, self.key, value) + else: + setattr(object, self.key, value) def hash_key(self): return "ColumnProperty(%s)" % repr([hash_key(c) for c in self.columns]) diff --git a/lib/sqlalchemy/util.py b/lib/sqlalchemy/util.py index dd6d030457..e6802bbbb0 100644 --- a/lib/sqlalchemy/util.py +++ b/lib/sqlalchemy/util.py @@ -52,18 +52,18 @@ class OrderedDict(dict): def keys(self): return self.list - + def update(self, dict): for key in dict.keys(): self.__setitem__(key, dict[key]) - + def setdefault(self, key, value): if not self.has_key(key): self.__setitem__(key, value) return value else: return self.__getitem__(key) - + def values(self): return map(lambda key: self[key], self.list) @@ -77,30 +77,25 @@ class OrderedDict(dict): def iteritems(self): return iter([(key, self[key]) for key in self.keys()]) - + def __setitem__(self, key, object): if not self.has_key(key): self.list.append(key) - dict.__setitem__(self, key, object) def __getitem__(self, key): return dict.__getitem__(self, key) - class ThreadLocal(object): def __init__(self): object.__setattr__(self, 'tdict', {}) - def __getattribute__(self, key): try: return object.__getattribute__(self, 'tdict')["%d_%s" % (thread.get_ident(), key)] except KeyError: raise AttributeError(key) - def __setattr__(self, key, value): object.__getattribute__(self, 'tdict')["%d_%s" % (thread.get_ident(), key)] = value - class HashSet(object): def __init__(self, iter = None): @@ -110,10 +105,13 @@ class HashSet(object): self.append(i) def __iter__(self): return iter(self.map.values()) + def append(self, item): self.map[item] = item + def __delitem__(self, key): del self.map[key] + def __getitem__(self, key): return self.map[key] diff --git a/test/mapper.py b/test/mapper.py index 3bf41b8305..ba1a20e90a 100644 --- a/test/mapper.py +++ b/test/mapper.py @@ -373,6 +373,7 @@ class SaveTest(AssertMixin): del u.addresses[1] m.save(u) addresstable = engine.ResultProxy(addresses.select(addresses.c.address_id.in_(a.address_id, a2.address_id)).execute()).fetchall() + print repr(addresstable) self.assert_(addresstable[0].row == (a.address_id, u.user_id, 'one2many@test.org')) self.assert_(addresstable[1].row == (a2.address_id, None, 'lala@test.org'))