diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-05-05 17:23:00 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-05-05 17:23:00 +0000 |
commit | 6c89f97e45baf5cbda183f0fdda4135545d0ffbc (patch) | |
tree | e3e3fe0c1f8fb353183f13e6861c5242e8bed703 /lib/sqlalchemy/mapping | |
parent | a7ba115c3dd536ac75c334838872c3f587a9c2ec (diff) | |
download | sqlalchemy-6c89f97e45baf5cbda183f0fdda4135545d0ffbc.tar.gz |
fixed a _get_criterion mismatch, cleaned up types + updated types doc
Diffstat (limited to 'lib/sqlalchemy/mapping')
-rw-r--r-- | lib/sqlalchemy/mapping/mapper.py | 16 | ||||
-rw-r--r-- | lib/sqlalchemy/mapping/query.py | 17 |
2 files changed, 17 insertions, 16 deletions
diff --git a/lib/sqlalchemy/mapping/mapper.py b/lib/sqlalchemy/mapping/mapper.py index 15d197a34..7977cae6a 100644 --- a/lib/sqlalchemy/mapping/mapper.py +++ b/lib/sqlalchemy/mapping/mapper.py @@ -450,6 +450,22 @@ class Mapper(object): self._options[optkey] = mapper return mapper + def _get_criterion(self, key, value): + """used by select_by to match a key/value pair against + local properties, column names, or a matching property in this mapper's + list of relations.""" + if self.props.has_key(key): + return self.props[key].columns[0] == value + elif self.table.c.has_key(key): + return self.table.c[key] == value + else: + for prop in self.props.values(): + c = prop.get_criterion(key, value) + if c is not None: + return c + else: + return None + def __getattr__(self, key): if (key.startswith('select_by_') or key.startswith('get_by_')): return getattr(self.query, key) diff --git a/lib/sqlalchemy/mapping/query.py b/lib/sqlalchemy/mapping/query.py index 2ef23c560..283e8c189 100644 --- a/lib/sqlalchemy/mapping/query.py +++ b/lib/sqlalchemy/mapping/query.py @@ -177,7 +177,7 @@ class Query(object): for key, value in params.iteritems(): if value is False: continue - c = self._get_criterion(key, value) + c = self.mapper._get_criterion(key, value) if c is None: raise InvalidRequestError("Cant find criterion for property '"+ key + "'") if clause is None: @@ -261,18 +261,3 @@ class Query(object): value.setup(key, statement, **kwargs) return statement - def _get_criterion(self, key, value): - """used by select_by to match a key/value pair against - local properties, column names, or a matching property in this mapper's - list of relations.""" - if self.props.has_key(key): - return self.props[key].columns[0] == value - elif self.table.c.has_key(key): - return self.table.c[key] == value - else: - for prop in self.props.values(): - c = prop.get_criterion(key, value) - if c is not None: - return c - else: - return None |