validate = kwargs.pop('validate', False)
if not isinstance(getattr(class_, '__init__'), types.MethodType):
def __init__(self, **kwargs):
- for key, value in kwargs.items():
- if validate:
- if not key in self.mapper.props:
- raise exceptions.ArgumentError("Invalid __init__ argument: '%s'" % key)
- setattr(self, key, value)
+ if validate:
+ keys = [p.key for p in self.mapper.iterate_properties]
+ for key, value in kwargs.items():
+ if validate and key not in keys:
+ raise exceptions.ArgumentError("Invalid __init__ argument: '%s'" % key)
+ setattr(self, key, value)
class_.__init__ = __init__
extension = kwargs.pop('extension', None)
if extension is not None:
self.collection_class = None
def _get_property(self):
- return orm.class_mapper(self.owning_class).props[self.target_collection]
+ return orm.class_mapper(self.owning_class).get_property(self.target_collection)
def _target_class(self):
return self._get_property().mapper.class_
# Optimistically based on activemapper one_to_many test, try to append
# baz1 to foo1.bazrel - (AttributeError: 'foo' object has no attribute 'bazrel')
- print class_mapper(foo).props
- print class_mapper(baz).props
foo1.bazrel.append(baz1)
assert (foo1.bazrel == [baz1])
ctx.current.clear()
assert SomeObject.get_by(id=s.id).options[0].id == sso.id
+
+ s2 = SomeObject(someid=12)
+ s3 = SomeOtherObject(someid=123, bogus=345)
+
+ class ValidatedOtherObject(object):pass
+ assign_mapper(ctx, ValidatedOtherObject, table2, validate=True)
+
+ v1 = ValidatedOtherObject(someid=12)
+ try:
+ v2 = ValidatedOtherObject(someid=12, bogus=345)
+ assert False
+ except exceptions.ArgumentError:
+ pass
if __name__ == '__main__':
testbase.main()