]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- with composites gone all the get_col_value crap is gone too
authorMike Bayer <mike_mp@zzzcomputing.com>
Mon, 20 Dec 2010 21:41:26 +0000 (16:41 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Mon, 20 Dec 2010 21:41:26 +0000 (16:41 -0500)
lib/sqlalchemy/orm/interfaces.py
lib/sqlalchemy/orm/mapper.py
lib/sqlalchemy/orm/sync.py

index e917c675a4a737e92d9d51eafb424f19233b3a3c..28ab383c3d70ebed61a605b6471243b7c0d66597 100644 (file)
@@ -71,21 +71,6 @@ class MapperProperty(object):
     
     """
 
-    get_col_value = None
-    """Optional method which converts an attribute value into a per-column
-    value::
-    
-        def get_col_value(self, column, value):
-            ...
-            
-    Basically used by CompositeProperty.
-    
-    The mapper checks this attribute for non-None to reduce callcounts.
-    
-    """
-
-    set_col_value = None
-    
     def setup(self, context, entity, path, adapter, **kwargs):
         """Called by Query for the purposes of constructing a SQL statement.
 
index 8bd8bf3c801bb5daae9bb839251c577bfda34001..fa227a1f131d9c31a7d0912dcff8191eae5ab5f7 100644 (file)
@@ -1247,11 +1247,12 @@ class Mapper(object):
 
     def _identity_key_from_state(self, state):
         dict_ = state.dict
-        
+        manager = state.manager
         return self._identity_class, tuple([
-            self._get_state_attr_by_column(state, dict_, col)
+            manager[self._columntoproperty[col].key].\
+                impl.get(state, dict_, False)
             for col in self.primary_key
-        ])    
+        ])
         
     def primary_key_from_instance(self, instance):
         """Return the list of primary key values for the given
@@ -1263,22 +1264,20 @@ class Mapper(object):
 
     def _primary_key_from_state(self, state):
         dict_ = state.dict
-        return [self._get_state_attr_by_column(state, dict_, column) for
-                column in self.primary_key]
+        manager = state.manager
+        return [
+            manager[self._columntoproperty[col].key].\
+                impl.get(state, dict_, False)
+            for col in self.primary_key
+        ]
 
     def _get_state_attr_by_column(self, state, dict_, column, passive=False):
         prop = self._columntoproperty[column]
-        value = state.manager[prop.key].impl.get(state, dict_, passive=passive)
-        if prop.get_col_value:
-            value = prop.get_col_value(column, value)
-        return value
+        return state.manager[prop.key].impl.get(state, dict_, passive=passive)
 
     def _set_state_attr_by_column(self, state, dict_, column, value):
         prop = self._columntoproperty[column]
-        if prop.set_col_value:
-            prop.set_col_value(state, dict_, value, column)
-        else:
-            state.manager[prop.key].impl.set(state, dict_, value, None)
+        state.manager[prop.key].impl.set(state, dict_, value, None)
 
     def _get_committed_attr_by_column(self, obj, column):
         state = attributes.instance_state(obj)
@@ -1289,11 +1288,8 @@ class Mapper(object):
                                                     passive=False):
                                                     
         prop = self._columntoproperty[column]
-        value = state.manager[prop.key].impl.\
+        return state.manager[prop.key].impl.\
                     get_committed_value(state, dict_, passive=passive)
-        if prop.get_col_value:
-            value = prop.get_col_value(column, value)
-        return value
 
     def _optimized_get_statement(self, state, attribute_names):
         """assemble a WHERE clause which retrieves a given state by primary
@@ -1516,8 +1512,6 @@ class Mapper(object):
                                         state, prop.key, passive=True)
                         if history.added:
                             value = history.added[0]
-                            if prop.get_col_value:
-                                value = prop.get_col_value(col, value)
                             params[col.key] = value
                             hasdata = True
                 if hasdata:
@@ -1661,13 +1655,11 @@ class Mapper(object):
                             params[col.key] = \
                               mapper.version_id_generator(None)
                         else:
-                            # inline of _get_state_attr_by_column
+                            # pull straight from the dict for 
+                            # pending objects
                             prop = mapper._columntoproperty[col]
                             value = state_dict.get(prop.key, None)
                                     
-                            if prop.get_col_value:
-                                value = prop.get_col_value(col, value)
-
                             if value is None:
                                 if col in pks:
                                     has_all_pks = False
@@ -1726,8 +1718,6 @@ class Mapper(object):
                                     value_params[col] = history.added[0]
                                 else:
                                     value = history.added[0]
-                                    if prop.get_col_value:
-                                        value = prop.get_col_value(col, value)
                                     params[col.key] = value
 
                                 if col in pks:
@@ -1740,15 +1730,11 @@ class Mapper(object):
                                                         uowtransaction.\
                                                         attributes:
                                             value = history.added[0]
-                                            if prop.get_col_value:
-                                                value = prop.get_col_value(col, value)
                                             params[col._label] = value
                                         else:
                                             # use the old value to 
                                             # locate the row
                                             value = history.deleted[0]
-                                            if prop.get_col_value:
-                                                value = prop.get_col_value(col, value)
                                             params[col._label] = value
                                         hasdata = True
                                     else:
@@ -1759,16 +1745,12 @@ class Mapper(object):
                                         # update statement
                                         del params[col.key]
                                         value = history.added[0]
-                                        if prop.get_col_value:
-                                            value = prop.get_col_value(col, value)
                                         params[col._label] = value
                                 else:
                                     hasdata = True
                             elif col in pks:
                                 value = state.manager[prop.key].\
                                             impl.get(state, state_dict)
-                                if prop.get_col_value:
-                                    value = prop.get_col_value(col, value)
                                 params[col._label] = value
                     if hasdata:
                         update.append((state, state_dict, params, mapper, 
index 6b6aeff9b445e17d2a7c998e1821deb702099cdc..656cbaae8e86a34d55fcbc11b3da56b05d766253 100644 (file)
@@ -12,14 +12,21 @@ from sqlalchemy.orm import exc, util as mapperutil
 
 def populate(source, source_mapper, dest, dest_mapper, 
                         synchronize_pairs, uowcommit, flag_cascaded_pks):
+    source_dict = source.dict
+    dest_dict = dest.dict
+    
     for l, r in synchronize_pairs:
         try:
-            value = source_mapper._get_state_attr_by_column(source, source.dict, l)
+            # inline of source_mapper._get_state_attr_by_column
+            prop = source_mapper._columntoproperty[l]
+            value = source.manager[prop.key].impl.get(source, source_dict, False)
         except exc.UnmappedColumnError:
             _raise_col_to_prop(False, source_mapper, l, dest_mapper, r)
 
         try:
-            dest_mapper._set_state_attr_by_column(dest, dest.dict, r, value)
+            # inline of dest_mapper._set_state_attr_by_column
+            prop = dest_mapper._columntoproperty[r]
+            dest.manager[prop.key].impl.set(dest, dest_dict, value, None)
         except exc.UnmappedColumnError:
             _raise_col_to_prop(True, source_mapper, l, dest_mapper, r)