--- a/.hgtags Thu Aug 06 09:04:26 2009 +0200
+++ b/.hgtags Thu Aug 06 09:51:52 2009 +0200
@@ -50,3 +50,5 @@
2ba27ce8ecd9828693ec53c517e1c8810cbbe33e cubicweb-debian-version-3_3_3-2
d46363eac5d71bc1570d69337955154dfcd8fcc8 cubicweb-version-3.3.4
7dc22caa7640bf70fcae55afb6d2326829dacced cubicweb-debian-version-3.3.4-1
+d85937184430b2e7a8d9318100272757026c01a4 cubicweb-version-3.3.5
+82fe8a6d077b34e972664c8e2bace3ae30c94b9d cubicweb-debian-version-3.3.5-1
--- a/debian/changelog Thu Aug 06 09:04:26 2009 +0200
+++ b/debian/changelog Thu Aug 06 09:51:52 2009 +0200
@@ -1,3 +1,9 @@
+cubicweb (3.3.5-1) unstable; urgency=low
+
+ * new upstream release
+
+ -- Sylvain Thénault <sylvain.thenault@logilab.fr> Thu, 06 Aug 2009 09:05:22 +0200
+
cubicweb (3.3.4-2) unstable; urgency=low
* fix conflicting test files
--- a/server/msplanner.py Thu Aug 06 09:04:26 2009 +0200
+++ b/server/msplanner.py Thu Aug 06 09:51:52 2009 +0200
@@ -100,6 +100,16 @@
AbstractSource.dont_cross_relations = ()
AbstractSource.cross_relations = ()
+def need_source_access_relation(vargraph):
+ if not vargraph:
+ return False
+ # check vargraph contains some other relation than the identity relation
+ # test of key nature since it may be a variable name (don't care about that)
+ # or a 2-uple (var1, var2) associated to the relation to traverse to go from
+ # var1 to var2
+ return any(key for key, val in vargraph.iteritems()
+ if isinstance(key, tuple) and val != 'identity')
+
def need_aggr_step(select, sources, stepdefs=None):
"""return True if a temporary table is necessary to store some partial
results to execute the given query
@@ -559,7 +569,8 @@
# testing for rqlst with nothing in vargraph nor defined_vars is the
# simplest way the check the condition explained below
if not self.system_source in self._sourcesterms and \
- not self.rqlst.vargraph and not self.rqlst.defined_vars:
+ not self.rqlst.defined_vars and \
+ not need_source_access_relation(self.rqlst.vargraph):
self._sourcesterms = {self.system_source: {}}
elif not self.needsplit:
if not allequals(self._sourcesterms.itervalues()):
--- a/server/test/unittest_msplanner.py Thu Aug 06 09:04:26 2009 +0200
+++ b/server/test/unittest_msplanner.py Thu Aug 06 09:51:52 2009 +0200
@@ -1962,6 +1962,12 @@
None, None, [self.system], {}, [])],
{'x': 999998, 'u': 999999})
+ def test_nonregr_identity_no_source_access(self):
+ repo._type_source_cache[999999] = ('CWUser', 'ldap', 999998)
+ self._test('Any S WHERE S identity U, S eid %(s)s, U eid %(u)s',
+ [('OneFetchStep', [('Any 999999 WHERE 999999 identity 999999', [{}])],
+ None, None, [self.system], {}, [])],
+ {'s': 999999, 'u': 999999})
class MSPlannerTwoSameExternalSourcesTC(BasePlannerTC):
"""test planner related feature on a 3-sources repository:
--- a/web/data/cubicweb.css Thu Aug 06 09:04:26 2009 +0200
+++ b/web/data/cubicweb.css Thu Aug 06 09:51:52 2009 +0200
@@ -388,7 +388,7 @@
padding: 1px 9px 1px 3px;
}
-ul.boxListing a.selected {
+ul.boxListing .selected {
color: #FF4500;
font-weight: bold;
}
--- a/web/views/actions.py Thu Aug 06 09:04:26 2009 +0200
+++ b/web/views/actions.py Thu Aug 06 09:51:52 2009 +0200
@@ -15,7 +15,7 @@
authenticated_user, match_user_groups, match_search_state,
has_permission, has_add_permission,
)
-from cubicweb.web import uicfg
+from cubicweb.web import uicfg, controller
from cubicweb.web.action import Action
from cubicweb.web.views import linksearch_select_url, vid_from_rset
from cubicweb.web.views.autoform import AutomaticEntityForm
@@ -112,8 +112,8 @@
def url(self):
params = self.req.form.copy()
- params.pop('vid', None)
- params.pop('__message', None)
+ for param in ('vid', '__message') + controller.NAV_FORM_PARAMETERS:
+ params.pop(param, None)
return self.build_url(self.req.relative_path(includeparams=False),
**params)