src/pyams_content/shared/common/types.py
changeset 1354 1816388f2887
parent 1240 921ff38f1aae
child 1384 cdf63a1c7dc9
equal deleted inserted replaced
1353:5940373ec65c 1354:1816388f2887
     7 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
     7 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
     8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
     9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
    10 # FOR A PARTICULAR PURPOSE.
    10 # FOR A PARTICULAR PURPOSE.
    11 #
    11 #
    12 
       
    13 __docformat__ = 'restructuredtext'
       
    14 
    12 
    15 from persistent import Persistent
    13 from persistent import Persistent
    16 from pyramid.events import subscriber
    14 from pyramid.events import subscriber
    17 from zope.container.contained import Contained
    15 from zope.container.contained import Contained
    18 from zope.container.ordered import OrderedContainer
    16 from zope.container.ordered import OrderedContainer
    19 from zope.interface import implementer
    17 from zope.interface import implementer
    20 from zope.lifecycleevent.interfaces import IObjectAddedEvent
    18 from zope.lifecycleevent.interfaces import IObjectAddedEvent
    21 from zope.location.interfaces import ISublocations
    19 from zope.location.interfaces import ISublocations
    22 from zope.schema import getFieldsInOrder
    20 from zope.schema import getFieldsInOrder
    23 from zope.schema.fieldproperty import FieldProperty
    21 from zope.schema.fieldproperty import FieldProperty
    24 from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm
    22 from zope.schema.vocabulary import SimpleTerm, SimpleVocabulary
    25 from zope.traversing.interfaces import ITraversable
    23 from zope.traversing.interfaces import ITraversable
    26 
    24 
    27 from pyams_content.component.extfile.interfaces import IExtFileContainerTarget
    25 from pyams_content.component.extfile.interfaces import IExtFileContainerTarget
    28 from pyams_content.component.links.interfaces import ILinkContainerTarget
    26 from pyams_content.component.links.interfaces import ILinkContainerTarget
    29 from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget
    27 from pyams_content.component.paragraph.interfaces import IParagraphContainerTarget
    30 from pyams_content.component.theme.interfaces import IThemesTarget, IThemesInfo
    28 from pyams_content.component.theme.interfaces import IThemesInfo, IThemesTarget
    31 from pyams_content.interfaces import MANAGE_TOOL_PERMISSION
    29 from pyams_content.interfaces import MANAGE_TOOL_PERMISSION
    32 from pyams_content.shared.common import WfSharedContent, IWfSharedContentFactory
    30 from pyams_content.shared.common import IWfSharedContentFactory, WfSharedContent
    33 from pyams_content.shared.common.interfaces import ISharedContentFactory
    31 from pyams_content.shared.common.interfaces import ISharedContentFactory
    34 from pyams_content.shared.common.interfaces.types import IDataType, ISubType, IBaseDataType, ITypedSharedTool, \
    32 from pyams_content.shared.common.interfaces.types import ALL_DATA_TYPES_VOCABULARY, \
    35     ITypedDataManager, DATA_MANAGER_ANNOTATION_KEY, DATA_TYPES_VOCABULARY, DATA_TYPE_FIELDS_VOCABULARY, \
    33     DATA_MANAGER_ANNOTATION_KEY, DATA_SUBTYPES_VOCABULARY, DATA_TYPES_VOCABULARY, \
    36     IWfTypedSharedContent, DATA_SUBTYPES_VOCABULARY, ALL_DATA_TYPES_VOCABULARY
    34     DATA_TYPE_FIELDS_VOCABULARY, IBaseDataType, IDataType, ISubType, ITypedDataManager, \
       
    35     ITypedSharedTool, IWfTypedSharedContent
    37 from pyams_content.shared.common.manager import SharedTool
    36 from pyams_content.shared.common.manager import SharedTool
    38 from pyams_form.interfaces.form import IFormContextPermissionChecker
    37 from pyams_form.interfaces.form import IFormContextPermissionChecker
    39 from pyams_i18n.interfaces import II18n
    38 from pyams_i18n.interfaces import II18n
    40 from pyams_sequence.reference import get_reference_target
    39 from pyams_sequence.reference import get_reference_target
    41 from pyams_utils.adapter import adapter_config, ContextAdapter, get_annotation_adapter
    40 from pyams_utils.adapter import ContextAdapter, adapter_config, get_annotation_adapter
    42 from pyams_utils.factory import factory_config
    41 from pyams_utils.factory import factory_config
    43 from pyams_utils.registry import get_local_registry
    42 from pyams_utils.registry import get_local_registry
    44 from pyams_utils.request import check_request
    43 from pyams_utils.request import check_request
    45 from pyams_utils.traversing import get_parent
    44 from pyams_utils.traversing import get_parent
    46 from pyams_utils.vocabulary import vocabulary_config
    45 from pyams_utils.vocabulary import vocabulary_config
    47 
    46 
    48 
    47 
       
    48 __docformat__ = 'restructuredtext'
       
    49 
       
    50 
    49 class BaseDataType(Persistent, Contained):
    51 class BaseDataType(Persistent, Contained):
    50     """Base data type"""
    52     """Base data type"""
    51 
    53 
    52     label = FieldProperty(IBaseDataType['label'])
    54     label = FieldProperty(IBaseDataType['label'])
    53     source_folder = FieldProperty(IBaseDataType['source_folder'])
    55     source_folder = FieldProperty(IBaseDataType['source_folder'])
    66 
    68 
    67 @implementer(IDataType, IParagraphContainerTarget, IExtFileContainerTarget, ILinkContainerTarget, IThemesTarget)
    69 @implementer(IDataType, IParagraphContainerTarget, IExtFileContainerTarget, ILinkContainerTarget, IThemesTarget)
    68 class DataType(BaseDataType, OrderedContainer):
    70 class DataType(BaseDataType, OrderedContainer):
    69     """Data type persistent class"""
    71     """Data type persistent class"""
    70 
    72 
       
    73     display_as_tag = FieldProperty(IDataType['display_as_tag'])
    71     field_names = FieldProperty(IDataType['field_names'])
    74     field_names = FieldProperty(IDataType['field_names'])
    72 
    75 
    73 
    76 
    74 @factory_config(ITypedDataManager)
    77 @factory_config(ITypedDataManager)
    75 class TypedDataManager(OrderedContainer):
    78 class TypedDataManager(OrderedContainer):
   162         request = check_request()
   165         request = check_request()
   163         registry = get_local_registry()
   166         registry = get_local_registry()
   164         for tool in registry.getAllUtilitiesRegisteredFor(ITypedSharedTool):
   167         for tool in registry.getAllUtilitiesRegisteredFor(ITypedSharedTool):
   165             manager = ITypedDataManager(tool)
   168             manager = ITypedDataManager(tool)
   166             terms.extend([SimpleTerm(datatype.__name__,
   169             terms.extend([SimpleTerm(datatype.__name__,
   167                                      title=II18n(datatype).query_attribute('label', request=request))
   170                                      title=II18n(datatype).query_attribute('label',
       
   171                                                                            request=request))
   168                           for datatype in manager.values()])
   172                           for datatype in manager.values()])
   169         terms.sort(key=lambda x: x.title)
   173         terms.sort(key=lambda x: x.title)
   170         super(AllTypedSharedToolDataTypesVocabulary, self).__init__(terms)
   174         super(AllTypedSharedToolDataTypesVocabulary, self).__init__(terms)
   171 
   175 
   172 
   176