[Checkins] SVN: Products.CMFDefault/trunk/Products/CMFDefault/ - fixed vocabularies

Yvo Schubbe cvs-admin at zope.org
Wed Sep 26 07:45:21 UTC 2012


Log message for revision 127894:
  - fixed vocabularies

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

-=-
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/search/interfaces.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/search/interfaces.py	2012-09-26 07:17:10 UTC (rev 127893)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/search/interfaces.py	2012-09-26 07:45:15 UTC (rev 127894)
@@ -32,13 +32,15 @@
 from Products.CMFCore.interfaces import IMembershipTool
 from Products.CMFCore.interfaces import ITypesTool
 from Products.CMFDefault.utils import Message as _
+from Products.CMFDefault.utils import decode
 
+
 def status_vocab(context):
     """Provides a list of workflow states"""
     ctool = getUtility(ICatalogTool)
     values = [SimpleTerm(None, None, _(u"-- any --"))]
-    values += [SimpleTerm(v, v, v)
-               for v in ctool.uniqueValuesFor('review_state')]
+    values += [ SimpleTerm(v, str(v), _(decode(v)))
+                for v in ctool.uniqueValuesFor('review_state') ]
     return SimpleVocabulary(values)
 directlyProvides(status_vocab, IContextSourceBinder)
 
@@ -46,7 +48,7 @@
     """Provides a list of subject keywords"""
     ctool = getUtility(ICatalogTool)
     values = [SimpleTerm(None, None, _(u"-- any --"))]
-    values += [SimpleTerm(v, v, v)
+    values += [SimpleTerm(v, v.encode('hex'), decode(v))
                for v in ctool.uniqueValuesFor('Subject')]
     return SimpleVocabulary(values)
 directlyProvides(subject_vocab, IContextSourceBinder)
@@ -86,10 +88,11 @@
 
 def type_vocab(context):
     """Provides a list of portal types"""
-    ttool =  getUtility(ITypesTool)
+    ttool = getUtility(ITypesTool)
     types = ttool.listTypeInfo()
     terms = [SimpleTerm(None, None, _(u"-- any --"))]
-    terms += [SimpleTerm(t.getId(), t.getId(), t.Title()) for t in types]
+    terms += [ SimpleTerm(t.getId(), t.getId(), decode(t.Title()))
+               for t in types ]
     return SimpleVocabulary(terms)
 directlyProvides(type_vocab, IContextSourceBinder)
 

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:17:10 UTC (rev 127893)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/search/tests/test_search.py	2012-09-26 07:45:15 UTC (rev 127894)
@@ -14,15 +14,199 @@
 
 import unittest
 
+from datetime import date
+from datetime import timedelta
+
 from zope.component import getSiteManager
+from zope.i18nmessageid import Message
 from zope.testing.cleanup import cleanUp
 
+from Products.CMFCore.interfaces import ICatalogTool
 from Products.CMFCore.interfaces import IMembershipTool
+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
 
 
+class DummyPropertiesTool(object):
+
+    def getProperty(self, id, d=None):
+        return 'iso-8859-1'
+
+
+class StatusVocabularyTests(unittest.TestCase):
+
+    def setUp(self):
+        class DummyCatalogTool(object):
+            def uniqueValuesFor(self, name):
+                return ('foo', 'bar')
+
+        sm = getSiteManager()
+        sm.registerUtility(DummyCatalogTool(), ICatalogTool)
+        sm.registerUtility(DummyPropertiesTool(), IPropertiesTool)
+
+    def tearDown(self):
+        cleanUp()
+
+    def _makeOne(self):
+        from Products.CMFDefault.browser.search.interfaces import status_vocab
+
+        return status_vocab(None)
+
+    def test_terms(self):
+        vocab = self._makeOne()
+        self.assertEqual(len(vocab), 3)
+        terms = [ t for t in vocab ]
+
+        self.assertEqual(terms[0].value, None)
+        self.assertEqual(terms[0].token, 'None')
+        self.assertTrue(isinstance(terms[0].token, str))
+        self.assertEqual(terms[0].title, u'-- any --')
+        self.assertTrue(isinstance(terms[0].title, Message))
+
+        self.assertEqual(terms[1].value, 'foo')
+        self.assertEqual(terms[1].token, 'foo')
+        self.assertTrue(isinstance(terms[1].token, str))
+        self.assertEqual(terms[1].title, u'foo')
+        self.assertTrue(isinstance(terms[1].title, Message))
+
+
+class SubjectVocabularyTests(unittest.TestCase):
+
+    def setUp(self):
+        class DummyCatalogTool(object):
+            def uniqueValuesFor(self, name):
+                return ('foo', 'bar')
+
+        sm = getSiteManager()
+        sm.registerUtility(DummyCatalogTool(), ICatalogTool)
+        sm.registerUtility(DummyPropertiesTool(), IPropertiesTool)
+
+    def tearDown(self):
+        cleanUp()
+
+    def _makeOne(self):
+        from Products.CMFDefault.browser.search.interfaces import subject_vocab
+
+        return subject_vocab(None)
+
+    def test_terms(self):
+        vocab = self._makeOne()
+        self.assertEqual(len(vocab), 3)
+        terms = [ t for t in vocab ]
+
+        self.assertEqual(terms[0].value, None)
+        self.assertEqual(terms[0].token, 'None')
+        self.assertTrue(isinstance(terms[0].token, str))
+        self.assertEqual(terms[0].title, u'-- any --')
+        self.assertTrue(isinstance(terms[0].title, Message))
+
+        self.assertEqual(terms[1].value, 'foo')
+        self.assertEqual(terms[1].token, '666f6f')
+        self.assertTrue(isinstance(terms[1].token, str))
+        self.assertEqual(terms[1].title, u'foo')
+        self.assertTrue(isinstance(terms[1].title, unicode))
+
+
+class DateVocabularyTests(unittest.TestCase):
+
+    def setUp(self):
+        class DummyMembershipTool(object):
+            def isAnonymousUser(self):
+                return True
+
+        sm = getSiteManager()
+        sm.registerUtility(DummyMembershipTool(), IMembershipTool)
+
+    def tearDown(self):
+        cleanUp()
+
+    def _makeOne(self):
+        from Products.CMFDefault.browser.search.interfaces import date_vocab
+
+        return date_vocab(None)
+
+    def test_terms(self):
+        vocab = self._makeOne()
+        self.assertEqual(len(vocab), 4)
+        terms = [ t for t in vocab ]
+
+        self.assertEqual(terms[0].value, date(1970, 1, 1))
+        self.assertEqual(terms[0].token, '1970-01-01')
+        self.assertTrue(isinstance(terms[0].token, str))
+        self.assertEqual(terms[0].title, u'Ever')
+        self.assertTrue(isinstance(terms[0].title, Message))
+
+        date_value = date.today() - timedelta(days=1)
+        self.assertEqual(terms[1].value, date_value)
+        self.assertEqual(terms[1].token, str(date_value))
+        self.assertTrue(isinstance(terms[1].token, str))
+        self.assertEqual(terms[1].title, u'Yesterday')
+        self.assertTrue(isinstance(terms[1].title, Message))
+
+        date_value = date.today() - timedelta(days=7)
+        self.assertEqual(terms[2].value, date_value)
+        self.assertEqual(terms[2].token, str(date_value))
+        self.assertTrue(isinstance(terms[2].token, str))
+        self.assertEqual(terms[2].title, u'Last week')
+        self.assertTrue(isinstance(terms[2].title, Message))
+
+        date_value = date.today() - timedelta(days=31)
+        self.assertEqual(terms[3].value, date_value)
+        self.assertEqual(terms[3].token, str(date_value))
+        self.assertTrue(isinstance(terms[3].token, str))
+        self.assertEqual(terms[3].title, u'Last month')
+        self.assertTrue(isinstance(terms[3].title, Message))
+
+
+class TypeVocabularyTests(unittest.TestCase):
+
+    def setUp(self):
+        class DummyType(object):
+            def __init__(self, id, title):
+                self._id = id
+                self._title = title
+            def getId(self):
+                return self._id
+            def Title(self):
+                return self._title
+
+        class DummyTypesTool(object):
+            def listTypeInfo(self):
+                return (DummyType('foo', 'Foo'), DummyType('bar', 'Bar'))
+
+        sm = getSiteManager()
+        sm.registerUtility(DummyTypesTool(), ITypesTool)
+        sm.registerUtility(DummyPropertiesTool(), IPropertiesTool)
+
+    def tearDown(self):
+        cleanUp()
+
+    def _makeOne(self):
+        from Products.CMFDefault.browser.search.interfaces import type_vocab
+
+        return type_vocab(None)
+
+    def test_terms(self):
+        vocab = self._makeOne()
+        self.assertEqual(len(vocab), 3)
+        terms = [ t for t in vocab ]
+
+        self.assertEqual(terms[0].value, None)
+        self.assertEqual(terms[0].token, 'None')
+        self.assertTrue(isinstance(terms[0].token, str))
+        self.assertEqual(terms[0].title, u'-- any --')
+        self.assertTrue(isinstance(terms[0].title, Message))
+
+        self.assertEqual(terms[1].value, 'foo')
+        self.assertEqual(terms[1].token, 'foo')
+        self.assertTrue(isinstance(terms[1].token, str))
+        self.assertEqual(terms[1].title, u'Foo')
+        self.assertTrue(isinstance(terms[1].title, unicode))
+
+
 class SearchFormTests(unittest.TestCase):
 
     def setUp(self):
@@ -70,5 +254,9 @@
 
 def test_suite():
     suite = unittest.TestSuite()
+    suite.addTest(unittest.makeSuite(StatusVocabularyTests))
+    suite.addTest(unittest.makeSuite(SubjectVocabularyTests))
+    suite.addTest(unittest.makeSuite(DateVocabularyTests))
+    suite.addTest(unittest.makeSuite(TypeVocabularyTests))
     suite.addTest(unittest.makeSuite(SearchFormTests))
     return suite

Modified: Products.CMFDefault/trunk/Products/CMFDefault/utils.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/utils.py	2012-09-26 07:17:10 UTC (rev 127893)
+++ Products.CMFDefault/trunk/Products/CMFDefault/utils.py	2012-09-26 07:45:15 UTC (rev 127894)
@@ -465,7 +465,7 @@
         return value
 
 security.declarePublic('decode')
-def decode(value, context):
+def decode(value, context=None):
     """ Decode value using default_charset.
     """
     ptool = getUtility(IPropertiesTool)



More information about the checkins mailing list