[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