do.__name__ = name
except:
pass
- setattr(class_, name, do)
+ if not hasattr(class_, name):
+ setattr(class_, name, do)
def assign_mapper(ctx, class_, *args, **kwargs):
extension = kwargs.pop('extension', None)
return getattr(ctx.current.query(class_), key)
def __call__(self):
return ctx.current.query(class_)
- class_.query = query()
+
+ if not hasattr(class_, 'query'):
+ class_.query = query()
for name in ['refresh', 'expire', 'delete', 'expunge', 'update']:
_monkeypatch_session_method(name, ctx, class_)
def tearDownAll(self):
metadata.drop_all()
def tearDown(self):
+ for table in metadata.table_iterator(reverse=True):
+ table.delete().execute()
clear_mappers()
-
+
def test_override_attributes(self):
sso = SomeOtherObject.query().first()
except exceptions.ArgumentError:
pass
+ def test_dont_clobber_methods(self):
+ class MyClass(object):
+ def expunge(self):
+ return "an expunge !"
+
+ assign_mapper(ctx, MyClass, table2)
+
+ assert MyClass().expunge() == "an expunge !"
if __name__ == '__main__':