# HG changeset patch # User Sylvain Thénault # Date 1249545112 -7200 # Node ID acdaf780d4a61ae25c78f5b2e73cb534c5bfc6ed # Parent 7aee3bd7a7043b8a6ff1d0decec19dc47b2a498c# Parent 4a8d93bd7c72badca62d1774020fed0ee32faefb backport stable branch diff -r 7aee3bd7a704 -r acdaf780d4a6 .hgtags --- 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 diff -r 7aee3bd7a704 -r acdaf780d4a6 __pkginfo__.py diff -r 7aee3bd7a704 -r acdaf780d4a6 debian/changelog --- 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 Thu, 06 Aug 2009 09:05:22 +0200 + cubicweb (3.3.4-2) unstable; urgency=low * fix conflicting test files diff -r 7aee3bd7a704 -r acdaf780d4a6 server/msplanner.py --- 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()): diff -r 7aee3bd7a704 -r acdaf780d4a6 server/test/unittest_msplanner.py --- 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: diff -r 7aee3bd7a704 -r acdaf780d4a6 web/data/cubicweb.css --- 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; } diff -r 7aee3bd7a704 -r acdaf780d4a6 web/views/actions.py --- 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)