[Zope-Checkins] SVN: Zope/branches/2.12/src/Products/SiteAccess/tests/testAccessRule.py Add tests for 'Products.SiteAccess.AccessRule.manage_addAccessRule'.
Log message for revision 112607: Add tests for 'Products.SiteAccess.AccessRule.manage_addAccessRule'. Changed: U Zope/branches/2.12/src/Products/SiteAccess/tests/testAccessRule.py -=- Modified: Zope/branches/2.12/src/Products/SiteAccess/tests/testAccessRule.py === --- Zope/branches/2.12/src/Products/SiteAccess/tests/testAccessRule.py 2010-05-21 12:12:55 UTC (rev 112606) +++ Zope/branches/2.12/src/Products/SiteAccess/tests/testAccessRule.py 2010-05-21 13:16:37 UTC (rev 112607) @@ -63,18 +63,138 @@ self.assertEqual(request._virtual_root, None) +class Test_manage_addAccessRule(unittest.TestCase): + +def _callFUT(self, container, method_id, REQUEST): +from Products.SiteAccess.AccessRule import manage_addAccessRule +return manage_addAccessRule(container, method_id, REQUEST) + +def test_no_method_id_no_existing_rules_no_request(self): +container = DummyContainer() +result = self._callFUT(container, None, None) +self.failUnless(result is None) +self.failIf(container.__dict__) + +def test_no_method_id_no_existing_rules_w_request(self): +container = DummyContainer() +result = self._callFUT(container, None, {'URL1': 'http://example.com/'}) +self.failUnless(isinstance(result, str)) +self.failUnless('TITLENo Access Rule/TITLE' in result) +self.failIf(container.__dict__) + +def test_no_method_id_w_existing_rules_no_request(self): +from ZPublisher.BeforeTraverse import registerBeforeTraverse +container = DummyContainer() +old_rule = container.old_rule = DummyObject(name='old_rule', +icon='rule_icon.jpg') +registerBeforeTraverse(container, old_rule, 'AccessRule') +result = self._callFUT(container, None, None) +self.failUnless(result is None) +self.failIf(container.__before_traverse__) +self.failIf('icon' in old_rule.__dict__) + +def test_w_method_id_w_existing_rules_w_request_none(self): +from ZPublisher.BeforeTraverse import registerBeforeTraverse +container = DummyContainer() +old_rule = container.old_rule = DummyObject(name='old_rule', +icon='rule_icon.jpg') +registerBeforeTraverse(container, old_rule, 'AccessRule') +request = DummyRequest(URL1 = 'http://example.com/') +request.form = {'none': '1'} +result = self._callFUT(container, None, request) +self.failUnless(isinstance(result, str)) +self.failUnless('TITLENo Access Rule/TITLE' in result) +self.failIf(container.__before_traverse__) +self.failIf('icon' in old_rule.__dict__) + +def test_w_invalid_method_id_w_existing_rules_no_request(self): +from ZPublisher.BeforeTraverse import registerBeforeTraverse +container = DummyContainer() +old_rule = container.old_rule = DummyObject(name='old_rule', +icon='rule_icon.jpg') +registerBeforeTraverse(container, old_rule, 'AccessRule') +result = self._callFUT(container, 'nonesuch', None) +self.failUnless(result is None) +self.failUnless((99, 'AccessRule') in container.__before_traverse__) +rule = container.__before_traverse__[(99, 'AccessRule')] +self.assertEqual(rule.name, 'old_rule') +self.assertEqual(old_rule.icon, 'rule_icon.jpg') + +def test_w_invalid_method_id_w_existing_rules_w_request(self): +from ZPublisher.BeforeTraverse import registerBeforeTraverse +container = DummyContainer() +old_rule = container.old_rule = DummyObject(name='old_rule', +icon='rule_icon.jpg') +registerBeforeTraverse(container, old_rule, 'AccessRule') +request = DummyRequest(URL1 = 'http://example.com/') +request.form = {} +result = self._callFUT(container, 'nonesuch', request) +self.failUnless(isinstance(result, str)) +self.failUnless('TITLEInvalid Method Id/TITLE' in result) +self.failUnless((99, 'AccessRule') in container.__before_traverse__) +rule = container.__before_traverse__[(99, 'AccessRule')] +self.assertEqual(rule.name, 'old_rule') +self.assertEqual(old_rule.icon, 'rule_icon.jpg') + +def test_w_valid_method_id_w_existing_rules_no_request(self): +from ZPublisher.BeforeTraverse import registerBeforeTraverse +container = DummyContainer() +old_rule = container.old_rule = DummyObject(name='old_rule', +icon='rule_icon.jpg') +new_rule = container.new_rule = DummyObject(name='new_rule') +registerBeforeTraverse(container, old_rule, 'AccessRule') +result = self._callFUT(container, 'new_rule', None) +
[Zope-Checkins] SVN: Zope/branches/2.12/src/Products/SiteAccess/tests/testAccessRule.py Add tests for 'Products.SiteAccess.AccessRule.getAccessRule'.
Log message for revision 112608: Add tests for 'Products.SiteAccess.AccessRule.getAccessRule'. Changed: U Zope/branches/2.12/src/Products/SiteAccess/tests/testAccessRule.py -=- Modified: Zope/branches/2.12/src/Products/SiteAccess/tests/testAccessRule.py === --- Zope/branches/2.12/src/Products/SiteAccess/tests/testAccessRule.py 2010-05-21 13:16:37 UTC (rev 112607) +++ Zope/branches/2.12/src/Products/SiteAccess/tests/testAccessRule.py 2010-05-21 13:16:39 UTC (rev 112608) @@ -172,6 +172,30 @@ self.assertEqual(new_rule.icon, 'misc_/SiteAccess/AccessRule.gif') +class Test_getAccessRule(unittest.TestCase): + +def _callFUT(self, container, REQUEST=None): +from Products.SiteAccess.AccessRule import getAccessRule +return getAccessRule(container, REQUEST) + +def test_no_rules(self): +container = DummyContainer() +self.assertEqual(self._callFUT(container), '') + +def test_w_rule_invalid(self): +from ZPublisher.BeforeTraverse import registerBeforeTraverse +container = DummyContainer() +registerBeforeTraverse(container, DummyObject(), 'AccessRule') +self.failUnless(self._callFUT(container).startswith( +'Invalid BeforeTraverse data: ')) + +def test_w_rule_valid(self): +from ZPublisher.BeforeTraverse import registerBeforeTraverse +container = DummyContainer() +registerBeforeTraverse(container, DummyObject(name='foo'), 'AccessRule') +self.assertEqual(self._callFUT(container), 'foo') + + class DummyRequest(dict): _virtual_root = None def setVirtualRoot(self, root): @@ -196,5 +220,6 @@ return unittest.TestSuite(( unittest.makeSuite(AccessRuleTests), unittest.makeSuite(Test_manage_addAccessRule), +unittest.makeSuite(Test_getAccessRule), )) ___ Zope-Checkins maillist - Zope-Checkins@zope.org https://mail.zope.org/mailman/listinfo/zope-checkins
[Zope-Checkins] SVN: Zope/trunk/src/Products/SiteAccess/tests/testAccessRule.py Merge new coverage tests from 2.12 branch.
Log message for revision 112609: Merge new coverage tests from 2.12 branch. Changed: U Zope/trunk/src/Products/SiteAccess/tests/testAccessRule.py -=- Modified: Zope/trunk/src/Products/SiteAccess/tests/testAccessRule.py === --- Zope/trunk/src/Products/SiteAccess/tests/testAccessRule.py 2010-05-21 13:16:39 UTC (rev 112608) +++ Zope/trunk/src/Products/SiteAccess/tests/testAccessRule.py 2010-05-21 13:16:40 UTC (rev 112609) @@ -63,18 +63,163 @@ self.assertEqual(request._virtual_root, None) +class Test_manage_addAccessRule(unittest.TestCase): + +def _callFUT(self, container, method_id, REQUEST): +from Products.SiteAccess.AccessRule import manage_addAccessRule +return manage_addAccessRule(container, method_id, REQUEST) + +def test_no_method_id_no_existing_rules_no_request(self): +container = DummyContainer() +result = self._callFUT(container, None, None) +self.failUnless(result is None) +self.failIf(container.__dict__) + +def test_no_method_id_no_existing_rules_w_request(self): +container = DummyContainer() +result = self._callFUT(container, None, {'URL1': 'http://example.com/'}) +self.failUnless(isinstance(result, str)) +self.failUnless('TITLENo Access Rule/TITLE' in result) +self.failIf(container.__dict__) + +def test_no_method_id_w_existing_rules_no_request(self): +from ZPublisher.BeforeTraverse import registerBeforeTraverse +container = DummyContainer() +old_rule = container.old_rule = DummyObject(name='old_rule', +icon='rule_icon.jpg') +registerBeforeTraverse(container, old_rule, 'AccessRule') +result = self._callFUT(container, None, None) +self.failUnless(result is None) +self.failIf(container.__before_traverse__) +self.failIf('icon' in old_rule.__dict__) + +def test_w_method_id_w_existing_rules_w_request_none(self): +from ZPublisher.BeforeTraverse import registerBeforeTraverse +container = DummyContainer() +old_rule = container.old_rule = DummyObject(name='old_rule', +icon='rule_icon.jpg') +registerBeforeTraverse(container, old_rule, 'AccessRule') +request = DummyRequest(URL1 = 'http://example.com/') +request.form = {'none': '1'} +result = self._callFUT(container, None, request) +self.failUnless(isinstance(result, str)) +self.failUnless('TITLENo Access Rule/TITLE' in result) +self.failIf(container.__before_traverse__) +self.failIf('icon' in old_rule.__dict__) + +def test_w_invalid_method_id_w_existing_rules_no_request(self): +from ZPublisher.BeforeTraverse import registerBeforeTraverse +container = DummyContainer() +old_rule = container.old_rule = DummyObject(name='old_rule', +icon='rule_icon.jpg') +registerBeforeTraverse(container, old_rule, 'AccessRule') +result = self._callFUT(container, 'nonesuch', None) +self.failUnless(result is None) +self.failUnless((99, 'AccessRule') in container.__before_traverse__) +rule = container.__before_traverse__[(99, 'AccessRule')] +self.assertEqual(rule.name, 'old_rule') +self.assertEqual(old_rule.icon, 'rule_icon.jpg') + +def test_w_invalid_method_id_w_existing_rules_w_request(self): +from ZPublisher.BeforeTraverse import registerBeforeTraverse +container = DummyContainer() +old_rule = container.old_rule = DummyObject(name='old_rule', +icon='rule_icon.jpg') +registerBeforeTraverse(container, old_rule, 'AccessRule') +request = DummyRequest(URL1 = 'http://example.com/') +request.form = {} +result = self._callFUT(container, 'nonesuch', request) +self.failUnless(isinstance(result, str)) +self.failUnless('TITLEInvalid Method Id/TITLE' in result) +self.failUnless((99, 'AccessRule') in container.__before_traverse__) +rule = container.__before_traverse__[(99, 'AccessRule')] +self.assertEqual(rule.name, 'old_rule') +self.assertEqual(old_rule.icon, 'rule_icon.jpg') + +def test_w_valid_method_id_w_existing_rules_no_request(self): +from ZPublisher.BeforeTraverse import registerBeforeTraverse +container = DummyContainer() +old_rule = container.old_rule = DummyObject(name='old_rule', +icon='rule_icon.jpg') +new_rule = container.new_rule = DummyObject(name='new_rule') +registerBeforeTraverse(container, old_rule, 'AccessRule') +result = self._callFUT(container, 'new_rule', None) +self.failUnless(result is None) +self.failIf((99,
[Zope-Checkins] SVN: Zope/branches/2.12/src/Products/SiteAccess/AccessRule.py Readability.
Log message for revision 112610: Readability. Changed: U Zope/branches/2.12/src/Products/SiteAccess/AccessRule.py -=- Modified: Zope/branches/2.12/src/Products/SiteAccess/AccessRule.py === --- Zope/branches/2.12/src/Products/SiteAccess/AccessRule.py2010-05-21 13:16:40 UTC (rev 112609) +++ Zope/branches/2.12/src/Products/SiteAccess/AccessRule.py2010-05-21 13:58:20 UTC (rev 112610) @@ -18,7 +18,8 @@ meta_type = 'Set Access Rule' def __call__(self, container, request): -if SUPPRESS_ACCESSRULE: return +if SUPPRESS_ACCESSRULE: +return if '_SUPPRESS_ACCESSRULE' in _swallow(request, '_SUPPRESS'): request.setVirtualRoot(request.steps) return @@ -44,8 +45,10 @@ if method_id is None or (REQUEST and REQUEST.form.has_key('none')): rules = unregisterBeforeTraverse(self, 'AccessRule') if rules: -try: del getattr(self, rules[0].name).icon -except: pass +try: +del getattr(self, rules[0].name).icon +except: +pass if REQUEST: return MessageDialog(title='No Access Rule', message='This object now has no Access Rule', @@ -53,13 +56,16 @@ elif method_id and hasattr(self, method_id): rules = unregisterBeforeTraverse(self, 'AccessRule') if rules: -try: del getattr(self, rules[0].name).icon -except: pass +try: +del getattr(self, rules[0].name).icon +except: +pass hook = AccessRule(method_id) registerBeforeTraverse(self, hook, 'AccessRule', 1) try: getattr(self, method_id).icon = 'misc_/SiteAccess/AccessRule.gif' -except: pass +except: +pass if REQUEST: return MessageDialog(title='Access Rule Set', message='%s is now the Access Rule for this object' ___ Zope-Checkins maillist - Zope-Checkins@zope.org https://mail.zope.org/mailman/listinfo/zope-checkins
[Zope-Checkins] SVN: Zope/branches/2.12/src/Products/SiteAccess/ Remove string exception.
Log message for revision 112611: Remove string exception. Coverage for 'Products.SiteAccess.SiteRoot.Traverser'. Changed: U Zope/branches/2.12/src/Products/SiteAccess/SiteRoot.py U Zope/branches/2.12/src/Products/SiteAccess/tests/testSiteRoot.py -=- Modified: Zope/branches/2.12/src/Products/SiteAccess/SiteRoot.py === --- Zope/branches/2.12/src/Products/SiteAccess/SiteRoot.py 2010-05-21 13:58:20 UTC (rev 112610) +++ Zope/branches/2.12/src/Products/SiteAccess/SiteRoot.py 2010-05-21 13:58:21 UTC (rev 112611) @@ -62,10 +62,8 @@ self.priority) def _setId(self, id): if id != self.id: -raise MessageDialog( -title='Invalid Id', -message='Cannot change the id of a %s' % escape(self.meta_type), -action ='./manage_main',) +raise ValueError('Cannot change the id of a %s' +% escape(self.meta_type)) class SiteRoot(Traverser, Implicit): SiteAccess.SiteRoot object Modified: Zope/branches/2.12/src/Products/SiteAccess/tests/testSiteRoot.py === --- Zope/branches/2.12/src/Products/SiteAccess/tests/testSiteRoot.py 2010-05-21 13:58:20 UTC (rev 112610) +++ Zope/branches/2.12/src/Products/SiteAccess/tests/testSiteRoot.py 2010-05-21 13:58:21 UTC (rev 112611) @@ -7,6 +7,116 @@ import unittest + +class TraverserTests(unittest.TestCase): + +def _getTargetClass(self): +from Products.SiteAccess.SiteRoot import Traverser +return Traverser + +def _makeOne(self): +traverser = self._getTargetClass()() +traverser.id = 'testing' +return traverser + +def test_addToContainer(self): +traverser = self._makeOne() +container = DummyContainer() +traverser.addToContainer(container) +self.failUnless(container.testing is traverser) +hook = container.__before_traverse__[(100, 'Traverser')] +self.assertEqual(hook.name, 'testing') + +def test_manage_addToContainer_no_nextUrl(self): +traverser = self._makeOne() +container = DummyContainer() +result = traverser.manage_addToContainer(container) +self.failUnless(result is None) +self.failUnless(container.testing is traverser) +hook = container.__before_traverse__[(100, 'Traverser')] +self.assertEqual(hook.name, 'testing') + +def test_manage_addToContainer_w_nextUrl_w_name_collision(self): +NEXTURL='http://example.com/manage_main' +traverser = self._makeOne() +container = DummyContainer() +container.testing = object() +result = traverser.manage_addToContainer(container, nextURL=NEXTURL) +self.failUnless(isinstance(result, str)) +self.failUnless('TITLEItem Exists/TITLE' in result) +self.failIf(container.testing is traverser) + +def test_manage_addToContainer_w_nextUrl_wo_name_collision(self): +NEXTURL='http://example.com/manage_main' +traverser = self._makeOne() +container = DummyContainer() +result = traverser.manage_addToContainer(container, nextURL=NEXTURL) +self.failUnless(isinstance(result, str)) +self.failUnless('TITLEItem Added/TITLE' in result) +self.failUnless(container.testing is traverser) +hook = container.__before_traverse__[(100, 'Traverser')] +self.assertEqual(hook.name, 'testing') + +def test_manage_beforeDelete_item_is_not_self(self): +from ZPublisher.BeforeTraverse import registerBeforeTraverse +traverser = self._makeOne() +container = DummyContainer() +other = container.other = DummyObject(name='other') +registerBeforeTraverse(container, other, 'Traverser', 100) +item = object() +traverser.manage_beforeDelete(item, container) +hook = container.__before_traverse__[(100, 'Traverser')] +self.assertEqual(hook.name, 'other') + +def test_manage_beforeDelete_item_is_self(self): +from ZPublisher.BeforeTraverse import registerBeforeTraverse +traverser = self._makeOne() +container = DummyContainer() +other = container.other = DummyObject(name='other') +registerBeforeTraverse(container, other, 'Traverser', 100) +traverser.manage_beforeDelete(traverser, container) +self.failIf(container.__before_traverse__) + +def test_manage_afterAdd_item_not_self(self): +traverser = self._makeOne() +container = DummyContainer() +item = object() +traverser.manage_afterAdd(item, container) +self.failIf('__before_traverse__' in container.__dict__) + +def test_manage_afterAdd_item_is_self(self): +traverser = self._makeOne() +container = DummyContainer() +
[Zope-Checkins] SVN: Zope/trunk/src/Products/SiteAccess/AccessRule.py Merge readability fix from 2.12 branch.
Log message for revision 112612: Merge readability fix from 2.12 branch. Changed: U Zope/trunk/src/Products/SiteAccess/AccessRule.py -=- Modified: Zope/trunk/src/Products/SiteAccess/AccessRule.py === --- Zope/trunk/src/Products/SiteAccess/AccessRule.py2010-05-21 13:58:21 UTC (rev 112611) +++ Zope/trunk/src/Products/SiteAccess/AccessRule.py2010-05-21 13:58:42 UTC (rev 112612) @@ -18,7 +18,8 @@ meta_type = 'Set Access Rule' def __call__(self, container, request): -if SUPPRESS_ACCESSRULE: return +if SUPPRESS_ACCESSRULE: +return if '_SUPPRESS_ACCESSRULE' in _swallow(request, '_SUPPRESS'): request.setVirtualRoot(request.steps) return @@ -44,8 +45,10 @@ if method_id is None or (REQUEST and REQUEST.form.has_key('none')): rules = unregisterBeforeTraverse(self, 'AccessRule') if rules: -try: del getattr(self, rules[0].name).icon -except: pass +try: +del getattr(self, rules[0].name).icon +except: +pass if REQUEST: return MessageDialog(title='No Access Rule', message='This object now has no Access Rule', @@ -53,13 +56,16 @@ elif method_id and hasattr(self, method_id): rules = unregisterBeforeTraverse(self, 'AccessRule') if rules: -try: del getattr(self, rules[0].name).icon -except: pass +try: +del getattr(self, rules[0].name).icon +except: +pass hook = AccessRule(method_id) registerBeforeTraverse(self, hook, 'AccessRule', 1) try: getattr(self, method_id).icon = 'misc_/SiteAccess/AccessRule.gif' -except: pass +except: +pass if REQUEST: return MessageDialog(title='Access Rule Set', message='%s is now the Access Rule for this object' ___ Zope-Checkins maillist - Zope-Checkins@zope.org https://mail.zope.org/mailman/listinfo/zope-checkins
[Zope-Checkins] SVN: Zope/trunk/src/Products/SiteAccess/ Merge string exception removal, coverage from 2.12 branch.
Log message for revision 112613: Merge string exception removal, coverage from 2.12 branch. Changed: U Zope/trunk/src/Products/SiteAccess/SiteRoot.py U Zope/trunk/src/Products/SiteAccess/tests/testSiteRoot.py -=- Modified: Zope/trunk/src/Products/SiteAccess/SiteRoot.py === --- Zope/trunk/src/Products/SiteAccess/SiteRoot.py 2010-05-21 13:58:42 UTC (rev 112612) +++ Zope/trunk/src/Products/SiteAccess/SiteRoot.py 2010-05-21 13:58:43 UTC (rev 112613) @@ -62,10 +62,8 @@ self.priority) def _setId(self, id): if id != self.id: -raise MessageDialog( -title='Invalid Id', -message='Cannot change the id of a %s' % escape(self.meta_type), -action ='./manage_main',) +raise ValueError('Cannot change the id of a %s' +% escape(self.meta_type)) class SiteRoot(Traverser, Implicit): SiteAccess.SiteRoot object Modified: Zope/trunk/src/Products/SiteAccess/tests/testSiteRoot.py === --- Zope/trunk/src/Products/SiteAccess/tests/testSiteRoot.py2010-05-21 13:58:42 UTC (rev 112612) +++ Zope/trunk/src/Products/SiteAccess/tests/testSiteRoot.py2010-05-21 13:58:43 UTC (rev 112613) @@ -7,6 +7,116 @@ import unittest + +class TraverserTests(unittest.TestCase): + +def _getTargetClass(self): +from Products.SiteAccess.SiteRoot import Traverser +return Traverser + +def _makeOne(self): +traverser = self._getTargetClass()() +traverser.id = 'testing' +return traverser + +def test_addToContainer(self): +traverser = self._makeOne() +container = DummyContainer() +traverser.addToContainer(container) +self.failUnless(container.testing is traverser) +hook = container.__before_traverse__[(100, 'Traverser')] +self.assertEqual(hook.name, 'testing') + +def test_manage_addToContainer_no_nextUrl(self): +traverser = self._makeOne() +container = DummyContainer() +result = traverser.manage_addToContainer(container) +self.failUnless(result is None) +self.failUnless(container.testing is traverser) +hook = container.__before_traverse__[(100, 'Traverser')] +self.assertEqual(hook.name, 'testing') + +def test_manage_addToContainer_w_nextUrl_w_name_collision(self): +NEXTURL='http://example.com/manage_main' +traverser = self._makeOne() +container = DummyContainer() +container.testing = object() +result = traverser.manage_addToContainer(container, nextURL=NEXTURL) +self.failUnless(isinstance(result, str)) +self.failUnless('TITLEItem Exists/TITLE' in result) +self.failIf(container.testing is traverser) + +def test_manage_addToContainer_w_nextUrl_wo_name_collision(self): +NEXTURL='http://example.com/manage_main' +traverser = self._makeOne() +container = DummyContainer() +result = traverser.manage_addToContainer(container, nextURL=NEXTURL) +self.failUnless(isinstance(result, str)) +self.failUnless('TITLEItem Added/TITLE' in result) +self.failUnless(container.testing is traverser) +hook = container.__before_traverse__[(100, 'Traverser')] +self.assertEqual(hook.name, 'testing') + +def test_manage_beforeDelete_item_is_not_self(self): +from ZPublisher.BeforeTraverse import registerBeforeTraverse +traverser = self._makeOne() +container = DummyContainer() +other = container.other = DummyObject(name='other') +registerBeforeTraverse(container, other, 'Traverser', 100) +item = object() +traverser.manage_beforeDelete(item, container) +hook = container.__before_traverse__[(100, 'Traverser')] +self.assertEqual(hook.name, 'other') + +def test_manage_beforeDelete_item_is_self(self): +from ZPublisher.BeforeTraverse import registerBeforeTraverse +traverser = self._makeOne() +container = DummyContainer() +other = container.other = DummyObject(name='other') +registerBeforeTraverse(container, other, 'Traverser', 100) +traverser.manage_beforeDelete(traverser, container) +self.failIf(container.__before_traverse__) + +def test_manage_afterAdd_item_not_self(self): +traverser = self._makeOne() +container = DummyContainer() +item = object() +traverser.manage_afterAdd(item, container) +self.failIf('__before_traverse__' in container.__dict__) + +def test_manage_afterAdd_item_is_self(self): +traverser = self._makeOne() +container = DummyContainer() +traverser.manage_afterAdd(traverser, container) +hook = container.__before_traverse__[(100,
[Zope-Checkins] SVN: Zope/branches/2.12/src/Products/SiteAccess/SiteRoot.py Formatting.
Log message for revision 112614: Formatting. Changed: U Zope/branches/2.12/src/Products/SiteAccess/SiteRoot.py -=- Modified: Zope/branches/2.12/src/Products/SiteAccess/SiteRoot.py === --- Zope/branches/2.12/src/Products/SiteAccess/SiteRoot.py 2010-05-21 13:58:43 UTC (rev 112613) +++ Zope/branches/2.12/src/Products/SiteAccess/SiteRoot.py 2010-05-21 14:52:37 UTC (rev 112614) @@ -19,12 +19,12 @@ SUPPRESS_SITEROOT = os.environ.has_key('SUPPRESS_SITEROOT') class Traverser(Persistent, Item): -Class for overriding container's __before_traverse__ + Class for overriding container's __before_traverse__ Containers are expected to have at most one instance of any particular -subclass, with Id equal to the meta_type of the subclass. - -meta_type='Traverser' +subclass, with Id equal to the meta_type of the subclass. + +meta_type = 'Traverser' priority = 100 __ac_permissions__=() @@ -66,22 +66,24 @@ % escape(self.meta_type)) class SiteRoot(Traverser, Implicit): -SiteAccess.SiteRoot object + SiteAccess.SiteRoot object A SiteRoot causes traversal of its container to replace the part -of the Request path traversed so far with the request's SiteRootURL. - +of the Request path traversed so far with the request's SiteRootURL. + id = meta_type = 'SiteRoot' title = '' priority = 50 -manage_options=({'label':'Edit', 'action':'manage_main', 'help': ('SiteAccess', 'SiteRoot_Edit.stx')},) +manage_options=({'label':'Edit', + 'action':'manage_main', + 'help': ('SiteAccess', 'SiteRoot_Edit.stx'), +},) manage = manage_main = DTMLFile('www/SiteRootEdit', globals()) manage_main._setName('manage_main') def __init__(self, title, base, path): -'''Title''' self.title = title.strip() self.base = base = base.strip() self.path = path = path.strip() @@ -95,7 +97,8 @@ except: pass def manage_edit(self, title, base, path, REQUEST=None): -'''Set the title, base, and path''' + Set the title, base, and path. + self.__init__(title, base, path) if REQUEST: return MessageDialog(title='SiteRoot changed.', @@ -103,8 +106,10 @@ action='%s/manage_main' % REQUEST['URL1']) def __call__(self, client, request, response=None): -'''Traversing''' -if SUPPRESS_SITEROOT: return + Traversing. + +if SUPPRESS_SITEROOT: +return if '_SUPPRESS_SITEROOT' in _swallow(request, '_SUPPRESS'): request.setVirtualRoot(request.steps) return @@ -118,22 +123,26 @@ if srd[i] is None: srd[i] = request.environ.get(srp, None) if srd[0] is not None: -request['ACTUAL_URL'] = request['ACTUAL_URL'].replace(request['SERVER_URL'], srd[0]) +request['ACTUAL_URL'] = request['ACTUAL_URL'].replace( +request['SERVER_URL'], srd[0]) request['SERVER_URL'] = srd[0] request._resetURLS() if srd[1] is not None: old = request['URL'] request.setVirtualRoot(srd[1]) -request['ACTUAL_URL'] = request['ACTUAL_URL'].replace(old, request['URL']) +request['ACTUAL_URL'] = request['ACTUAL_URL'].replace( +old, request['URL']) def get_size(self): -'''Make FTP happy''' + Make FTP happy + return 0 def manage_addSiteRoot(self, title='', base='', path='', REQUEST=None, **ignored): - -sr=SiteRoot(title, base, path) + Add a SiteRoot to a container. + +sr = SiteRoot(title, base, path) if REQUEST: return sr.manage_addToContainer(self.this(), '%s/manage_main' % REQUEST['URL1']) ___ Zope-Checkins maillist - Zope-Checkins@zope.org https://mail.zope.org/mailman/listinfo/zope-checkins
[Zope-Checkins] SVN: Zope/branches/2.12/src/Products/SiteAccess/SiteRoot.py More readability.
Log message for revision 112615: More readability. Changed: U Zope/branches/2.12/src/Products/SiteAccess/SiteRoot.py -=- Modified: Zope/branches/2.12/src/Products/SiteAccess/SiteRoot.py === --- Zope/branches/2.12/src/Products/SiteAccess/SiteRoot.py 2010-05-21 14:52:37 UTC (rev 112614) +++ Zope/branches/2.12/src/Products/SiteAccess/SiteRoot.py 2010-05-21 14:52:38 UTC (rev 112615) @@ -87,14 +87,20 @@ self.title = title.strip() self.base = base = base.strip() self.path = path = path.strip() -if base: self.SiteRootBASE = base +if base: +self.SiteRootBASE = base else: -try: del self.SiteRootBASE -except: pass -if path: self.SiteRootPATH = path +try: +del self.SiteRootBASE +except: +pass +if path: +self.SiteRootPATH = path else: -try: del self.SiteRootPATH -except: pass +try: +del self.SiteRootPATH +except: +pass def manage_edit(self, title, base, path, REQUEST=None): Set the title, base, and path. ___ Zope-Checkins maillist - Zope-Checkins@zope.org https://mail.zope.org/mailman/listinfo/zope-checkins
[Zope-Checkins] SVN: Zope/branches/2.12/src/Products/SiteAccess/tests/testSiteRoot.py Coveraage for 'Products.SiteAccess.SiteRoot.SiteRoot'.
Log message for revision 112616: Coveraage for 'Products.SiteAccess.SiteRoot.SiteRoot'. Changed: U Zope/branches/2.12/src/Products/SiteAccess/tests/testSiteRoot.py -=- Modified: Zope/branches/2.12/src/Products/SiteAccess/tests/testSiteRoot.py === --- Zope/branches/2.12/src/Products/SiteAccess/tests/testSiteRoot.py 2010-05-21 14:52:38 UTC (rev 112615) +++ Zope/branches/2.12/src/Products/SiteAccess/tests/testSiteRoot.py 2010-05-21 14:52:40 UTC (rev 112616) @@ -42,7 +42,6 @@ container = DummyContainer() container.testing = object() result = traverser.manage_addToContainer(container, nextURL=NEXTURL) -self.failUnless(isinstance(result, str)) self.failUnless('TITLEItem Exists/TITLE' in result) self.failIf(container.testing is traverser) @@ -51,7 +50,6 @@ traverser = self._makeOne() container = DummyContainer() result = traverser.manage_addToContainer(container, nextURL=NEXTURL) -self.failUnless(isinstance(result, str)) self.failUnless('TITLEItem Added/TITLE' in result) self.failUnless(container.testing is traverser) hook = container.__before_traverse__[(100, 'Traverser')] @@ -100,11 +98,159 @@ self.assertRaises(ValueError, traverser._setId, 'other') +class SiteRootTests(unittest.TestCase): + +_old_SSR = None + +def setUp(self): +from Testing.ZopeTestCase import ZopeLite +ZopeLite.startup() + +def tearDown(self): +if self._old_SSR is not None: +self._set_SUPPRESS_SITEROOT(self._old_SSR) + +def _set_SUPPRESS_SITEROOT(self, value): +from Products.SiteAccess import SiteRoot as SR +(self._old_SSR, + SR.SUPPRESS_SITEROOT) = (SR.SUPPRESS_SITEROOT, value) + +def _getTargetClass(self): +from Products.SiteAccess.SiteRoot import SiteRoot +return SiteRoot + +def _makeOne(self, title='TITLE', base='', path=''): +return self._getTargetClass()(title, base, path) + +def test___init___strips_base_and_path(self): +siteroot = self._makeOne(base=' ', path=' ') +self.assertEqual(siteroot.title, 'TITLE') +self.assertEqual(siteroot.base, '') +self.assertEqual(siteroot.path, '') +# XXX Why aren't these defaulted to None at class scope? +# Even better: why do they exist at all? +self.failUnless(getattr(siteroot, 'SiteRootBase', self) is self) +self.failUnless(getattr(siteroot, 'SiteRootPath', self) is self) + +def test___init___w_base_and_path(self): +siteroot = self._makeOne(base='http://example.com', path='/path') +self.assertEqual(siteroot.title, 'TITLE') +self.assertEqual(siteroot.base, 'http://example.com') +self.assertEqual(siteroot.path, '/path') +self.assertEqual(siteroot.SiteRootBASE, 'http://example.com') +self.assertEqual(siteroot.SiteRootPATH, '/path') + +def test_manage_edit_no_REQUEST(self): +siteroot = self._makeOne(title='Before', + base='http://before.example.com', + path='/before') +result = siteroot.manage_edit('After', 'http://after.example.com ', + '/after ') +self.failUnless(result is None) +self.assertEqual(siteroot.title, 'After') +self.assertEqual(siteroot.base, 'http://after.example.com') +self.assertEqual(siteroot.path, '/after') +self.assertEqual(siteroot.SiteRootBASE, 'http://after.example.com') +self.assertEqual(siteroot.SiteRootPATH, '/after') + +def test_manage_edit_w_REQUEST(self): +siteroot = self._makeOne(title='Before', + base='http://before.example.com', + path='/before') +result = siteroot.manage_edit('After', 'http://after.example.com ', + '/after ', + REQUEST = {'URL1': +'http://localhost:8080/manage_main'}) +self.failUnless('TITLESiteRoot changed./TITLE' in result) +self.assertEqual(siteroot.title, 'After') +self.assertEqual(siteroot.base, 'http://after.example.com') +self.assertEqual(siteroot.path, '/after') +self.assertEqual(siteroot.SiteRootBASE, 'http://after.example.com') +self.assertEqual(siteroot.SiteRootPATH, '/after') + +def test___call___w_SUPPRESS_SITEROOT_set(self): +self._set_SUPPRESS_SITEROOT(1) +siteroot = self._makeOne(base='http://example.com', path='/path') +request = {} +siteroot(None, request) +self.assertEqual(request, {}) + +def test___call___w_SUPPRESS_SITEROOT_in_URL(self): +# This behavior will change once we land lp:142878. +siteroot =
[Zope-Checkins] SVN: Zope/trunk/src/Products/SiteAccess/SiteRoot.py Merge formatting cleanups from 2.12 branch.
Log message for revision 112617: Merge formatting cleanups from 2.12 branch. Changed: U Zope/trunk/src/Products/SiteAccess/SiteRoot.py -=- Modified: Zope/trunk/src/Products/SiteAccess/SiteRoot.py === --- Zope/trunk/src/Products/SiteAccess/SiteRoot.py 2010-05-21 14:52:40 UTC (rev 112616) +++ Zope/trunk/src/Products/SiteAccess/SiteRoot.py 2010-05-21 14:53:11 UTC (rev 112617) @@ -19,12 +19,12 @@ SUPPRESS_SITEROOT = os.environ.has_key('SUPPRESS_SITEROOT') class Traverser(Persistent, Item): -Class for overriding container's __before_traverse__ + Class for overriding container's __before_traverse__ Containers are expected to have at most one instance of any particular -subclass, with Id equal to the meta_type of the subclass. - -meta_type='Traverser' +subclass, with Id equal to the meta_type of the subclass. + +meta_type = 'Traverser' priority = 100 __ac_permissions__=() @@ -66,22 +66,24 @@ % escape(self.meta_type)) class SiteRoot(Traverser, Implicit): -SiteAccess.SiteRoot object + SiteAccess.SiteRoot object A SiteRoot causes traversal of its container to replace the part -of the Request path traversed so far with the request's SiteRootURL. - +of the Request path traversed so far with the request's SiteRootURL. + id = meta_type = 'SiteRoot' title = '' priority = 50 -manage_options=({'label':'Edit', 'action':'manage_main', 'help': ('SiteAccess', 'SiteRoot_Edit.stx')},) +manage_options=({'label':'Edit', + 'action':'manage_main', + 'help': ('SiteAccess', 'SiteRoot_Edit.stx'), +},) manage = manage_main = DTMLFile('www/SiteRootEdit', globals()) manage_main._setName('manage_main') def __init__(self, title, base, path): -'''Title''' self.title = title.strip() self.base = base = base.strip() self.path = path = path.strip() @@ -95,7 +97,8 @@ except: pass def manage_edit(self, title, base, path, REQUEST=None): -'''Set the title, base, and path''' + Set the title, base, and path. + self.__init__(title, base, path) if REQUEST: return MessageDialog(title='SiteRoot changed.', @@ -103,8 +106,10 @@ action='%s/manage_main' % REQUEST['URL1']) def __call__(self, client, request, response=None): -'''Traversing''' -if SUPPRESS_SITEROOT: return + Traversing. + +if SUPPRESS_SITEROOT: +return if '_SUPPRESS_SITEROOT' in _swallow(request, '_SUPPRESS'): request.setVirtualRoot(request.steps) return @@ -118,22 +123,26 @@ if srd[i] is None: srd[i] = request.environ.get(srp, None) if srd[0] is not None: -request['ACTUAL_URL'] = request['ACTUAL_URL'].replace(request['SERVER_URL'], srd[0]) +request['ACTUAL_URL'] = request['ACTUAL_URL'].replace( +request['SERVER_URL'], srd[0]) request['SERVER_URL'] = srd[0] request._resetURLS() if srd[1] is not None: old = request['URL'] request.setVirtualRoot(srd[1]) -request['ACTUAL_URL'] = request['ACTUAL_URL'].replace(old, request['URL']) +request['ACTUAL_URL'] = request['ACTUAL_URL'].replace( +old, request['URL']) def get_size(self): -'''Make FTP happy''' + Make FTP happy + return 0 def manage_addSiteRoot(self, title='', base='', path='', REQUEST=None, **ignored): - -sr=SiteRoot(title, base, path) + Add a SiteRoot to a container. + +sr = SiteRoot(title, base, path) if REQUEST: return sr.manage_addToContainer(self.this(), '%s/manage_main' % REQUEST['URL1']) ___ Zope-Checkins maillist - Zope-Checkins@zope.org https://mail.zope.org/mailman/listinfo/zope-checkins
[Zope-Checkins] SVN: Zope/trunk/src/Products/SiteAccess/SiteRoot.py Merge more cleanups from 2.12 branch.
Log message for revision 112618: Merge more cleanups from 2.12 branch. Changed: U Zope/trunk/src/Products/SiteAccess/SiteRoot.py -=- Modified: Zope/trunk/src/Products/SiteAccess/SiteRoot.py === --- Zope/trunk/src/Products/SiteAccess/SiteRoot.py 2010-05-21 14:53:11 UTC (rev 112617) +++ Zope/trunk/src/Products/SiteAccess/SiteRoot.py 2010-05-21 14:53:12 UTC (rev 112618) @@ -87,14 +87,20 @@ self.title = title.strip() self.base = base = base.strip() self.path = path = path.strip() -if base: self.SiteRootBASE = base +if base: +self.SiteRootBASE = base else: -try: del self.SiteRootBASE -except: pass -if path: self.SiteRootPATH = path +try: +del self.SiteRootBASE +except: +pass +if path: +self.SiteRootPATH = path else: -try: del self.SiteRootPATH -except: pass +try: +del self.SiteRootPATH +except: +pass def manage_edit(self, title, base, path, REQUEST=None): Set the title, base, and path. ___ Zope-Checkins maillist - Zope-Checkins@zope.org https://mail.zope.org/mailman/listinfo/zope-checkins
[Zope-Checkins] SVN: Zope/trunk/src/Products/SiteAccess/tests/testSiteRoot.py Merge coverage from 2.12 branch.
Log message for revision 112619: Merge coverage from 2.12 branch. Changed: U Zope/trunk/src/Products/SiteAccess/tests/testSiteRoot.py -=- Modified: Zope/trunk/src/Products/SiteAccess/tests/testSiteRoot.py === --- Zope/trunk/src/Products/SiteAccess/tests/testSiteRoot.py2010-05-21 14:53:12 UTC (rev 112618) +++ Zope/trunk/src/Products/SiteAccess/tests/testSiteRoot.py2010-05-21 14:53:14 UTC (rev 112619) @@ -42,7 +42,6 @@ container = DummyContainer() container.testing = object() result = traverser.manage_addToContainer(container, nextURL=NEXTURL) -self.failUnless(isinstance(result, str)) self.failUnless('TITLEItem Exists/TITLE' in result) self.failIf(container.testing is traverser) @@ -51,7 +50,6 @@ traverser = self._makeOne() container = DummyContainer() result = traverser.manage_addToContainer(container, nextURL=NEXTURL) -self.failUnless(isinstance(result, str)) self.failUnless('TITLEItem Added/TITLE' in result) self.failUnless(container.testing is traverser) hook = container.__before_traverse__[(100, 'Traverser')] @@ -100,11 +98,159 @@ self.assertRaises(ValueError, traverser._setId, 'other') +class SiteRootTests(unittest.TestCase): + +_old_SSR = None + +def setUp(self): +from Testing.ZopeTestCase import ZopeLite +ZopeLite.startup() + +def tearDown(self): +if self._old_SSR is not None: +self._set_SUPPRESS_SITEROOT(self._old_SSR) + +def _set_SUPPRESS_SITEROOT(self, value): +from Products.SiteAccess import SiteRoot as SR +(self._old_SSR, + SR.SUPPRESS_SITEROOT) = (SR.SUPPRESS_SITEROOT, value) + +def _getTargetClass(self): +from Products.SiteAccess.SiteRoot import SiteRoot +return SiteRoot + +def _makeOne(self, title='TITLE', base='', path=''): +return self._getTargetClass()(title, base, path) + +def test___init___strips_base_and_path(self): +siteroot = self._makeOne(base=' ', path=' ') +self.assertEqual(siteroot.title, 'TITLE') +self.assertEqual(siteroot.base, '') +self.assertEqual(siteroot.path, '') +# XXX Why aren't these defaulted to None at class scope? +# Even better: why do they exist at all? +self.failUnless(getattr(siteroot, 'SiteRootBase', self) is self) +self.failUnless(getattr(siteroot, 'SiteRootPath', self) is self) + +def test___init___w_base_and_path(self): +siteroot = self._makeOne(base='http://example.com', path='/path') +self.assertEqual(siteroot.title, 'TITLE') +self.assertEqual(siteroot.base, 'http://example.com') +self.assertEqual(siteroot.path, '/path') +self.assertEqual(siteroot.SiteRootBASE, 'http://example.com') +self.assertEqual(siteroot.SiteRootPATH, '/path') + +def test_manage_edit_no_REQUEST(self): +siteroot = self._makeOne(title='Before', + base='http://before.example.com', + path='/before') +result = siteroot.manage_edit('After', 'http://after.example.com ', + '/after ') +self.failUnless(result is None) +self.assertEqual(siteroot.title, 'After') +self.assertEqual(siteroot.base, 'http://after.example.com') +self.assertEqual(siteroot.path, '/after') +self.assertEqual(siteroot.SiteRootBASE, 'http://after.example.com') +self.assertEqual(siteroot.SiteRootPATH, '/after') + +def test_manage_edit_w_REQUEST(self): +siteroot = self._makeOne(title='Before', + base='http://before.example.com', + path='/before') +result = siteroot.manage_edit('After', 'http://after.example.com ', + '/after ', + REQUEST = {'URL1': +'http://localhost:8080/manage_main'}) +self.failUnless('TITLESiteRoot changed./TITLE' in result) +self.assertEqual(siteroot.title, 'After') +self.assertEqual(siteroot.base, 'http://after.example.com') +self.assertEqual(siteroot.path, '/after') +self.assertEqual(siteroot.SiteRootBASE, 'http://after.example.com') +self.assertEqual(siteroot.SiteRootPATH, '/after') + +def test___call___w_SUPPRESS_SITEROOT_set(self): +self._set_SUPPRESS_SITEROOT(1) +siteroot = self._makeOne(base='http://example.com', path='/path') +request = {} +siteroot(None, request) +self.assertEqual(request, {}) + +def test___call___w_SUPPRESS_SITEROOT_in_URL(self): +# This behavior will change once we land lp:142878. +siteroot = self._makeOne(base='http://example.com', path='/path') +request =
[Zope-Checkins] SVN: Zope/branches/2.12/src/Products/SiteAccess/ Remove some insanity, now that we have coverage.
Log message for revision 112621: Remove some insanity, now that we have coverage. Changed: U Zope/branches/2.12/src/Products/SiteAccess/SiteRoot.py U Zope/branches/2.12/src/Products/SiteAccess/tests/testSiteRoot.py -=- Modified: Zope/branches/2.12/src/Products/SiteAccess/SiteRoot.py === --- Zope/branches/2.12/src/Products/SiteAccess/SiteRoot.py 2010-05-21 15:12:09 UTC (rev 112620) +++ Zope/branches/2.12/src/Products/SiteAccess/SiteRoot.py 2010-05-21 15:20:02 UTC (rev 112621) @@ -87,20 +87,6 @@ self.title = title.strip() self.base = base = base.strip() self.path = path = path.strip() -if base: -self.SiteRootBASE = base -else: -try: -del self.SiteRootBASE -except: -pass -if path: -self.SiteRootPATH = path -else: -try: -del self.SiteRootPATH -except: -pass def manage_edit(self, title, base, path, REQUEST=None): Set the title, base, and path. @@ -114,30 +100,26 @@ def __call__(self, client, request, response=None): Traversing. +rq = request if SUPPRESS_SITEROOT: return -if '_SUPPRESS_SITEROOT' in _swallow(request, '_SUPPRESS'): -request.setVirtualRoot(request.steps) +if '_SUPPRESS_SITEROOT' in _swallow(rq, '_SUPPRESS'): +rq.setVirtualRoot(rq.steps) return -srd = [None, None] -for i in (0, 1): -srp = ('SiteRootBASE', 'SiteRootPATH')[i] -try: -srd[i] = getattr(self, srp) -except AttributeError: -srd[i] = request.get(srp, None) -if srd[i] is None: -srd[i] = request.environ.get(srp, None) -if srd[0] is not None: -request['ACTUAL_URL'] = request['ACTUAL_URL'].replace( -request['SERVER_URL'], srd[0]) -request['SERVER_URL'] = srd[0] -request._resetURLS() -if srd[1] is not None: -old = request['URL'] -request.setVirtualRoot(srd[1]) -request['ACTUAL_URL'] = request['ACTUAL_URL'].replace( -old, request['URL']) +base = (self.base or +rq.get('SiteRootBASE') or +rq.environ.get('SiteRootBASE')) +path = (self.path or +rq.get('SiteRootPATH') or +rq.environ.get('SiteRootPATH')) +if base is not None: +rq['ACTUAL_URL'] = rq['ACTUAL_URL'].replace(rq['SERVER_URL'], base) +rq['SERVER_URL'] = base +rq._resetURLS() +if path is not None: +old = rq['URL'] +rq.setVirtualRoot(path) +rq['ACTUAL_URL'] = rq['ACTUAL_URL'].replace(old, rq['URL']) def get_size(self): Make FTP happy Modified: Zope/branches/2.12/src/Products/SiteAccess/tests/testSiteRoot.py === --- Zope/branches/2.12/src/Products/SiteAccess/tests/testSiteRoot.py 2010-05-21 15:12:09 UTC (rev 112620) +++ Zope/branches/2.12/src/Products/SiteAccess/tests/testSiteRoot.py 2010-05-21 15:20:02 UTC (rev 112621) @@ -127,18 +127,12 @@ self.assertEqual(siteroot.title, 'TITLE') self.assertEqual(siteroot.base, '') self.assertEqual(siteroot.path, '') -# XXX Why aren't these defaulted to None at class scope? -# Even better: why do they exist at all? -self.failUnless(getattr(siteroot, 'SiteRootBase', self) is self) -self.failUnless(getattr(siteroot, 'SiteRootPath', self) is self) def test___init___w_base_and_path(self): siteroot = self._makeOne(base='http://example.com', path='/path') self.assertEqual(siteroot.title, 'TITLE') self.assertEqual(siteroot.base, 'http://example.com') self.assertEqual(siteroot.path, '/path') -self.assertEqual(siteroot.SiteRootBASE, 'http://example.com') -self.assertEqual(siteroot.SiteRootPATH, '/path') def test_manage_edit_no_REQUEST(self): siteroot = self._makeOne(title='Before', @@ -150,8 +144,6 @@ self.assertEqual(siteroot.title, 'After') self.assertEqual(siteroot.base, 'http://after.example.com') self.assertEqual(siteroot.path, '/after') -self.assertEqual(siteroot.SiteRootBASE, 'http://after.example.com') -self.assertEqual(siteroot.SiteRootPATH, '/after') def test_manage_edit_w_REQUEST(self): siteroot = self._makeOne(title='Before', @@ -165,8 +157,6 @@ self.assertEqual(siteroot.title, 'After') self.assertEqual(siteroot.base, 'http://after.example.com') self.assertEqual(siteroot.path, '/after') -
[Zope-Checkins] SVN: Zope/branches/2.12/ Remove URL-based suppression of access rules and site root objects.
Log message for revision 112622: Remove URL-based suppression of access rules and site root objects. Suppression using ``os.environ`` still works. Fixes LP #142878. Changed: U Zope/branches/2.12/doc/CHANGES.rst U Zope/branches/2.12/src/Products/SiteAccess/AccessRule.py U Zope/branches/2.12/src/Products/SiteAccess/SiteRoot.py U Zope/branches/2.12/src/Products/SiteAccess/tests/testAccessRule.py U Zope/branches/2.12/src/Products/SiteAccess/tests/testSiteRoot.py -=- Modified: Zope/branches/2.12/doc/CHANGES.rst === --- Zope/branches/2.12/doc/CHANGES.rst 2010-05-21 15:20:02 UTC (rev 112621) +++ Zope/branches/2.12/doc/CHANGES.rst 2010-05-21 15:20:04 UTC (rev 112622) @@ -11,6 +11,9 @@ Bugs Fixed ++ +- LP #142878: Remove URL-based suppression of access rules and site root + objects. Suppression using ``os.environ`` still works. + - LP #143144: Fix documentation for the zope.conf ``mount-point`` directive. Modified: Zope/branches/2.12/src/Products/SiteAccess/AccessRule.py === --- Zope/branches/2.12/src/Products/SiteAccess/AccessRule.py2010-05-21 15:20:02 UTC (rev 112621) +++ Zope/branches/2.12/src/Products/SiteAccess/AccessRule.py2010-05-21 15:20:04 UTC (rev 112622) @@ -20,20 +20,8 @@ def __call__(self, container, request): if SUPPRESS_ACCESSRULE: return -if '_SUPPRESS_ACCESSRULE' in _swallow(request, '_SUPPRESS'): -request.setVirtualRoot(request.steps) -return NameCaller.__call__(self, container, request) -def _swallow(request, prefix): -path = request['TraversalRequestNameStack'] -steps = request.steps -i = len(steps) -while i 0 and steps[i - 1][:1] == '_': -i = i - 1 -while path and path[-1][:len(prefix)] == prefix: -steps.append(path.pop()) -return steps[i:] def manage_addAccessRule(self, method_id=None, REQUEST=None, **ignored): Point a __before_traverse__ entry at the specified method Modified: Zope/branches/2.12/src/Products/SiteAccess/SiteRoot.py === --- Zope/branches/2.12/src/Products/SiteAccess/SiteRoot.py 2010-05-21 15:20:02 UTC (rev 112621) +++ Zope/branches/2.12/src/Products/SiteAccess/SiteRoot.py 2010-05-21 15:20:04 UTC (rev 112622) @@ -14,8 +14,6 @@ from ZPublisher.BeforeTraverse import registerBeforeTraverse from ZPublisher.BeforeTraverse import unregisterBeforeTraverse -from Products.SiteAccess.AccessRule import _swallow - SUPPRESS_SITEROOT = os.environ.has_key('SUPPRESS_SITEROOT') class Traverser(Persistent, Item): @@ -103,9 +101,6 @@ rq = request if SUPPRESS_SITEROOT: return -if '_SUPPRESS_SITEROOT' in _swallow(rq, '_SUPPRESS'): -rq.setVirtualRoot(rq.steps) -return base = (self.base or rq.get('SiteRootBASE') or rq.environ.get('SiteRootBASE')) Modified: Zope/branches/2.12/src/Products/SiteAccess/tests/testAccessRule.py === --- Zope/branches/2.12/src/Products/SiteAccess/tests/testAccessRule.py 2010-05-21 15:20:02 UTC (rev 112621) +++ Zope/branches/2.12/src/Products/SiteAccess/tests/testAccessRule.py 2010-05-21 15:20:04 UTC (rev 112622) @@ -37,7 +37,7 @@ self.failIf(_called) def test___call___w_SUPPRESS_ACCESSRULE_in_URL(self): -# This behavior will change once we land lp:142878. +# This behavior changed in landing lp:142878. _called = [] def _func(*args): _called.append(args) @@ -47,8 +47,8 @@ request.steps = [] container = DummyContainer(testing=_func) rule(container, request) -self.failIf(_called) -self.assertEqual(request._virtual_root, ['_SUPPRESS_ACCESSRULE']) +self.failUnless(_called) +self.assertEqual(request._virtual_root, None) def test___call___wo_SUPPRESS_ACCESSRULE(self): _called = [] Modified: Zope/branches/2.12/src/Products/SiteAccess/tests/testSiteRoot.py === --- Zope/branches/2.12/src/Products/SiteAccess/tests/testSiteRoot.py 2010-05-21 15:20:02 UTC (rev 112621) +++ Zope/branches/2.12/src/Products/SiteAccess/tests/testSiteRoot.py 2010-05-21 15:20:04 UTC (rev 112622) @@ -166,16 +166,24 @@ self.assertEqual(request, {}) def test___call___w_SUPPRESS_SITEROOT_in_URL(self): -# This behavior will change once we land lp:142878. -siteroot = self._makeOne(base='http://example.com', path='/path') +# This behavior changed in landing lp:142878. +URL='http://localhost:8080/example/folder/' +siteroot = self._makeOne(base='http://example.com', path='/example')
[Zope-Checkins] SVN: Zope/trunk/src/Products/SiteAccess/ Merge saner SiteRoot impl. from 2.12 branch.
Log message for revision 112623: Merge saner SiteRoot impl. from 2.12 branch. Changed: U Zope/trunk/src/Products/SiteAccess/SiteRoot.py U Zope/trunk/src/Products/SiteAccess/tests/testSiteRoot.py -=- Modified: Zope/trunk/src/Products/SiteAccess/SiteRoot.py === --- Zope/trunk/src/Products/SiteAccess/SiteRoot.py 2010-05-21 15:20:04 UTC (rev 112622) +++ Zope/trunk/src/Products/SiteAccess/SiteRoot.py 2010-05-21 15:20:13 UTC (rev 112623) @@ -87,20 +87,6 @@ self.title = title.strip() self.base = base = base.strip() self.path = path = path.strip() -if base: -self.SiteRootBASE = base -else: -try: -del self.SiteRootBASE -except: -pass -if path: -self.SiteRootPATH = path -else: -try: -del self.SiteRootPATH -except: -pass def manage_edit(self, title, base, path, REQUEST=None): Set the title, base, and path. @@ -114,30 +100,26 @@ def __call__(self, client, request, response=None): Traversing. +rq = request if SUPPRESS_SITEROOT: return -if '_SUPPRESS_SITEROOT' in _swallow(request, '_SUPPRESS'): -request.setVirtualRoot(request.steps) +if '_SUPPRESS_SITEROOT' in _swallow(rq, '_SUPPRESS'): +rq.setVirtualRoot(rq.steps) return -srd = [None, None] -for i in (0, 1): -srp = ('SiteRootBASE', 'SiteRootPATH')[i] -try: -srd[i] = getattr(self, srp) -except AttributeError: -srd[i] = request.get(srp, None) -if srd[i] is None: -srd[i] = request.environ.get(srp, None) -if srd[0] is not None: -request['ACTUAL_URL'] = request['ACTUAL_URL'].replace( -request['SERVER_URL'], srd[0]) -request['SERVER_URL'] = srd[0] -request._resetURLS() -if srd[1] is not None: -old = request['URL'] -request.setVirtualRoot(srd[1]) -request['ACTUAL_URL'] = request['ACTUAL_URL'].replace( -old, request['URL']) +base = (self.base or +rq.get('SiteRootBASE') or +rq.environ.get('SiteRootBASE')) +path = (self.path or +rq.get('SiteRootPATH') or +rq.environ.get('SiteRootPATH')) +if base is not None: +rq['ACTUAL_URL'] = rq['ACTUAL_URL'].replace(rq['SERVER_URL'], base) +rq['SERVER_URL'] = base +rq._resetURLS() +if path is not None: +old = rq['URL'] +rq.setVirtualRoot(path) +rq['ACTUAL_URL'] = rq['ACTUAL_URL'].replace(old, rq['URL']) def get_size(self): Make FTP happy Modified: Zope/trunk/src/Products/SiteAccess/tests/testSiteRoot.py === --- Zope/trunk/src/Products/SiteAccess/tests/testSiteRoot.py2010-05-21 15:20:04 UTC (rev 112622) +++ Zope/trunk/src/Products/SiteAccess/tests/testSiteRoot.py2010-05-21 15:20:13 UTC (rev 112623) @@ -127,18 +127,12 @@ self.assertEqual(siteroot.title, 'TITLE') self.assertEqual(siteroot.base, '') self.assertEqual(siteroot.path, '') -# XXX Why aren't these defaulted to None at class scope? -# Even better: why do they exist at all? -self.failUnless(getattr(siteroot, 'SiteRootBase', self) is self) -self.failUnless(getattr(siteroot, 'SiteRootPath', self) is self) def test___init___w_base_and_path(self): siteroot = self._makeOne(base='http://example.com', path='/path') self.assertEqual(siteroot.title, 'TITLE') self.assertEqual(siteroot.base, 'http://example.com') self.assertEqual(siteroot.path, '/path') -self.assertEqual(siteroot.SiteRootBASE, 'http://example.com') -self.assertEqual(siteroot.SiteRootPATH, '/path') def test_manage_edit_no_REQUEST(self): siteroot = self._makeOne(title='Before', @@ -150,8 +144,6 @@ self.assertEqual(siteroot.title, 'After') self.assertEqual(siteroot.base, 'http://after.example.com') self.assertEqual(siteroot.path, '/after') -self.assertEqual(siteroot.SiteRootBASE, 'http://after.example.com') -self.assertEqual(siteroot.SiteRootPATH, '/after') def test_manage_edit_w_REQUEST(self): siteroot = self._makeOne(title='Before', @@ -165,8 +157,6 @@ self.assertEqual(siteroot.title, 'After') self.assertEqual(siteroot.base, 'http://after.example.com') self.assertEqual(siteroot.path, '/after') -self.assertEqual(siteroot.SiteRootBASE,
[Zope-Checkins] SVN: Zope/trunk/ Merge fix for LP#142878 from 2.12 branch.
Log message for revision 112624: Merge fix for LP#142878 from 2.12 branch. Changed: U Zope/trunk/doc/CHANGES.rst U Zope/trunk/src/Products/SiteAccess/AccessRule.py U Zope/trunk/src/Products/SiteAccess/SiteRoot.py U Zope/trunk/src/Products/SiteAccess/tests/testAccessRule.py U Zope/trunk/src/Products/SiteAccess/tests/testSiteRoot.py -=- Modified: Zope/trunk/doc/CHANGES.rst === --- Zope/trunk/doc/CHANGES.rst 2010-05-21 15:20:13 UTC (rev 112623) +++ Zope/trunk/doc/CHANGES.rst 2010-05-21 15:20:15 UTC (rev 112624) @@ -162,6 +162,9 @@ Bugs Fixed ++ +- LP #142878: Remove URL-based suppression of access rules and site root + objects. Suppression using ``os.environ`` still works. + - LP #143144: Fix documentation for the zope.conf ``mount-point`` directive. Modified: Zope/trunk/src/Products/SiteAccess/AccessRule.py === --- Zope/trunk/src/Products/SiteAccess/AccessRule.py2010-05-21 15:20:13 UTC (rev 112623) +++ Zope/trunk/src/Products/SiteAccess/AccessRule.py2010-05-21 15:20:15 UTC (rev 112624) @@ -20,20 +20,8 @@ def __call__(self, container, request): if SUPPRESS_ACCESSRULE: return -if '_SUPPRESS_ACCESSRULE' in _swallow(request, '_SUPPRESS'): -request.setVirtualRoot(request.steps) -return NameCaller.__call__(self, container, request) -def _swallow(request, prefix): -path = request['TraversalRequestNameStack'] -steps = request.steps -i = len(steps) -while i 0 and steps[i - 1][:1] == '_': -i = i - 1 -while path and path[-1][:len(prefix)] == prefix: -steps.append(path.pop()) -return steps[i:] def manage_addAccessRule(self, method_id=None, REQUEST=None, **ignored): Point a __before_traverse__ entry at the specified method Modified: Zope/trunk/src/Products/SiteAccess/SiteRoot.py === --- Zope/trunk/src/Products/SiteAccess/SiteRoot.py 2010-05-21 15:20:13 UTC (rev 112623) +++ Zope/trunk/src/Products/SiteAccess/SiteRoot.py 2010-05-21 15:20:15 UTC (rev 112624) @@ -14,8 +14,6 @@ from ZPublisher.BeforeTraverse import registerBeforeTraverse from ZPublisher.BeforeTraverse import unregisterBeforeTraverse -from Products.SiteAccess.AccessRule import _swallow - SUPPRESS_SITEROOT = os.environ.has_key('SUPPRESS_SITEROOT') class Traverser(Persistent, Item): @@ -103,9 +101,6 @@ rq = request if SUPPRESS_SITEROOT: return -if '_SUPPRESS_SITEROOT' in _swallow(rq, '_SUPPRESS'): -rq.setVirtualRoot(rq.steps) -return base = (self.base or rq.get('SiteRootBASE') or rq.environ.get('SiteRootBASE')) Modified: Zope/trunk/src/Products/SiteAccess/tests/testAccessRule.py === --- Zope/trunk/src/Products/SiteAccess/tests/testAccessRule.py 2010-05-21 15:20:13 UTC (rev 112623) +++ Zope/trunk/src/Products/SiteAccess/tests/testAccessRule.py 2010-05-21 15:20:15 UTC (rev 112624) @@ -37,7 +37,7 @@ self.failIf(_called) def test___call___w_SUPPRESS_ACCESSRULE_in_URL(self): -# This behavior will change once we land lp:142878. +# This behavior changed in landing lp:142878. _called = [] def _func(*args): _called.append(args) @@ -47,8 +47,8 @@ request.steps = [] container = DummyContainer(testing=_func) rule(container, request) -self.failIf(_called) -self.assertEqual(request._virtual_root, ['_SUPPRESS_ACCESSRULE']) +self.failUnless(_called) +self.assertEqual(request._virtual_root, None) def test___call___wo_SUPPRESS_ACCESSRULE(self): _called = [] Modified: Zope/trunk/src/Products/SiteAccess/tests/testSiteRoot.py === --- Zope/trunk/src/Products/SiteAccess/tests/testSiteRoot.py2010-05-21 15:20:13 UTC (rev 112623) +++ Zope/trunk/src/Products/SiteAccess/tests/testSiteRoot.py2010-05-21 15:20:15 UTC (rev 112624) @@ -166,16 +166,24 @@ self.assertEqual(request, {}) def test___call___w_SUPPRESS_SITEROOT_in_URL(self): -# This behavior will change once we land lp:142878. -siteroot = self._makeOne(base='http://example.com', path='/path') +# This behavior changed in landing lp:142878. +URL='http://localhost:8080/example/folder/' +siteroot = self._makeOne(base='http://example.com', path='/example') request = DummyRequest(TraversalRequestNameStack= -['_SUPPRESS_SITEROOT']) -def _dont_go_here(key, value): -raise NotImplementedError -request.__setitem__ = _dont_go_here +