]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- added "validate=False" argument to assign_mapper, if True will insure that only...
authorMike Bayer <mike_mp@zzzcomputing.com>
Sat, 20 Jan 2007 20:40:39 +0000 (20:40 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sat, 20 Jan 2007 20:40:39 +0000 (20:40 +0000)
attributes are named [ticket:426]

CHANGES
lib/sqlalchemy/ext/assignmapper.py

diff --git a/CHANGES b/CHANGES
index 67b0e4f18120599e88cd755e58b65d9d63498ea0..d4be09ac063237f3b7a59657221aa29326e53fea 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -79,7 +79,9 @@ with new instance
   [ticket:413]
   - added an error message if you actually try to modify primary key values on an entity
   and then flush it [ticket:412]
-
+- extensions
+  - added "validate=False" argument to assign_mapper, if True will insure that only mapped
+  attributes are named [ticket:426]
 0.3.3
 - string-based FROM clauses fixed, i.e. select(..., from_obj=["sometext"])
 - fixes to passive_deletes flag, lazy=None (noload) flag
index 8c78e70242d6ae3389b84d5294b9ae3385989653..dddb25bdca069d63314bf6691c2586b6d35624a3 100644 (file)
@@ -1,4 +1,4 @@
-from sqlalchemy import mapper, util, Query
+from sqlalchemy import mapper, util, Query, exceptions
 import types
 
 def monkeypatch_query_method(ctx, class_, name):
@@ -17,9 +17,13 @@ def monkeypatch_objectstore_method(ctx, class_, name):
     setattr(class_, name, do)
     
 def assign_mapper(ctx, class_, *args, **kwargs):
+    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)
         class_.__init__ = __init__
     extension = kwargs.pop('extension', None)