]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- interfaces lib in docstrings
authorMike Bayer <mike_mp@zzzcomputing.com>
Mon, 4 Jun 2007 15:10:34 +0000 (15:10 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Mon, 4 Jun 2007 15:10:34 +0000 (15:10 +0000)
- query.join() resets the joinpoint
- added filter(), filter_by() to assignmapper

doc/build/gen_docstrings.py
lib/sqlalchemy/ext/assignmapper.py
lib/sqlalchemy/orm/query.py

index 042cabbf5f6a561442acc1ef489999c04a12e653..6b370fe80dc02d3c48793d1f920d510ec17f256c 100644 (file)
@@ -30,6 +30,7 @@ def make_all_docs():
         make_doc(obj=ansisql),
         make_doc(obj=orm),
         make_doc(obj=orm.mapperlib, classes=[orm.mapperlib.MapperExtension, orm.mapperlib.Mapper]),
+        make_doc(obj=orm.interfaces),
         make_doc(obj=orm.query, classes=[orm.query.Query, orm.query.QueryContext, orm.query.SelectionContext]),
         make_doc(obj=orm.session, classes=[orm.session.Session, orm.session.SessionTransaction]),
         make_doc(obj=exceptions),
index 23c6cc9ae99cfa316531caf81da3b2a87c005b68..6e4f2ab322170c7d53e03080b16a3be647d1b18e 100644 (file)
@@ -42,7 +42,7 @@ def assign_mapper(ctx, class_, *args, **kwargs):
     m = mapper(class_, extension=extension, *args, **kwargs)
     class_.mapper = m
     class_.query = classmethod(lambda cls: Query(class_, session=ctx.current))
-    for name in ['get', 'select', 'select_by', 'selectfirst', 'selectfirst_by', 'selectone', 'get_by', 'join', 'count', 'count_by', 'options', 'instances']:
+    for name in ['get', 'filter', 'filter_by', 'select', 'select_by', 'selectfirst', 'selectfirst_by', 'selectone', 'get_by', 'join', 'count', 'count_by', 'options', 'instances']:
         monkeypatch_query_method(ctx, class_, name)
     for name in ['delete', 'expire', 'refresh', 'expunge', 'save', 'update', 'save_or_update']:
         monkeypatch_objectstore_method(ctx, class_, name)
index 2a93bd5d22177a921545ad203acaac5f4aeb8f9e..a26bf8dcb68f2d8dc9322c43917e0f98340a9805 100644 (file)
@@ -519,9 +519,12 @@ class Query(object):
         """
         return self.filter(self._join_by(args, kwargs, start=self._joinpoint))
 
-    def _join_to(self, prop, outerjoin=False):
+    def _join_to(self, prop, outerjoin=False, start=None):
+        if start is None:
+            start = self._joinpoint
+            
         if isinstance(prop, list):
-            mapper = self._joinpoint
+            mapper = start
             keys = []
             for key in prop:
                 p = mapper.props[key]
@@ -530,9 +533,9 @@ class Query(object):
                 keys.append(key)
                 mapper = p.mapper
         else:
-            [keys,p] = self._locate_prop(prop, start=self._joinpoint)
+            [keys,p] = self._locate_prop(prop, start=start)
         clause = self._from_obj[-1]
-        mapper = self._joinpoint
+        mapper = start
         for key in keys:
             prop = mapper.props[key]
             if prop._is_self_referential():
@@ -699,6 +702,18 @@ class Query(object):
         else:
             q._group_by.extend(util.to_list(criterion))
         return q
+
+    def reset_joinpoint(self):
+        """return a new Query reset the 'joinpoint' of this Query reset 
+        back to the starting mapper.  Subsequent generative calls will
+        be constructed from the new joinpoint.
+
+        This is an interim method which will not be needed with new behavior
+        to be released in 0.4."""
+
+        q = self._clone()
+        q._joinpoint = q.mapper
+        return q
     
     def join(self, prop):
         """create a join of this ``Query`` object's criterion
@@ -711,7 +726,7 @@ class Query(object):
         """
         
         q = self._clone()
-        (clause, mapper) = self._join_to(prop, outerjoin=False)
+        (clause, mapper) = self._join_to(prop, outerjoin=False, start=self.mapper)
         q._from_obj = [clause]
         q._joinpoint = mapper
         return q