当前位置: 首页>>代码示例>>Python>>正文


Python referenceable.IReferenceable类代码示例

本文整理汇总了Python中Products.Archetypes.interfaces.referenceable.IReferenceable的典型用法代码示例。如果您正苦于以下问题:Python IReferenceable类的具体用法?Python IReferenceable怎么用?Python IReferenceable使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了IReferenceable类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: afterRetrieveModifier

    def afterRetrieveModifier(self, obj, repo_clone, preserve=()):
        # check if the modifier is called with a valid working copy
        if obj is None:
            return [], [], {}

        if (
            (
                HAVE_Z3_IFACE
                and IReferenceable.providedBy(obj)
                or not HAVE_Z3_IFACE
                and IReferenceable.isImplementedBy(obj)
            )
            and hasattr(aq_base(obj), REFERENCE_ANNOTATION)
            and hasattr(aq_base(repo_clone), REFERENCE_ANNOTATION)
        ):
            # Remove AT references that no longer exists in the retrived version
            orig_refs_container = getattr(aq_base(obj), REFERENCE_ANNOTATION)
            repo_clone_refs_container = getattr(aq_base(repo_clone), REFERENCE_ANNOTATION)
            ref_objs = orig_refs_container.objectValues()
            repo_clone_ref_ids = repo_clone_refs_container.objectIds()

            reference_catalog = getToolByName(obj, "reference_catalog")
            if reference_catalog:
                for ref in ref_objs:
                    if ref.getId() not in repo_clone_ref_ids:
                        reference_catalog.deleteReference(ref.sourceUID, ref.targetUID, ref.relationship)

        return [], [], {}
开发者ID:pchanxxx,项目名称:msc-buidout,代码行数:28,代码来源:StandardModifiers.py

示例2: afterRetrieveModifier

    def afterRetrieveModifier(self, obj, repo_clone, preserve=()):
        # check if the modifier is called with a valid working copy
        if obj is None:
            return [], [], {}

        if (HAVE_Z3_IFACE and IReferenceable.providedBy(obj)
            or not HAVE_Z3_IFACE and IReferenceable.isImplementedBy(obj)) \
        and hasattr(aq_base(obj), REFERENCE_ANNOTATION):
            #Preserve AT references
            orig_refs_container = getattr(aq_base(obj), REFERENCE_ANNOTATION)
            setattr(repo_clone, REFERENCE_ANNOTATION, orig_refs_container)

        return [], [], {}
开发者ID:nacho22martin,项目名称:tesis,代码行数:13,代码来源:StandardModifiers.py

示例3: test_implements

 def test_implements(self):
     if self.dummy is not None:
         self.failIf(IReferenceable.providedBy(self.dummy))
         self.failIf(IExtensibleMetadata.providedBy(self.dummy))
         self.failIf(self.dummy.isReferenceable)
         self.failUnless(IBaseContent.providedBy(self.dummy))
         self.failUnless(IATTopicCriterion.providedBy(self.dummy))
         self.failUnless(verifyObject(IBaseContent, self.dummy))
         self.failUnless(verifyObject(IATTopicCriterion, self.dummy))
开发者ID:nacho22martin,项目名称:tesis,代码行数:9,代码来源:test_criteria.py

示例4: _get_references_for

    def _get_references_for(self, context):
        try:
            referenceable = IReferenceable(context)
        except TypeError:
            # could not adapt
            # this means we have a dexterity object without
            # plone.app.referenceablebehavior activated.
            objs = []
        else:
            objs = referenceable.getReferences()

        if HAS_ZC_RELATION:
            relation_catalog = getUtility(ICatalog)
            obj_intid = getUtility(IIntIds).getId(context)
            relations = tuple(relation_catalog.findRelations({'from_id': obj_intid}))
            objs += map(attrgetter('to_object'), relations)

        return list(set(objs))
开发者ID:4teamwork,项目名称:ftw.publisher.sender,代码行数:18,代码来源:contextstate.py

示例5: test_implements

 def test_implements(self):
     if self.dummy is not None:
         self.assertFalse(IReferenceable.providedBy(self.dummy))
         self.assertFalse(IExtensibleMetadata.providedBy(self.dummy))
         self.assertFalse(self.dummy.isReferenceable)
         self.assertTrue(IBaseContent.providedBy(self.dummy))
         self.assertTrue(IATTopicCriterion.providedBy(self.dummy))
         self.assertTrue(verifyObject(IBaseContent, self.dummy))
         self.assertTrue(verifyObject(IATTopicCriterion, self.dummy))
开发者ID:plone,项目名称:Products.ATContentTypes,代码行数:9,代码来源:test_criteria.py

示例6: _fixupATReferences

    def _fixupATReferences(self, obj):
        """Reindex AT reference data, and delete reference
        implementations when the target
        doesn't exist anymore.

        Deletion of references is done at the end of the
        recursiveRetrieve operation to avoid deleting refs to targets
        that will be retrieved later in the recursiveRetrive. It
        doesn't call refcatalog.deleteReference as that method uses
        brains to retrieve reference implementations. If the
        target doesn't exist, brains for references pointing to it
        do not exist either.

        This manually calls reference.delHook to let it finalize
        correctly but traps ReferenceException eventually emitted in
        the process and forces the deletion, because leaving the
        reference impl. there will leave refcatalog in an
        incosistent state.
        """

        if (
            HAVE_Z3_IFACE and
            IReferenceable.providedBy(obj) or
            not HAVE_Z3_IFACE and
            IReferenceable.isImplementedBy(obj)
        ) and hasattr(obj, REFERENCES_CONTAINER_NAME):
            # Delete refs if their target doesn't exists anymore
            ref_folder = getattr(obj, REFERENCES_CONTAINER_NAME)
            uid_catalog = getToolByName(self, "uid_catalog")
            ref_catalog = getToolByName(self, "reference_catalog")
            ref_objs = ref_folder.objectValues()
            for ref in ref_objs:
                if not uid_catalog(UID=ref.targetUID):
                    try:
                        # at's _deleteReference passes the catalog
                        # itself, the source and target obj... i'm
                        # going to emulate it as much as i can
                        ref.delHook(ref_catalog, obj, None)
                    except ReferenceException:
                        pass
                    ref_folder.manage_delObjects(ref.getId())
            # then reindex references
            container = aq_parent(aq_inner(obj))
            obj._updateCatalog(container)
开发者ID:plone,项目名称:Products.CMFEditions,代码行数:44,代码来源:CopyModifyMergeRepositoryTool.py

示例7: _listTypeInfo

 def _listTypeInfo(self):
     """ List the portal types which are available.
     """
     pt = getToolByName(self, "portal_types", None)
     at = getToolByName(self, "archetype_tool", None)
     if (pt is None) or (at is None):
         return ()
     else:
         meta_types = [
             ty["meta_type"]
             for ty in at.listRegisteredTypes()
             if IReferenceable.isImplementedByInstancesOf(ty["klass"])
         ]
         tis = [t for t in pt.objectValues() if t.content_meta_type in meta_types]
         tis.sort(lambda a, b: cmp(a.Title(), b.Title()))
         return tis
开发者ID:RadioFreeAsia,项目名称:Products.CompositePack,代码行数:16,代码来源:tool.py

示例8: is_referenceable

def is_referenceable(obj):
    """Find out if this object (AT or DX) is referenceable.

    Return True if a obj can be referenced using the reference_catalog used by
    Archetypes-Relations and Linkintegrity.

    Relations using the relation_catalog (zc.relation.interfaces.ICatalog) are
    not covered by this test!
    """
    is_referenceable = False
    if IReferenceable.providedBy(obj) or \
            safe_hasattr(aq_base(obj), 'isReferenceable'):
        is_referenceable = True
    else:
        try:
            # This most likely the case when plone.app.referenceablebehavior
            # is enabled.
            obj = IReferenceable(obj)
            is_referenceable = True
        except TypeError:
            is_referenceable = False
    return is_referenceable
开发者ID:enfold,项目名称:plone.app.contenttypes,代码行数:22,代码来源:utils.py

示例9: _catalogReferencesFor

 def _catalogReferencesFor(self, obj, path):
     if IReferenceable.providedBy(obj):
         obj._catalogRefs(self)
开发者ID:urska19,项目名称:Plone-test,代码行数:3,代码来源:ReferenceEngine.py

示例10: isReferenceable

 def isReferenceable(self, object):
     return (IReferenceable.providedBy(object) or
             shasattr(object, 'isReferenceable'))
开发者ID:urska19,项目名称:Plone-test,代码行数:3,代码来源:ReferenceEngine.py

示例11: _catalogReferencesFor

 def _catalogReferencesFor(self,obj,path):
     if IReferenceable.isImplementedBy(obj):
         obj._catalogRefs(self)
开发者ID:dtgit,项目名称:dtedu,代码行数:3,代码来源:ReferenceEngine.py

示例12: isReferenceable

 def isReferenceable(self, object):
     return (IReferenceable.isImplementedBy(object) or
             shasattr(object, 'isReferenceable'))
开发者ID:dtgit,项目名称:dtedu,代码行数:3,代码来源:ReferenceEngine.py

示例13: modify_fti

def modify_fti(fti, klass, pkg_name):
    fti[0]['id'] = klass.__name__
    fti[0]['meta_type'] = klass.meta_type
    fti[0]['description'] = klass.__doc__
    fti[0]['factory'] = 'add%s' % klass.__name__
    fti[0]['product'] = pkg_name

    if hasattr(klass, 'content_icon'):
        fti[0]['content_icon'] = klass.content_icon

    if hasattr(klass, 'global_allow'):
        fti[0]['global_allow'] = klass.global_allow

    if hasattr(klass, 'allow_discussion'):
        fti[0]['allow_discussion'] = klass.allow_discussion

    if hasattr(klass, 'allowed_content_types'):
        allowed = klass.allowed_content_types
        fti[0]['allowed_content_types'] = allowed
        fti[0]['filter_content_types'] = allowed and True or False

    if hasattr(klass, 'filter_content_types'):
        fti[0]['filter_content_types'] = klass.filter_content_types

    if hasattr(klass, 'immediate_view'):
        fti[0]['immediate_view'] = klass.immediate_view

    if not IReferenceable.isImplementedByInstancesOf(klass):
        refs = findDict(fti[0]['actions'], 'id', 'references')
        refs['visible'] = False

    if not IExtensibleMetadata.isImplementedByInstancesOf(klass):
        refs = findDict(fti[0]['actions'], 'id', 'metadata')
        refs['visible'] = False

    # Set folder_listing to 'view' if the class implements ITemplateMixin
    if not ITemplateMixin.isImplementedByInstancesOf(klass):
        actions = []
        for action in fti[0]['actions']:
            if action['id'] != 'folderlisting':
                actions.append(action)
            else:
                action['action'] = 'string:${folder_url}/view'
                actions.append(action)
        fti[0]['actions'] = tuple(actions)

    # Remove folderlisting action from non folderish content types
    if not getattr(klass,'isPrincipiaFolderish', None):
        actions = []
        for action in fti[0]['actions']:
            if action['id'] != 'folderlisting':
                actions.append(action)
        fti[0]['actions'] = tuple(actions)
        
    # CMF 1.5 method aliases
    if getattr(klass, 'aliases', None):
        aliases = klass.aliases
        if not isinstance(aliases, dict):
            raise TypeError, "Invalid type for method aliases in class %s" % klass
        for required in ('(Default)', 'view',):
            if required not in aliases:
                raise ValueError, "Alias %s is required but not provied by %s" % (
                                  required, klass)
        fti[0]['aliases'] = aliases 
        
    # Dynamic View FTI support
    if getattr(klass, 'default_view', False):
        default_view = klass.default_view
        if not isinstance(default_view, basestring):
            raise TypeError, "Invalid type for default view in class %s" % klass
        fti[0]['default_view'] = default_view
        fti[0]['view_methods'] = (default_view, )
        
        if getattr(klass, 'suppl_views', False):
            suppl_views = klass.suppl_views
            if not isinstance(suppl_views, (list, tuple)):
                raise TypeError, "Invalid type for suppl views in class %s" % klass
            if not default_view in suppl_views:
                suppl_views = suppl_views + (default_view, )
            fti[0]['view_methods'] = suppl_views
    if getattr(klass, '_at_fti_meta_type', False):
        fti[0]['fti_meta_type'] = klass._at_fti_meta_type
    else:
        if fti[0].get('fti_meta_type', False):
            klass._at_fti_meta_type = fti[0]['fti_meta_type']
        else:
            fti[0]['fti_meta_type'] = FactoryTypeInformation.meta_type
开发者ID:dtgit,项目名称:dtedu,代码行数:87,代码来源:ArchetypeTool.py

示例14: test_doesImplementAT

 def test_doesImplementAT(self):
     self.assertTrue(IBaseContent.providedBy(self._ATCT))
     self.assertTrue(IReferenceable.providedBy(self._ATCT))
     self.assertTrue(verifyObject(IBaseContent, self._ATCT))
     self.assertTrue(verifyObject(IReferenceable, self._ATCT))
开发者ID:Vinsurya,项目名称:Plone,代码行数:5,代码来源:atcttestcase.py

示例15: getData

    def getData(self):
        """ Returns backreferences:
        {
            'uid-obj-a': {
                'the-field': [
                    'uid-of-another-unpublished-object',
                    'my-uid',
                    'uid-obj-b',
                ],
            },
            'uid-obj-b': {
                'ref-field': 'my-uid',
            },
        }
        """

        data = {}

        if hasattr(aq_base(self.context), 'getBackReferenceImpl'):
            referenceable = self.context

        else:
            try:
                referenceable = IReferenceable(self.context)

            except TypeError:
                # could not adapt
                # this means we have a dexterity object without
                # plone.app.referenceablebehavior activated.
                return data

        old_security_manager = getSecurityManager()
        newSecurityManager(self.context.REQUEST, SpecialUsers.system)
        try:
            references = referenceable.getBackReferenceImpl()
        finally:
            setSecurityManager(old_security_manager)

        for ref in references:
            # get source object
            src = ref.getSourceObject()
            if src is None:
                continue

            suid = src.UID()

            if suid not in data.keys():
                data[suid] = {}
            if getattr(ref, 'field', None) is None:
                continue

            if ref.field in data[suid]:
                # we already added this field
                continue
            else:
                # add the field value
                field = src.getField(ref.field)
                if field:
                    data[suid][ref.field] = field.getRaw(src)

        return data
开发者ID:4teamwork,项目名称:ftw.publisher.core,代码行数:61,代码来源:backreferences.py


注:本文中的Products.Archetypes.interfaces.referenceable.IReferenceable类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。