[Checkins] SVN: Products.CMFDefault/trunk/Products/CMFDefault/browser/search/ - fixed permission check

Yvo Schubbe cvs-admin at zope.org
Wed Sep 26 08:16:11 UTC 2012


Log message for revision 127895:
  - fixed permission check

Changed:
  U   Products.CMFDefault/trunk/Products/CMFDefault/browser/search/search.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/browser/search/tests/test_search.py

-=-
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/search/search.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/search/search.py	2012-09-26 07:45:15 UTC (rev 127894)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/search/search.py	2012-09-26 08:16:07 UTC (rev 127895)
@@ -20,12 +20,12 @@
 
 from .interfaces import ISearchSchema
 from Products.CMFCore.interfaces import ICatalogTool
-from Products.CMFCore.interfaces import IMembershipTool
 from Products.CMFDefault.browser.utils import memoize
 from Products.CMFDefault.browser.widgets.batch import BatchFormMixin
 from Products.CMFDefault.browser.widgets.batch import IBatchForm
 from Products.CMFDefault.formlib.form import EditFormBase
 from Products.CMFDefault.formlib.widgets import ChoiceMultiSelectWidget
+from Products.CMFDefault.permissions import ReviewPortalContent
 from Products.CMFDefault.utils import Message as _
 
 EPOCH = datetime.date(1970, 1, 1)
@@ -38,10 +38,6 @@
     template = ViewPageTemplateFile("search.pt")
     results = ViewPageTemplateFile("search_results.pt")
     hidden_fields = form.FormFields(IBatchForm)
-    form_fields = form.FormFields(ISearchSchema)
-    form_fields['review_state'].custom_widget = ChoiceMultiSelectWidget
-    form_fields['Subject'].custom_widget = ChoiceMultiSelectWidget
-    form_fields['portal_type'].custom_widget = ChoiceMultiSelectWidget
 
     search = form.Actions(
         form.Action(
@@ -71,17 +67,21 @@
     actions = search + image
 
     @property
+    def form_fields(self):
+        form_fields = form.FormFields(ISearchSchema)
+        form_fields['review_state'].custom_widget = ChoiceMultiSelectWidget
+        form_fields['Subject'].custom_widget = ChoiceMultiSelectWidget
+        form_fields['portal_type'].custom_widget = ChoiceMultiSelectWidget
+        if not self._checkPermission(ReviewPortalContent):
+            form_fields = form_fields.omit('review_state')
+        return form_fields
+
+    @property
     @memoize
     def catalog(self):
         return getUtility(ICatalogTool)
 
-    @property
     @memoize
-    def is_anonymous(self):
-        mtool = getUtility(IMembershipTool)
-        return mtool.isAnonymousUser()
-
-    @memoize
     def _getNavigationVars(self):
         data = {}
         if hasattr(self, 'hidden_widgets'):
@@ -92,21 +92,13 @@
             data = self.request.form
         return data
 
-    @property
-    @memoize
-    def search_fields(self):
-        if self.is_anonymous:
-            return self.form_fields.omit('review_state')
-        else:
-            return self.form_fields
-
     def setUpWidgets(self, ignore_request=False):
         if "form.b_start" in self.request.form \
         or "b_start" in self.request.form:
             self.template = self.results
         super(Search, self).setUpWidgets(ignore_request)
         self.widgets = form.setUpWidgets(
-                self.search_fields, self.prefix, self.context,
+                self.form_fields, self.prefix, self.context,
                 self.request, ignore_request=ignore_request)
 
     def handle_search(self, action, data):

Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/search/tests/test_search.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/search/tests/test_search.py	2012-09-26 07:45:15 UTC (rev 127894)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/search/tests/test_search.py	2012-09-26 08:16:07 UTC (rev 127895)
@@ -26,7 +26,6 @@
 from Products.CMFCore.interfaces import IPropertiesTool
 from Products.CMFCore.interfaces import ITypesTool
 from Products.CMFCore.tests.base.dummy import DummySite
-from Products.CMFCore.tests.base.dummy import DummyTool
 from Products.CMFDefault.browser.test_utils import DummyRequest
 
 
@@ -209,27 +208,19 @@
 
 class SearchFormTests(unittest.TestCase):
 
-    def setUp(self):
-        self.site = DummySite('site')
-        getSiteManager().registerUtility(DummyTool(), IMembershipTool)
-
-    def tearDown(self):
-        cleanUp()
-
     def _getTargetClass(self):
         from Products.CMFDefault.browser.search.search import Search
-        return Search(self.site, DummyRequest())
+        return Search(DummySite(), DummyRequest())
 
-    def test_is_anonymous(self):
+    def test_is_not_reviewer(self):
         view = self._getTargetClass()
-        self.assertTrue(view.is_anonymous)
-        self.assertEqual(view.search_fields.get('review_state'), None)
+        view._checkPermission = lambda permission: False
+        self.assertEqual(view.form_fields.get('review_state'), None)
 
-    def test_is_not_anonymous(self):
+    def test_is_reviewer(self):
         view = self._getTargetClass()
-        getSiteManager().getUtility(IMembershipTool).anon = 0
-        self.assertFalse(view.is_anonymous)
-        self.assertNotEqual(view.search_fields.get('review_state'), None)
+        view._checkPermission = lambda permission: True
+        self.assertNotEqual(view.form_fields.get('review_state'), None)
 
     def test_strip_unused_paramaters(self):
         view = self._getTargetClass()



More information about the checkins mailing list