[Checkins] SVN: Products.CMFDefault/trunk/Products/CMFDefault/browser/search/ Vocabularies refactored to local sources as reuse in other forms is not anticipated.
Charlie Clark
charlie at begeistert.org
Sun Oct 10 11:26:50 EDT 2010
Log message for revision 117410:
Vocabularies refactored to local sources as reuse in other forms is not anticipated.
Changed:
U Products.CMFDefault/trunk/Products/CMFDefault/browser/search/configure.zcml
U Products.CMFDefault/trunk/Products/CMFDefault/browser/search/interfaces.py
U Products.CMFDefault/trunk/Products/CMFDefault/browser/search/search.py
U Products.CMFDefault/trunk/Products/CMFDefault/browser/search/vocab.py
-=-
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/search/configure.zcml
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/search/configure.zcml 2010-10-09 16:31:30 UTC (rev 117409)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/search/configure.zcml 2010-10-10 15:26:49 UTC (rev 117410)
@@ -10,28 +10,4 @@
permission="zope2.View"
/>
- <utility
- component=".vocab.subject_vocab"
- provides="zope.schema.interfaces.IVocabularyFactory"
- name="cmf.subject"
- />
-
- <utility
- component=".vocab.status_vocab"
- provides="zope.schema.interfaces.IVocabularyFactory"
- name="cmf.review state"
- />
-
- <utility
- component=".vocab.date_vocab"
- provides="zope.schema.interfaces.IVocabularyFactory"
- name="cmf.date"
- />
-
- <utility
- component=".vocab.type_vocab"
- provides="zope.schema.interfaces.IVocabularyFactory"
- name="cmf.type"
- />
-
</configure>
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/search/interfaces.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/search/interfaces.py 2010-10-09 16:31:30 UTC (rev 117409)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/search/interfaces.py 2010-10-10 15:26:49 UTC (rev 117410)
@@ -12,18 +12,81 @@
##############################################################################
"""Search Form Schema"""
-from datetime import date
+from datetime import date, timedelta
-from zope.interface import Interface
+from DateTime import DateTime
+
+from zope.interface import Interface, directlyProvides
+from zope.schema.interfaces import IContextSourceBinder
from zope.schema import Choice, Int, Datetime, List, TextLine, ASCIILine
+from zope.schema.vocabulary import SimpleTerm, SimpleVocabulary
+from Products.CMFCore.utils import getToolByName
from Products.CMFDefault.utils import Message as _
+def status_vocab(context):
+ """Provides a list of workflow states"""
+ catalog = getToolByName(context, 'portal_catalog')
+ values = [((u'--any--'), "None")]
+ values += [(v, v) for v in catalog.uniqueValuesFor('review_state')]
+ return SimpleVocabulary.fromItems(values)
+directlyProvides(status_vocab, IContextSourceBinder)
+
+def subject_vocab(context):
+ """Provides a list of subject keywords"""
+ catalog = getToolByName(context, 'portal_catalog')
+ values = [((u'--any--'), "None")]
+ values += [(v, v) for v in catalog.uniqueValuesFor('Subject')]
+ return SimpleVocabulary.fromItems(values)
+directlyProvides(subject_vocab, IContextSourceBinder)
+
+def date_vocab(context):
+ """Provides a list of dates for searching with"""
+ mtool = getToolByName(context, 'portal_membership')
+ dates = [SimpleTerm(date(1970, 1, 1), date(1970, 1, 1), 'Ever')]
+ if not mtool.isAnonymousUser():
+ login_time = mtool.getAuthenticatedMember().last_login_time
+ if not hasattr(login_time, 'parts'):
+ login_time = DateTime(login_time)
+ login = date(*login_time.parts()[:3])
+ dates.append(SimpleTerm(
+ login, login, 'Last login')
+ )
+
+ today = date.today()
+ dates.append(SimpleTerm(today - timedelta(days=1),
+ today - timedelta(days=1),
+ u'Yesterday'
+ )
+ )
+ dates.append(SimpleTerm(today - timedelta(days=7),
+ today - timedelta(days=7),
+ u'Last week'
+ )
+ )
+ dates.append(SimpleTerm(today - timedelta(days=31),
+ today - timedelta(days=31),
+ u'Last month'
+ )
+ )
+ return SimpleVocabulary(dates)
+directlyProvides(date_vocab, IContextSourceBinder)
+
+def type_vocab(context):
+ """Provides a list of portal types"""
+ ttool = getToolByName(context, 'portal_types')
+ types = ttool.listTypeInfo()
+ terms = [SimpleTerm(None, None, '--any--')]
+ terms += [SimpleTerm(t.getId(), t.getId(), t.Title()) for t in types]
+ return SimpleVocabulary(terms)
+directlyProvides(type_vocab, IContextSourceBinder)
+
+
class ISearchSchema(Interface):
review_state = Choice(
title=(_(u"Review Status")),
- vocabulary=u"cmf.review state",
+ source=status_vocab,
description=(_(
u"As a reviewer, you may search for items based on"
u" their review state. If you wish to constrain"
@@ -45,7 +108,7 @@
subject = Choice(
title=(_(u"Subject")),
description=(_(u"")),
- vocabulary=u"cmf.subject",
+ source=subject_vocab,
default="None"
)
@@ -63,7 +126,7 @@
description=(_(
u"You may find only recent items by selecting a time-frame."
)),
- vocabulary=u"cmf.date",
+ source=date_vocab,
default=date.today())
portal_type = Choice(
@@ -72,14 +135,14 @@
u"You may limit your results to particular kinds of"
u" items by selecting them above. To find all kinds of"
u" items, do not select anything.")),
- vocabulary=u"cmf.type",
+ source=type_vocab,
default="None")
creator = ASCIILine(
title=(_(u"Creator")),
description=(_(
u"To find items by a particular user only, enter their"
- u"username above. Note that you must enter their username"
- u"exactly.")),
+ u" username above. Note that you must enter their username"
+ u" exactly.")),
required=False
)
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/search/search.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/search/search.py 2010-10-09 16:31:30 UTC (rev 117409)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/search/search.py 2010-10-10 15:26:49 UTC (rev 117410)
@@ -24,18 +24,17 @@
##############################################################################
"""Search views"""
-from zope.interface import Interface
from zope.formlib import form
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
-from Products.CMFCore.interfaces import ISyndicationInfo
from Products.CMFDefault.formlib.form import EditFormBase
from Products.CMFDefault.utils import Message as _
from Products.CMFDefault.browser.utils import memoize
from interfaces import ISearchSchema
+
class Search(EditFormBase):
"""Portal Search Form"""
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/search/vocab.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/search/vocab.py 2010-10-09 16:31:30 UTC (rev 117409)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/search/vocab.py 2010-10-10 15:26:49 UTC (rev 117410)
@@ -18,58 +18,7 @@
from zope.schema.vocabulary import SimpleTerm, SimpleVocabulary
-from Products.CMFCore.utils import getToolByName
from Products.CMFCore.utils import MessageFactory as _
-def status_vocab(context):
- """Provides a list of workflow states"""
- catalog = getToolByName(context, 'portal_catalog')
- values = [((u'--any--'), "None")]
- values += [(v, v) for v in catalog.uniqueValuesFor('review_state')]
- return SimpleVocabulary.fromItems(values)
-def subject_vocab(context):
- """Provides a list of subject keywords"""
- catalog = getToolByName(context, 'portal_catalog')
- values = [((u'--any--'), "None")]
- values += [(v, v) for v in catalog.uniqueValuesFor('Subject')]
- return SimpleVocabulary.fromItems(values)
-def date_vocab(context):
- """Provides a list of dates for searching with"""
- mtool = getToolByName(context, 'portal_membership')
- dates = [SimpleTerm(date(1970, 1, 1), date(1970, 1, 1), 'Ever')]
- if not mtool.isAnonymousUser():
- login_time = mtool.getAuthenticatedMember().last_login_time
- if not hasattr(login_time, 'parts'):
- login_time = DateTime(login_time)
- login = date(*login_time.parts()[:3])
- dates.append(SimpleTerm(
- login, login, 'Last login')
- )
-
- today = date.today()
- dates.append(SimpleTerm(today - timedelta(days=1),
- today - timedelta(days=1),
- u'Yesterday'
- )
- )
- dates.append(SimpleTerm(today - timedelta(days=7),
- today - timedelta(days=7),
- u'Last week'
- )
- )
- dates.append(SimpleTerm(today - timedelta(days=31),
- today - timedelta(days=31),
- u'Last month'
- )
- )
- return SimpleVocabulary(dates)
-
-def type_vocab(context):
- """Provides a list of portal types"""
- ttool = getToolByName(context, 'portal_types')
- types = ttool.listTypeInfo()
- terms = [SimpleTerm(None, None, '--any--')]
- terms += [SimpleTerm(t.getId(), t.getId(), t.Title()) for t in types]
- return SimpleVocabulary(terms)
More information about the checkins
mailing list