# HG changeset patch # User Nicolas Chauvat # Date 1248173789 -7200 # Node ID 890f6b990dd7c9ed7a5ba1a6251b9ea7b9a56177 # Parent a8d18e320ef3b36168e683521761ca75b46cfde6 [views] epropertiesform renamed propertiesform diff -r a8d18e320ef3 -r 890f6b990dd7 web/test/unittest_viewselector.py --- a/web/test/unittest_viewselector.py Tue Jul 21 12:38:10 2009 +0200 +++ b/web/test/unittest_viewselector.py Tue Jul 21 12:56:29 2009 +0200 @@ -1,7 +1,9 @@ -# -*- coding: iso-8859-1 -*- +# -*- coding: utf-8 -*- """XXX rename, split, reorganize this :license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses """ +from __future__ import with_statement + from logilab.common.testlib import unittest_main from cubicweb.devtools.apptest import EnvBasedTC @@ -122,6 +124,33 @@ ('xml', xmlrss.XMLView), ]) + def test_propertiesform_admin(self): + rset1, req1 = self.env.get_rset_and_req('CWUser X WHERE X login "admin"') + rset2, req2 = self.env.get_rset_and_req('CWUser X WHERE X login "anon"') + with traced_selection(): + self.failUnless(self.vreg.select_object('views', 'propertiesform', req1, rset=None)) + self.failUnless(self.vreg.select_object('views', 'propertiesform', req1, rset=rset1)) + self.failUnless(self.vreg.select_object('views', 'propertiesform', req2, rset=rset2)) + + def test_propertiesform_anon(self): + self.login('anon') + rset1, req1 = self.env.get_rset_and_req('CWUser X WHERE X login "admin"') + rset2, req2 = self.env.get_rset_and_req('CWUser X WHERE X login "anon"') + with traced_selection(): + self.assertRaises(NoSelectableObject, self.vreg.select_object, 'views', 'propertiesform', req1, rset=None) + self.assertRaises(NoSelectableObject, self.vreg.select_object, 'views', 'propertiesform', req1, rset=rset1) + self.assertRaises(NoSelectableObject, self.vreg.select_object, 'views', 'propertiesform', req1, rset=rset2) + + def test_propertiesform_jdoe(self): + self.create_user('jdoe') + self.login('jdoe') + rset1, req1 = self.env.get_rset_and_req('CWUser X WHERE X login "admin"') + rset2, req2 = self.env.get_rset_and_req('CWUser X WHERE X login "jdoe"') + with traced_selection(): + self.failUnless(self.vreg.select_object('views', 'propertiesform', req1, rset=None)) + self.assertRaises(NoSelectableObject, self.vreg.select_object, 'views', 'propertiesform', req1, rset=rset1) + self.failUnless(self.vreg.select_object('views', 'propertiesform', req2, rset=rset2)) + def test_possible_views_multiple_different_types(self): rset, req = self.env.get_rset_and_req('Any X') self.assertListEqual(self.pviews(req, rset), diff -r a8d18e320ef3 -r 890f6b990dd7 web/views/cwproperties.py --- a/web/views/cwproperties.py Tue Jul 21 12:38:10 2009 +0200 +++ b/web/views/cwproperties.py Tue Jul 21 12:56:29 2009 +0200 @@ -228,10 +228,9 @@ class CWPropertiesForm(SystemCWPropertiesForm): id = 'propertiesform' __select__ = ( - # we don't want guests to be able to come here - match_user_groups('users', 'managers') & - (none_rset() | ((one_line_rset() & is_user_prefs()) & - (one_line_rset() & match_user_groups('managers')))) + (none_rset() & match_user_groups('users','managers')) + | (one_line_rset() & match_user_groups('users') & is_user_prefs()) + | (one_line_rset() & match_user_groups('managers') & implements('CWUSer')) ) title = _('preferences') diff -r a8d18e320ef3 -r 890f6b990dd7 web/views/cwuser.py --- a/web/views/cwuser.py Tue Jul 21 12:38:10 2009 +0200 +++ b/web/views/cwuser.py Tue Jul 21 12:56:29 2009 +0200 @@ -25,7 +25,7 @@ def url(self): login = self.rset.get_entity(self.row or 0, self.col or 0).login - return self.build_url('cwuser/%s'%login, vid='epropertiesform') + return self.build_url('cwuser/%s'%login, vid='propertiesform') class FoafView(EntityView):