naro

Attempt to register customized DublinCore behavior

Mar 6th, 2012
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.69 KB | None | 0 0
  1. from zope import schema
  2. from plone.directives import form
  3. from z3c.form.interfaces import IEditForm
  4. from z3c.form.interfaces import IAddForm
  5. from plone.app.dexterity.behaviors.metadata import _ as _dx
  6. from plone.autoform.interfaces import IFormFieldProvider
  7. from zope.interface import alsoProvides
  8. from plone.app.dexterity.behaviors import metadata
  9.  
  10.  
  11. class ICustomCategorization(form.Schema):
  12.     # categorization fieldset
  13.     form.fieldset(
  14.         'categorization',
  15.         label=_dx(u'Categorization'),
  16.         fields=['subjects', 'language'],
  17.         )
  18.  
  19.     subjects = schema.Tuple(
  20.         title=_dx(u'label_categories', default=u'Categories'),
  21.         description=_dx(u'help_categories', default=u'Also known as keywords, tags or labels, these help you categorize your content.'),
  22.         value_type=schema.TextLine(),
  23.         required=False,
  24.         missing_value=(),
  25.         )
  26.     # form.widget(subjects = TextLinesFieldWidget)
  27.  
  28.     language = schema.Choice(
  29.         title=_dx(u'label_language', default=u'Language'),
  30.         vocabulary='plone.app.vocabularies.AvailableContentLanguages',
  31.         required=False,
  32.         missing_value='',
  33.         )
  34.  
  35.     form.omitted('subjects', 'language')
  36.     form.no_omit(IEditForm, 'subjects', 'language')
  37.     form.no_omit(IAddForm, 'subjects', 'language')
  38.  
  39. alsoProvides(ICustomCategorization, IFormFieldProvider)
  40.  
  41.  
  42. class CustomCategorization(metadata.MetadataBase):
  43.  
  44.     def _get_subjects(self):
  45.         return self.context.subject
  46.  
  47.     def _set_subjects(self, value):
  48.         self.context.subject = value
  49.     subjects = property(_get_subjects, _set_subjects)
  50.  
  51.     language = metadata.DCFieldProperty(ICustomCategorization['language'], get_name='Language', set_name='setLanguage')
  52.  
  53.  
  54. class ICustomDublinCore(metadata.IOwnership, metadata.IPublication, ICustomCategorization, metadata.IBasic):
  55.     """ Metadata behavior providing all the DC fields
  56.    """
  57.     pass
  58.  
  59.  
  60. class CustomDublinCore(metadata.Basic, CustomCategorization, metadata.Publication, metadata.Ownership):
  61.     pass
  62.  
  63.  
  64. ##### configure.zcml
  65.  
  66.     <plone:behavior
  67.         title="Categorization"
  68.         description="Adds keywords and language setting"
  69.         provides=".metadata.ICustomCategorization"
  70.         factory=".metadata.CustomCategorization"
  71.         for="plone.dexterity.interfaces.IDexterityContent"
  72.         />
  73.  
  74.     <plone:behavior
  75.         title="Dublin Core metadata 2"
  76.         description="Adds Dublin Core metadata fields (equals Basic metadata + Categorization + Effective range + Ownership)"
  77.         provides=".metadata.ICustomDublinCore"
  78.         factory=".metadata.CustomDublinCore"
  79.         for="plone.dexterity.interfaces.IDexterityContent"
  80.         />
Advertisement
Add Comment
Please, Sign In to add comment