From: Mike Bayer Date: Mon, 20 Dec 2010 21:41:26 +0000 (-0500) Subject: - with composites gone all the get_col_value crap is gone too X-Git-Tag: rel_0_7b1~135 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=199c7fb92c13e0957843429ba7295d91c4d266bf;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - with composites gone all the get_col_value crap is gone too --- diff --git a/lib/sqlalchemy/orm/interfaces.py b/lib/sqlalchemy/orm/interfaces.py index e917c675a4..28ab383c3d 100644 --- a/lib/sqlalchemy/orm/interfaces.py +++ b/lib/sqlalchemy/orm/interfaces.py @@ -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. diff --git a/lib/sqlalchemy/orm/mapper.py b/lib/sqlalchemy/orm/mapper.py index 8bd8bf3c80..fa227a1f13 100644 --- a/lib/sqlalchemy/orm/mapper.py +++ b/lib/sqlalchemy/orm/mapper.py @@ -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, diff --git a/lib/sqlalchemy/orm/sync.py b/lib/sqlalchemy/orm/sync.py index 6b6aeff9b4..656cbaae8e 100644 --- a/lib/sqlalchemy/orm/sync.py +++ b/lib/sqlalchemy/orm/sync.py @@ -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)