def setUp(self):
        self.portal = self.layer['portal']
        self.request = self.layer['request']

        # TYPE 1
        type1_fti = DexterityFTI('type1')
        type1_fti.klass = 'plone.dexterity.content.Container'
        type1_fti.filter_content_types = True
        type1_fti.allowed_content_types = []
        type1_fti.behaviors = (
            'plone.app.dexterity.behaviors.metadata.IBasic',
        )
        self.portal.portal_types._setObject('type1', type1_fti)
        self.type1_fti = type1_fti

        # TYPE 2
        type2_fti = DexterityFTI('type1')
        type2_fti.klass = 'plone.dexterity.content.Item'
        type2_fti.filter_content_types = True
        type2_fti.allowed_content_types = []
        type2_fti.behaviors = (
            'plone.app.dexterity.behaviors.metadata.IBasic',
        )
        self.portal.portal_types._setObject('type2', type2_fti)
        self.type2_fti = type2_fti

        login(self.portal, TEST_USER_NAME)
        setRoles(self.portal, TEST_USER_ID, ['Manager'])

        self.portal.invokeFactory('type1', id='it1', title='Item 1')
        self.portal.invokeFactory('type2', id='it2', title='Item 2')
    def setUp(self):
        self.portal = self.layer['portal']
        self.request = self.layer['request']

        # TYPE 1
        type1_fti = DexterityFTI('type1')
        type1_fti.klass = 'plone.dexterity.content.Container'
        type1_fti.filter_content_types = True
        type1_fti.allowed_content_types = []
        type1_fti.behaviors = ('plone.app.dexterity.behaviors.metadata.IBasic')
        self.portal.portal_types._setObject('type1', type1_fti)
        self.type1_fti = type1_fti

        # TYPE 2
        type2_fti = DexterityFTI('type1')
        type2_fti.klass = 'plone.dexterity.content.Item'
        type2_fti.filter_content_types = True
        type2_fti.allowed_content_types = []
        type2_fti.behaviors = ('plone.app.dexterity.behaviors.metadata.IBasic')
        self.portal.portal_types._setObject('type2', type2_fti)
        self.type2_fti = type2_fti

        login(self.portal, TEST_USER_NAME)
        setRoles(self.portal, TEST_USER_ID, ['Manager'])

        self.portal.invokeFactory('type1', id='it1', title='Item 1')
        self.portal.invokeFactory('type2', id='it2', title='Item 2')
Beispiel #3
0
    def test_schema_exception(self):

        # Mock FTI
        fti_mock = DexterityFTI(u"testtype")
        fti_mock.lookupSchema = Mock(side_effect=AttributeError)
        fti_mock.behaviors = ()

        self.mock_utility(fti_mock, IDexterityFTI, u'testtype')

        # Content item
        item = Item('test')
        item.portal_type = u"testtype"
        item.test = u"foo"
        item.foo = u"bar"

        SCHEMA_CACHE.clear()

        self.assertTrue(
            item.__allow_access_to_unprotected_subobjects__('test', u"foo")
        )
        self.assertTrue(
            item.__allow_access_to_unprotected_subobjects__('foo', u"bar")
        )
        self.assertTrue(
            item.__allow_access_to_unprotected_subobjects__('random', u"stuff")
        )
Beispiel #4
0
    def test_no_tagged_value(self):

        # Mock schema model
        class ITestSchema(Interface):
            test = zope.schema.TextLine(title=u"Test")

        # Mock FTI
        fti_mock = DexterityFTI(u"testtype")
        fti_mock.lookupSchema = Mock(return_value=ITestSchema)
        fti_mock.behaviors = ()
        self.mock_utility(fti_mock, IDexterityFTI, u'testtype')

        # Content item
        item = Item('test')
        item.portal_type = u"testtype"
        item.test = u"foo"
        item.foo = u"bar"

        SCHEMA_CACHE.clear()

        # Everything allowed
        self.assertTrue(
            item.__allow_access_to_unprotected_subobjects__('test', u"foo")
        )
        self.assertTrue(
            item.__allow_access_to_unprotected_subobjects__('foo', u"bar")
        )

        # Unknown attributes are allowed
        self.assertTrue(
            item.__allow_access_to_unprotected_subobjects__('random', u"stuff")
        )
Beispiel #5
0
    def setUpContentTypes(self, portal):
        from plone.dexterity.fti import DexterityFTI
        from plone.dexterity.fti import register
        from plone.app.content.interfaces import INameFromTitle
        from plone.app.dexterity.behaviors.metadata import IOwnership
        from collective.multilingual.interfaces import IMultilingual

        bs = (
            dottedName(IMultilingual),
            dottedName(IOwnership),
            dottedName(INameFromTitle),
        )

        content_types = [
            ("Item", "Item", (), bs),
            ("Container", "Container", ("Item", "Container"), bs),
        ]

        # Set up Dexterity-based content types.
        for portal_type, klass, allowed_content_types, bs in content_types:
            fti = DexterityFTI(portal_type)
            fti.allowed_content_types = allowed_content_types
            fti.behaviors = bs
            fti.klass = "plone.dexterity.content." + klass
            register(fti)

            # There's got to be a better way :-)
            portal.portal_types._setOb(portal_type, fti)
 def setUp(self):
     app = self.layer['app']
     self.portal = self.layer['portal']
     self.request = self.layer['request']
     self.portal_url = self.portal.absolute_url()
     setRoles(self.portal, TEST_USER_ID, ['Contributor'])
     fti = DexterityFTI('leadimagefolder')
     self.portal.portal_types._setObject('leadimagefolder', fti)
     fti.klass = 'plone.dexterity.content.Container'
     fti.behaviors = (
         'plone.app.contenttypes.behaviors.leadimage.ILeadImageBehavior', )
     self.fti = fti
     alsoProvides(self.portal.REQUEST, IPloneAppContenttypesLayer)
     alsoProvides(self.request, IPloneAppContenttypesLayer)
     from plone.app.contenttypes.behaviors.leadimage import ILeadImage
     alsoProvides(self.request, ILeadImage)
     self.portal.invokeFactory('leadimagefolder',
                               id='leadimagefolder',
                               title=u'Folder with a lead image')
     import transaction
     transaction.commit()
     # Set up browser
     self.browser = Browser(app)
     self.browser.handleErrors = False
     self.browser.addHeader(
         'Authorization', 'Basic {0}:{1}'.format(
             SITE_OWNER_NAME,
             SITE_OWNER_PASSWORD,
         ))
Beispiel #7
0
    def setUp(self):
        self.portal = self.layer["portal"]
        self.request = self.layer["request"]
        self.catalog = api.portal.get_tool("portal_catalog")
        setRoles(self.portal, TEST_USER_ID, ["Manager"])
        fti = DexterityFTI("venueitem")
        self.portal.portal_types._setObject("venueitem", fti)
        fti.klass = "plone.dexterity.content.Item"
        fti.behaviors = (
            "plone.app.content.interfaces.INameFromTitle",
            "plone.app.dexterity.behaviors.metadata.IBasic",
            "plone.app.dexterity.behaviors.metadata.ICategorization",
            "collective.geolocationbehavior.geolocation.IGeolocatable",
            "design.plone.contenttypes.behavior.additional_help_infos",
            "design.plone.contenttypes.behavior.argomenti",
            "plone.leadimage",
            "volto.preview_image",
            "collective.address.behaviors.IAddress",
            "design.plone.contenttypes.behavior.luogo",
            "collective.dexteritytextindexer",
        )
        self.fti = fti

        self.portal.invokeFactory("venueitem", id="venue", title="venue")
        self.venue = self.portal.venue
        commit()
 def afterSetUp(self):
     """ create some sample content to test with """
     if not HAS_DEXTERITY:
         return
     self.setRoles(('Manager', ))
     fti = DexterityFTI('Dexterity Item with relatedItems behavior')
     self.portal.portal_types._setObject(
         'Dexterity Item with relatedItems behavior', fti)
     fti.klass = 'plone.dexterity.content.Item'
     test_module = 'plone.app.layout.viewlets.tests.test_content'
     fti.schema = test_module + '.IMyDexterityItem'
     fti.behaviors = ('plone.app.relationfield.behavior.IRelatedItems', )
     fti = DexterityFTI('Dexterity Item without relatedItems behavior')
     self.portal.portal_types._setObject(
         'Dexterity Item without relatedItems behavior', fti)
     fti.klass = 'plone.dexterity.content.Item'
     fti.schema = test_module + '.IMyDexterityItem'
     self.folder.invokeFactory('Document', 'doc1', title='Document 1')
     self.folder.invokeFactory('Document', 'doc2', title='Document 2')
     self.folder.invokeFactory('Dexterity Item with relatedItems behavior',
                               'dex1')
     self.folder.invokeFactory('Dexterity Item with relatedItems behavior',
                               'dex2')
     self.folder.invokeFactory(
         'Dexterity Item without relatedItems behavior', 'dex3')
     self.portal.portal_quickinstaller.installProduct('plone.app.intid')
     intids = getUtility(IIntIds)
     self.folder.dex1.relatedItems = [
         RelationValue(intids.getId(self.folder.doc1)),
         RelationValue(intids.getId(self.folder.doc2)),
     ]
    def setUp(self):
        app = self.layer['app']
        self.portal = self.layer['portal']
        self.wf = api.portal.get_tool('portal_workflow')
        self.portal.acl_users._doAddUser('user_std', 'secret', ['Member'], [])
        self.portal_url = self.portal.absolute_url()
        setRoles(self.portal, TEST_USER_ID, ['Manager'])
        fti = DexterityFTI(self.portal_type)
        self.portal.portal_types._setObject(self.portal_type, fti)
        fti.klass = 'plone.dexterity.content.Item'
        fti.behaviors = self.behaviors
        api.content.create(
            container=self.portal,
            type=self.portal_type,
            id='doc1')
        setRoles(self.portal, TEST_USER_ID, ['Member'])
        import transaction

        transaction.commit()
        # Set up browser
        self.browser = Browser(app)
        self.browser.handleErrors = False
        self.browser.addHeader(
            'Authorization',
            'Basic {0}:{1}'.format(SITE_OWNER_NAME, SITE_OWNER_PASSWORD,)
        )
Beispiel #10
0
 def afterSetUp(self):
     """ create some sample content to test with """
     if not HAS_DEXTERITY:
         return
     self.setRoles(('Manager',))
     fti = DexterityFTI('Dexterity Item with relatedItems behavior')
     self.portal.portal_types._setObject(
         'Dexterity Item with relatedItems behavior', fti)
     fti.klass = 'plone.dexterity.content.Item'
     test_module = 'plone.app.layout.viewlets.tests.test_content'
     fti.schema = test_module + '.IMyDexterityItem'
     fti.behaviors = ('plone.app.relationfield.behavior.IRelatedItems',)
     fti = DexterityFTI('Dexterity Item without relatedItems behavior')
     self.portal.portal_types._setObject(
         'Dexterity Item without relatedItems behavior', fti)
     fti.klass = 'plone.dexterity.content.Item'
     fti.schema = test_module + '.IMyDexterityItem'
     self.folder.invokeFactory('Document', 'doc1', title='Document 1')
     self.folder.invokeFactory('Document', 'doc2', title='Document 2')
     self.folder.invokeFactory(
         'Dexterity Item with relatedItems behavior', 'dex1')
     self.folder.invokeFactory(
         'Dexterity Item with relatedItems behavior', 'dex2')
     self.folder.invokeFactory(
         'Dexterity Item without relatedItems behavior', 'dex3')
     self.portal.portal_quickinstaller.installProduct('plone.app.intid')
     intids = getUtility(IIntIds)
     self.folder.dex1.relatedItems = [
         RelationValue(intids.getId(self.folder.doc1)),
         RelationValue(intids.getId(self.folder.doc2)),
     ]
Beispiel #11
0
    def test_supports(self):

        # Context mock
        context_dummy = self.create_dummy(portal_type=u"testtype")

        # Behavior mock
        behavior_dummy_1 = self.create_dummy(interface=IOne)
        self.mock_utility(
            behavior_dummy_1,
            IBehavior,
            name=IOne.__identifier__
        )
        behavior_dummy_4 = self.create_dummy(interface=IFour)
        self.mock_utility(
            behavior_dummy_4,
            IBehavior,
            name=IFour.__identifier__
        )

        # FTI mock
        fti = DexterityFTI(u"testtype")
        fti.behaviors = [IOne.__identifier__, IFour.__identifier__]
        self.mock_utility(fti, IDexterityFTI, name=u"testtype")

        assignable = DexterityBehaviorAssignable(context_dummy)

        self.assertEqual(True, assignable.supports(IOne))
        self.assertEqual(False, assignable.supports(ITwo))
        self.assertEqual(True, assignable.supports(IThree))
        self.assertEqual(True, assignable.supports(IFour))
 def setUp(self):
     self.portal = self.layer['portal']
     self.request = self.layer['request']
     self.portal_url = self.portal.absolute_url()
     setRoles(self.portal, TEST_USER_ID, ['Manager'])
     fti = DexterityFTI('collectioncontainer')
     self.portal.portal_types._setObject('collectioncontainer', fti)
     fti.klass = 'plone.dexterity.content.Container'
     fti.behaviors = (
         'plone.app.contenttypes.behaviors.collection.ICollection',
     )
     self.fti = fti
     alsoProvides(self.portal.REQUEST, IPloneAppContenttypesLayer)
     alsoProvides(self.request, IPloneAppContenttypesLayer)
     from plone.app.contenttypes.behaviors.collection import ICollection
     alsoProvides(self.request, ICollection)
     self.portal.invokeFactory(
         'collectioncontainer',
         id='collectioncontainer',
         title=u'Container with a collection',
         customViewFields=['Title', 'portal_type'],
         query=query,
     )
     self.portal.invokeFactory(
         'Document',
         id='doc',
         title=u'Collection Test Page',
     )
    def test_repeated_behavior_registration_lookup(self):

        fti = DexterityFTI(u"testtype")
        self.mock_utility(fti, IDexterityFTI, name=u"testtype")

        # Mock a test behavior
        class ITestBehavior(Interface):
            pass
        fti.behaviors = [ITestBehavior.__identifier__]
        from plone.behavior.registration import BehaviorRegistration
        registration = BehaviorRegistration(
            title=u"Test Behavior",
            description=u"Provides test behavior",
            interface=Interface,
            marker=ITestBehavior,
            factory=None
        )
        from plone.behavior.interfaces import IBehavior
        self.mock_utility(
            registration,
            IBehavior,
            ITestBehavior.__identifier__
        )

        r1 = SCHEMA_CACHE.behavior_registrations(u'testtype')
        r2 = SCHEMA_CACHE.behavior_registrations(u'testtype')

        self.assertTrue(r1[0] is r2[0] is registration)
def add_item_type(portal):
    fti = DexterityFTI('item')
    portal.portal_types._setObject('item', fti)
    fti.klass = 'plone.dexterity.content.Item'
    fti.filter_content_types = False
    fti.behaviors = ('plone.app.dexterity.behaviors.metadata.IBasic')
    return fti
    def test_repeated_subtypes_lookup(self):

        fti = DexterityFTI(u"testtype")
        self.mock_utility(fti, IDexterityFTI, name=u"testtype")

        # Mock a test behavior
        class ITestSchema(Interface):
            pass

        class ITestMarker(Interface):
            pass
        fti.behaviors = [ITestSchema.__identifier__]
        from plone.behavior.registration import BehaviorRegistration
        registration = BehaviorRegistration(
            title=u"Test Behavior",
            description=u"Provides test behavior",
            interface=ITestSchema,
            marker=ITestMarker,
            factory=None
        )
        from plone.behavior.interfaces import IBehavior
        self.mock_utility(
            registration,
            IBehavior,
            ITestSchema.__identifier__
        )

        s1 = SCHEMA_CACHE.subtypes(u"testtype")
        s2 = SCHEMA_CACHE.subtypes(u"testtype")

        self.assertTrue(s1[0] is s2[0] is ITestMarker)
Beispiel #16
0
    def test_getSize(self):
        class SizedValue(str):
            def getSize(self):
                return len(self)

        class ITest(Interface):
            field1 = zope.schema.TextLine()

        class ITestBehavior(Interface):
            field2 = zope.schema.TextLine()

        alsoProvides(ITestBehavior, IFormFieldProvider)

        self.mock_adapter(DexterityBehaviorAssignable, IBehaviorAssignable,
                          (IDexterityContent, ))

        fti_mock = DexterityFTI(u'testtype')
        fti_mock.lookupSchema = Mock(return_value=ITest)
        fti_mock.behaviors = ['test_behavior']
        self.mock_utility(fti_mock, IDexterityFTI, name=u"testtype")

        behavior_reg = BehaviorRegistration(u"Test Behavior", "",
                                            ITestBehavior, ITestBehavior, None)
        self.mock_utility(behavior_reg, IBehavior, name="test_behavior")

        item = Item('item')
        item.portal_type = 'testtype'
        item.field1 = SizedValue('1')
        item.field2 = SizedValue('22')

        self.assertEqual(3, item.getSize())
Beispiel #17
0
    def setUp(self):
        self.app = self.layer["app"]
        self.request = self.layer["request"]
        self.portal = self.layer["portal"]
        self.portal_url = self.portal.absolute_url()
        setRoles(self.portal, TEST_USER_ID, ["Manager"])

        # set up blocksdocument content type with IBlock behavior
        fti = DexterityFTI("blocksdocument")
        self.portal.portal_types._setObject("blocksdocument", fti)
        fti.klass = "plone.dexterity.content.Container"
        fti.behaviors = ("volto.blocks", )
        self.portal.invokeFactory("blocksdocument", id="doc")
        self.doc = self.portal["doc"]
        alsoProvides(self.doc, IBlocks)

        # Set up a mock mailhost
        self.portal._original_MailHost = self.portal.MailHost
        self.portal.MailHost = mailhost = MockMailHost('MailHost')
        sm = getSiteManager(context=self.portal)
        sm.unregisterUtility(provided=IMailHost)
        sm.registerUtility(mailhost, provided=IMailHost)

        # We need to fake a valid mail setup
        registry = getUtility(IRegistry)
        mail_settings = registry.forInterface(IMailSchema, prefix='plone')
        mail_settings.email_from_address = '*****@*****.**'
        self.mailhost = self.portal.MailHost

        transaction.commit()
    def test_no_tagged_value(self):

        # Mock schema model
        class ITestSchema(Interface):
            test = zope.schema.TextLine(title=u"Test")

        # Mock FTI
        fti_mock = DexterityFTI(u"testtype")
        fti_mock.lookupSchema = Mock(return_value=ITestSchema)
        fti_mock.behaviors = ()
        self.mock_utility(fti_mock, IDexterityFTI, u'testtype')

        # Content item
        item = Item('test')
        item.portal_type = u"testtype"
        item.test = u"foo"
        item.foo = u"bar"

        SCHEMA_CACHE.clear()

        # Everything allowed
        self.assertTrue(
            item.__allow_access_to_unprotected_subobjects__('test', u"foo"))
        self.assertTrue(
            item.__allow_access_to_unprotected_subobjects__('foo', u"bar"))

        # Unknown attributes are allowed
        self.assertTrue(
            item.__allow_access_to_unprotected_subobjects__(
                'random', u"stuff"))
Beispiel #19
0
 def setUp(self):
     super(TestDexterityRelatedItemsViewlet, self).setUp()
     """ create some sample content to test with """
     from Products.CMFPlone.utils import get_installer
     setRoles(self.portal, TEST_USER_ID, ['Manager'])
     fti = DexterityFTI('Dexterity Item with relatedItems behavior')
     self.portal.portal_types._setObject(
         'Dexterity Item with relatedItems behavior', fti)
     fti.klass = 'plone.dexterity.content.Item'
     test_module = 'plone.app.layout.viewlets.tests.test_content'
     fti.schema = test_module + '.IMyDexterityItem'
     fti.behaviors = ('plone.app.relationfield.behavior.IRelatedItems',)
     fti = DexterityFTI('Dexterity Item without relatedItems behavior')
     self.portal.portal_types._setObject(
         'Dexterity Item without relatedItems behavior', fti)
     fti.klass = 'plone.dexterity.content.Item'
     fti.schema = test_module + '.IMyDexterityItem'
     self.folder.invokeFactory('Document', 'doc1', title='Document 1')
     self.folder.invokeFactory('Document', 'doc2', title='Document 2')
     self.folder.invokeFactory(
         'Dexterity Item with relatedItems behavior', 'dex1')
     self.folder.invokeFactory(
         'Dexterity Item with relatedItems behavior', 'dex2')
     self.folder.invokeFactory(
         'Dexterity Item without relatedItems behavior', 'dex3')
     qi = get_installer(self.portal)
     qi.install_product('plone.app.intid')
     intids = getUtility(IIntIds)
     self.folder.dex1.relatedItems = [
         RelationValue(intids.getId(self.folder.doc1)),
         RelationValue(intids.getId(self.folder.doc2)),
     ]
    def test_supports(self):

        # Context mock
        context_dummy = self.create_dummy(portal_type=u"testtype")

        # Behavior mock
        behavior_dummy_1 = self.create_dummy(interface=IOne)
        self.mock_utility(behavior_dummy_1,
                          IBehavior,
                          name=IOne.__identifier__)
        behavior_dummy_4 = self.create_dummy(interface=IFour)
        self.mock_utility(behavior_dummy_4,
                          IBehavior,
                          name=IFour.__identifier__)

        # FTI mock
        fti = DexterityFTI(u"testtype")
        fti.behaviors = [IOne.__identifier__, IFour.__identifier__]
        self.mock_utility(fti, IDexterityFTI, name=u"testtype")

        self.replay()

        assignable = DexterityBehaviorAssignable(context_dummy)

        self.assertEqual(True, assignable.supports(IOne))
        self.assertEqual(False, assignable.supports(ITwo))
        self.assertEqual(True, assignable.supports(IThree))
        self.assertEqual(True, assignable.supports(IFour))
Beispiel #21
0
 def setUp(self):
     super(TestDexterityRelatedItemsViewlet, self).setUp()
     """ create some sample content to test with """
     from Products.CMFPlone.utils import get_installer
     setRoles(self.portal, TEST_USER_ID, ['Manager'])
     fti = DexterityFTI('Dexterity Item with relatedItems behavior')
     self.portal.portal_types._setObject(
         'Dexterity Item with relatedItems behavior', fti)
     fti.klass = 'plone.dexterity.content.Item'
     test_module = 'plone.app.layout.viewlets.tests.test_content'
     fti.schema = test_module + '.IMyDexterityItem'
     fti.behaviors = ('plone.app.relationfield.behavior.IRelatedItems', )
     fti = DexterityFTI('Dexterity Item without relatedItems behavior')
     self.portal.portal_types._setObject(
         'Dexterity Item without relatedItems behavior', fti)
     fti.klass = 'plone.dexterity.content.Item'
     fti.schema = test_module + '.IMyDexterityItem'
     self.folder.invokeFactory('Document', 'doc1', title='Document 1')
     self.folder.invokeFactory('Document', 'doc2', title='Document 2')
     self.folder.invokeFactory('Dexterity Item with relatedItems behavior',
                               'dex1')
     self.folder.invokeFactory('Dexterity Item with relatedItems behavior',
                               'dex2')
     self.folder.invokeFactory(
         'Dexterity Item without relatedItems behavior', 'dex3')
     qi = get_installer(self.portal)
     qi.install_product('plone.app.intid')
     intids = getUtility(IIntIds)
     self.folder.dex1.relatedItems = [
         RelationValue(intids.getId(self.folder.doc1)),
         RelationValue(intids.getId(self.folder.doc2)),
     ]
 def setUp(self):
     app = self.layer['app']
     self.portal = self.layer['portal']
     self.request = self.layer['request']
     self.portal_url = self.portal.absolute_url()
     setRoles(self.portal, TEST_USER_ID, ['Contributor'])
     fti = DexterityFTI('leadimagefolder')
     self.portal.portal_types._setObject('leadimagefolder', fti)
     fti.klass = 'plone.dexterity.content.Container'
     fti.behaviors = (
         'plone.app.contenttypes.behaviors.leadimage.ILeadImage',
     )
     self.fti = fti
     alsoProvides(self.portal.REQUEST, IPloneAppContenttypesLayer)
     alsoProvides(self.request, IPloneAppContenttypesLayer)
     from plone.app.contenttypes.behaviors.leadimage import ILeadImage
     alsoProvides(self.request, ILeadImage)
     self.portal.invokeFactory(
         'leadimagefolder',
         id='leadimagefolder',
         title=u'Folder with a lead image'
     )
     import transaction
     transaction.commit()
     # Set up browser
     self.browser = Browser(app)
     self.browser.handleErrors = False
     self.browser.addHeader(
         'Authorization',
         'Basic %s:%s' % (SITE_OWNER_NAME, SITE_OWNER_PASSWORD,)
     )
Beispiel #23
0
 def setUp(self):
     self.portal = self.layer['portal']
     self.request = self.layer['request']
     self.portal_url = self.portal.absolute_url()
     setRoles(self.portal, TEST_USER_ID, ['Manager'])
     fti = DexterityFTI('collectioncontainer')
     self.portal.portal_types._setObject('collectioncontainer', fti)
     fti.klass = 'plone.dexterity.content.Container'
     fti.behaviors = (
         'plone.app.contenttypes.behaviors.collection.ICollection', )
     self.fti = fti
     alsoProvides(self.portal.REQUEST, IPloneAppContenttypesLayer)
     alsoProvides(self.request, IPloneAppContenttypesLayer)
     from plone.app.contenttypes.behaviors.collection import ICollection
     alsoProvides(self.request, ICollection)
     self.portal.invokeFactory(
         'collectioncontainer',
         id='collectioncontainer',
         title=u'Container with a collection',
         customViewFields=['Title', 'portal_type'],
         query=query,
     )
     self.portal.invokeFactory(
         'Document',
         id='doc',
         title=u'Collection Test Page',
     )
    def test_repeated_behavior_registration_lookup(self):

        fti = DexterityFTI(u"testtype")
        self.mock_utility(fti, IDexterityFTI, name=u"testtype")

        # Mock a test behavior
        class ITestBehavior(Interface):
            pass
        fti.behaviors = [ITestBehavior.__identifier__]
        from plone.behavior.registration import BehaviorRegistration
        registration = BehaviorRegistration(
            title=u"Test Behavior",
            description=u"Provides test behavior",
            interface=Interface,
            marker=ITestBehavior,
            factory=None
        )
        from plone.behavior.interfaces import IBehavior
        self.mock_utility(
            registration,
            IBehavior,
            ITestBehavior.__identifier__
        )

        r1 = SCHEMA_CACHE.behavior_registrations(u'testtype')
        r2 = SCHEMA_CACHE.behavior_registrations(u'testtype')

        self.assertTrue(r1[0] is r2[0] is registration)
 def afterSetUp(self):
     """ create some sample content to test with """
     # HTTPRequest's 'set' function is set to it's original implementation
     # at the start of each new test, since otherwise the below monkey
     # patch will apply to all remaining tests (and break them);  see
     # comment below in 'disableEventCountHelper'
     HTTPRequest.set = set_orig
     self.setRoles(('Manager',))
     fti = DexterityFTI('My Dexterity Item')
     self.portal.portal_types._setObject('My Dexterity Item', fti)
     fti.klass = 'plone.dexterity.content.Item'
     fti.schema = 'plone.app.linkintegrity.tests.test_dexterity.IMyDexterityItem'
     fti.behaviors = ('plone.app.referenceablebehavior.referenceable.IReferenceable',)
     fti = DexterityFTI('Non referenciable Dexterity Item')
     self.portal.portal_types._setObject('Non referenciable Dexterity Item', fti)
     fti.klass = 'plone.dexterity.content.Item'
     fti.schema = 'plone.app.linkintegrity.tests.test_dexterity.IMyDexterityItem'
     self.portal.invokeFactory('My Dexterity Item', id='dexterity_item1',
                               title='Dexterity Item 1')
     self.portal.invokeFactory('My Dexterity Item', id='dexterity_item2',
                               title='Dexterity Item 2')
     self.portal.invokeFactory('Non referenciable Dexterity Item',
                          id='nonreferenciable_dexterity_item1',
                          title='Non referenciable Dexterity Item 1')
     self.portal.invokeFactory('Non referenciable Dexterity Item',
                          id='nonreferenciable_dexterity_item2',
                          title='Non referenciable Dexterity Item 2')
    def setUp(self):
        # add IShortName behavior to Page
        self.portal = self.layer['portal']
        self.request = self.layer['request']
        setRoles(self.portal, TEST_USER_ID, ['Manager'])

        fti = DexterityFTI('LockableType',
                           factory='LockableType')
        fti.behaviors = ('plone.app.lockingbehavior.behaviors.ILocking', )
        fti.global_allow = True
        self.portal.portal_types._setObject('LockableType', fti)
        transaction.commit()

        # prepare two browsers
        self.foo_browser = z2.Browser(self.layer['app'])
        self.foo_browser.addHeader(
            'Authorization', 'Basic %s:%s'
            % (SITE_OWNER_NAME, SITE_OWNER_PASSWORD,)
        )
        self.foo_browser.open('http://nohost/plone')

        self.bar_browser = z2.Browser(self.layer['app'])
        self.bar_browser.addHeader(
            'Authorization', 'Basic %s:%s'
            % (TEST_USER_NAME, TEST_USER_PASSWORD,)
        )
        self.bar_browser.open('http://nohost/plone')
Beispiel #27
0
    def setUp(self):
        app = self.layer['app']
        self.portal = self.layer['portal']
        self.wf = api.portal.get_tool('portal_workflow')
        self.portal.acl_users._doAddUser('user_std', 'secret', ['Member'], [])
        self.portal_url = self.portal.absolute_url()
        setRoles(self.portal, TEST_USER_ID, ['Manager'])
        fti = DexterityFTI(self.portal_type)
        self.portal.portal_types._setObject(self.portal_type, fti)
        fti.klass = 'plone.dexterity.content.Item'
        fti.behaviors = self.behaviors
        api.content.create(container=self.portal,
                           type=self.portal_type,
                           id='doc1')
        setRoles(self.portal, TEST_USER_ID, ['Member'])
        import transaction

        transaction.commit()
        # Set up browser
        self.browser = Browser(app)
        self.browser.handleErrors = False
        self.browser.addHeader(
            'Authorization', 'Basic {0}:{1}'.format(
                SITE_OWNER_NAME,
                SITE_OWNER_PASSWORD,
            ))
    def setUpContentTypes(self, portal):
        from plone.dexterity.fti import DexterityFTI
        from plone.dexterity.fti import register
        from plone.app.content.interfaces import INameFromTitle
        from plone.app.dexterity.behaviors.metadata import IOwnership
        from collective.multilingual.interfaces import IMultilingual

        bs = (
            dottedName(IMultilingual),
            dottedName(IOwnership),
            dottedName(INameFromTitle),
            )

        content_types = [
            ("Item", "Item", (), bs),
            ("Container", "Container", ("Item", "Container"), bs),
            ]

        # Set up Dexterity-based content types.
        for portal_type, klass, allowed_content_types, bs in content_types:
            fti = DexterityFTI(portal_type)
            fti.allowed_content_types = allowed_content_types
            fti.behaviors = bs
            fti.klass = "plone.dexterity.content." + klass
            register(fti)

            # There's got to be a better way :-)
            portal.portal_types._setOb(portal_type, fti)
    def test_repeated_subtypes_lookup(self):

        fti = DexterityFTI(u"testtype")
        self.mock_utility(fti, IDexterityFTI, name=u"testtype")

        # Mock a test behavior
        class ITestSchema(Interface):
            pass

        class ITestMarker(Interface):
            pass
        fti.behaviors = [ITestSchema.__identifier__]
        from plone.behavior.registration import BehaviorRegistration
        registration = BehaviorRegistration(
            title=u"Test Behavior",
            description=u"Provides test behavior",
            interface=ITestSchema,
            marker=ITestMarker,
            factory=None
        )
        from plone.behavior.interfaces import IBehavior
        self.mock_utility(
            registration,
            IBehavior,
            ITestSchema.__identifier__
        )

        s1 = SCHEMA_CACHE.subtypes(u"testtype")
        s2 = SCHEMA_CACHE.subtypes(u"testtype")

        self.assertTrue(s1[0] is s2[0] is ITestMarker)
 def setUp(self):
     app = self.layer['app']
     self.portal = self.layer['portal']
     self.request = self.layer['request']
     self.portal_url = self.portal.absolute_url()
     setRoles(self.portal, TEST_USER_ID, ['Contributor'])
     fti = DexterityFTI('tocdocument')
     self.portal.portal_types._setObject('tocdocument', fti)
     fti.klass = 'plone.dexterity.content.Item'
     fti.behaviors = (
         'plone.app.contenttypes.behaviors.tableofcontents.'
         'ITableOfContents',
     )
     self.fti = fti
     alsoProvides(self.portal.REQUEST, IPloneAppContenttypesLayer)
     alsoProvides(self.request, IPloneAppContenttypesLayer)
     from plone.app.contenttypes.behaviors.tableofcontents \
         import ITableOfContents
     alsoProvides(self.request, ITableOfContents)
     self.portal.invokeFactory(
         'tocdocument',
         id='tocdoc',
         title=u'Document with a table of contents'
     )
     import transaction
     transaction.commit()
     # Set up browser
     self.browser = Browser(app)
     self.browser.handleErrors = False
     self.browser.addHeader(
         'Authorization',
         'Basic {0}:{1}'.format(SITE_OWNER_NAME, SITE_OWNER_PASSWORD,)
     )
Beispiel #31
0
def add_mock_fti(portal):
    # Fake DX Type
    fti = DexterityFTI('dx_mock')
    portal.portal_types._setObject('dx_mock', fti)
    fti.klass = 'plone.dexterity.content.Item'
    fti.schema = 'plone.app.widgets.tests.test_dx.IMockSchema'
    fti.filter_content_types = False
    fti.behaviors = ('plone.app.dexterity.behaviors.metadata.IBasic',)
def add_item_type(portal):
    fti = DexterityFTI('item')
    portal.portal_types._setObject('item', fti)
    fti.klass = 'plone.dexterity.content.Item'
    fti.filter_content_types = False
    fti.behaviors = (
        'plone.app.dexterity.behaviors.metadata.IBasic')
    return fti
    def setUp(self):
        portal_types = getToolByName(self.layer['portal'], 'portal_types')

        # Define new portal type without behavior
        fti = DexterityFTI(str('without_behavior'), title='Without Behavior')
        fti.behaviors = (
            'plone.app.dexterity.behaviors.metadata.IBasic',
        )
        fti.model_source = u"""\
<model xmlns="http://namespaces.plone.org/supermodel/schema">
<schema>
<field name="custom" type="zope.schema.TextLine">
  <description />
  <required>False</required>
  <title>Custom field</title>
</field>
</schema>
</model>"""
        portal_types._setObject(str('without_behavior'), fti)

        # Define new portal type with behavior
        fti = DexterityFTI(str('with_behavior'), title='With Behavior')
        fti.behaviors = (
            'plone.app.dexterity.behaviors.metadata.IBasic',
            'collective.dexteritytextindexer.behavior.IDexterityTextIndexer'
        )
        fti.model_source = u"""\
<model xmlns="http://namespaces.plone.org/supermodel/schema">
<schema>
<field name="custom" type="zope.schema.TextLine">
  <description />
  <required>False</required>
  <title>Custom field</title>
</field>
</schema>
</model>"""
        portal_types._setObject(str('with_behavior'), fti)

        setRoles(self.layer['portal'], TEST_USER_ID, ['Manager'])
        transaction.commit()

        self.browser = Browser(self.layer['app'])
        self.browser.addHeader(
                'Authorization', 'Basic %s:%s' % (TEST_USER_NAME,
                                                  TEST_USER_PASSWORD,))
        self.portal_url = self.layer['portal'].absolute_url()
Beispiel #34
0
def add_mock_fti(portal):
    # Fake DX Type
    fti = DexterityFTI('dx_mock')
    portal.portal_types._setObject('dx_mock', fti)
    fti.klass = 'plone.dexterity.content.Item'
    fti.schema = 'plone.app.dexterity.tests.test_permissions.IMockSchema'
    fti.filter_content_types = False
    fti.behaviors = ('plone.app.dexterity.behaviors.metadata.IBasic',)
    def setUpPloneSite(self, portal):
        # Install into Plone site using portal_setup
        setRoles(portal, TEST_USER_ID, ['Member', 'Contributor', 'Manager'])

        # portal workaround
        self.portal = portal

        # test fti generation
        fti = DexterityFTI('TransmogrifyDexterityFTI')
        fti.schema = 'transmogrify.dexterity.testing.ITestSchema'
        fti.klass = 'plone.dexterity.content.Container'
        fti.behaviors = ('plone.app.dexterity.behaviors.metadata.IBasic',)
        self.portal.portal_types._setObject('TransmogrifyDexterityFTI', fti)
        register(fti)

        # create test schema source and provide it
        @implementer(ISection)
        class SchemaSource(SampleSource):
            classProvides(ISectionBlueprint)

            def __init__(self, transmogrifier, name, options, previous):
                super(SchemaSource, self).__init__(transmogrifier, name, options, previous)
                sourcecontent = options.get('source-content', 'full')
                if sourcecontent == 'full':
                    self.sample = (
                        dict(_path='/spam',
                             foo='one value',
                             _type='TransmogrifyDexterityFTI',
                             title='Spam',
                             description='Lorem Ipsum bla bla!',
                             test_file={
                                'data': zptlogo,
                                'filename': 'zptlogo.gif'},
                             test_date='2010-10-12',
                             fieldnotchanged='nochange',
                        ),
                        dict(_path='/two',
                             foo='Bla',
                             _type='TransmogrifyDexterityFTI',
                             title='My Second Object',
                             #description=None, # None is not valid for this field.
                             test_file=zptlogo,
                             _filename="testlogo.gif",
                             test_date=date(2010, 01, 01, ),
                             fieldnotchanged='nochange',
                        ),
                    )
                elif sourcecontent == 'onlytitle':
                    self.sample = (
                        dict(_path='/spam',
                             _type='TransmogrifyDexterityFTI',
                             title='Spammety spam'),
                        dict(_path='/two',
                             _type='TransmogrifyDexterityFTI',
                             title='My Awesome Second Object'),
                    )
        provideUtility(SchemaSource,
            name=u'transmogrify.dexterity.testsource')
Beispiel #36
0
    def test_schema_lookup_default_view(self):

        # Context and request
        class IMarker(IDexterityContent):
            pass

        context_mock = self.create_dummy(portal_type=u'testtype')
        alsoProvides(context_mock, IMarker)
        request_mock = TestRequest()

        # FTI
        fti_mock = DexterityFTI(u"testtype")
        fti_mock.lookupSchema = Mock(return_value=ISchema)
        fti_mock.behaviors = (IBehaviorOne.__identifier__,
                              IBehaviorTwo.__identifier__,
                              IBehaviorThree.__identifier__)
        self.mock_utility(fti_mock, IDexterityFTI, name=u"testtype")

        from plone.behavior.interfaces import IBehavior
        from plone.behavior.registration import BehaviorRegistration
        registration = BehaviorRegistration(
            title=u"Test Behavior 1",
            description=u"Provides test behavior",
            interface=IBehaviorOne,
            marker=None,
            factory=None)
        self.mock_utility(registration, IBehavior, IBehaviorOne.__identifier__)
        registration = BehaviorRegistration(
            title=u"Test Behavior 2",
            description=u"Provides test behavior",
            interface=IBehaviorTwo,
            marker=None,
            factory=None)
        self.mock_utility(registration, IBehavior, IBehaviorTwo.__identifier__)
        registration = BehaviorRegistration(
            title=u"Test Behavior 3",
            description=u"Provides test behavior",
            interface=IBehaviorThree,
            marker=None,
            factory=None)
        self.mock_utility(registration, IBehavior,
                          IBehaviorThree.__identifier__)

        # Form
        view = DefaultView(context_mock, request_mock)
        view.portal_type = u"testtype"

        self.assertEqual(ISchema, view.schema)

        # we expect here only formfieldprovider!
        self.assertEqual((IBehaviorOne, IBehaviorTwo),
                         tuple(view.additionalSchemata))

        # When we register our own IBehaviorAssignable we can
        # influence what goes into the additionalSchemata.
        self.mock_adapter(NoBehaviorAssignable, IBehaviorAssignable, [IMarker])
        additionalSchemata = tuple(view.additionalSchemata)
        self.assertEqual(tuple(), tuple(additionalSchemata))
    def setUp(self):
        portal_types = getToolByName(self.layer['portal'], 'portal_types')

        # Define new portal type without behavior
        fti = DexterityFTI(str('without_behavior'), title='Without Behavior')
        fti.behaviors = ('plone.app.dexterity.behaviors.metadata.IBasic', )
        fti.model_source = u"""\
<model xmlns="http://namespaces.plone.org/supermodel/schema">
<schema>
<field name="custom" type="zope.schema.TextLine">
  <description />
  <required>False</required>
  <title>Custom field</title>
</field>
</schema>
</model>"""
        portal_types._setObject(str('without_behavior'), fti)

        # Define new portal type with behavior
        fti = DexterityFTI(str('with_behavior'), title='With Behavior')
        fti.behaviors = (
            'plone.app.dexterity.behaviors.metadata.IBasic',
            'collective.dexteritytextindexer.behavior.IDexterityTextIndexer')
        fti.model_source = u"""\
<model xmlns="http://namespaces.plone.org/supermodel/schema">
<schema>
<field name="custom" type="zope.schema.TextLine">
  <description />
  <required>False</required>
  <title>Custom field</title>
</field>
</schema>
</model>"""
        portal_types._setObject(str('with_behavior'), fti)

        setRoles(self.layer['portal'], TEST_USER_ID, ['Manager'])
        transaction.commit()

        self.browser = Browser(self.layer['app'])
        self.browser.addHeader(
            'Authorization', 'Basic %s:%s' % (
                TEST_USER_NAME,
                TEST_USER_PASSWORD,
            ))
        self.portal_url = self.layer['portal'].absolute_url()
Beispiel #38
0
 def _setup_test_content_type(self, name):
     from plone.dexterity.fti import DexterityFTI
     fti = DexterityFTI(name)
     fti.behaviors = ('plone.app.dexterity.behaviors.metadata.IDublinCore',
                      'adhocracy.plone.behavior.IAdhocracyStaticPagesRoot')
     fti.klass = 'plone.dexterity.content.Container'
     fti.filter_content_types = False
     self.portal.portal_types._setObject(name, fti)
     fti.lookupSchema()
    def setUp(self):
        super(TestCreatorBehavior, self).setUp()
        self.grant('Contributor')

        fti = DexterityFTI('ReferenceFTI')
        fti.behaviors = ('opengever.base.behaviors.creator.ICreator', )
        self.portal.portal_types._setObject('ReferenceFTI', fti)
        fti.lookupSchema()
        transaction.commit()
Beispiel #40
0
def add_folder_type(portal):
    fti = DexterityFTI('folder')
    portal.portal_types._setObject('folder', fti)
    fti.klass = 'plone.dexterity.content.Container'
    fti.filter_content_types = False
    fti.behaviors = (
        'plone.app.dexterity.behaviors.metadata.IBasic',
        'brasil.gov.vcge.dx.behaviors.IVCGE')
    return fti
Beispiel #41
0
 def setUp(self):
     self.portal = self.layer["portal"]
     self.request = self.layer["request"]
     login(self.portal, TEST_USER_NAME)
     setRoles(self.portal, TEST_USER_ID, ["Manager"])
     fti = DexterityFTI("blocksfolder")
     self.portal.portal_types._setObject("blocksfolder", fti)
     fti.klass = "plone.dexterity.content.Container"
     fti.behaviors = ("volto.blocks", )
Beispiel #42
0
    def test_schema_lookup_add(self):

        # Context and request
        context_mock = self.create_dummy(portal_type=u'testtype')
        request_mock = TestRequest()

        # FTI
        fti_mock = DexterityFTI(u"testtype")
        fti_mock.lookupSchema = Mock(return_value=ISchema)
        fti_mock.behaviors = (IBehaviorOne.__identifier__,
                              IBehaviorTwo.__identifier__,
                              IBehaviorThree.__identifier__)
        self.mock_utility(fti_mock, IDexterityFTI, name=u"testtype")

        from plone.behavior.interfaces import IBehavior
        from plone.behavior.registration import BehaviorRegistration
        registration = BehaviorRegistration(
            title=u"Test Behavior 1",
            description=u"Provides test behavior",
            interface=IBehaviorOne,
            marker=None,
            factory=None)
        self.mock_utility(registration, IBehavior, IBehaviorOne.__identifier__)
        registration = BehaviorRegistration(
            title=u"Test Behavior 2",
            description=u"Provides test behavior",
            interface=IBehaviorTwo,
            marker=None,
            factory=None)
        self.mock_utility(registration, IBehavior, IBehaviorTwo.__identifier__)
        registration = BehaviorRegistration(
            title=u"Test Behavior 3",
            description=u"Provides test behavior",
            interface=IBehaviorThree,
            marker=None,
            factory=None)
        self.mock_utility(registration, IBehavior,
                          IBehaviorThree.__identifier__)

        # Form
        view = DefaultAddForm(context_mock, request_mock)
        view.portal_type = u"testtype"

        self.assertEqual(ISchema, view.schema)

        # we expect here only formfieldprovider!
        self.assertEqual((IBehaviorOne, IBehaviorTwo),
                         tuple(view.additionalSchemata))

        # When we register our own IBehaviorAssignable we can
        # influence what goes into the additionalSchemata. But in an Addform
        # this never grips, since its an adapter on context, and contextless
        # there is always the FTI the only valid source
        self.mock_adapter(NoBehaviorAssignable, IBehaviorAssignable,
                          [Interface])
        self.assertEqual((IBehaviorOne, IBehaviorTwo),
                         tuple(view.additionalSchemata))
    def setUp(self):
        super(TestBaseBehavior, self).setUp()

        fti = DexterityFTI('OpenGeverBaseFTI')
        fti.schema = 'opengever.base.tests.emptyschema.IEmptySchema'
        fti.behaviors = ('opengever.base.behaviors.base.IOpenGeverBase', )
        self.portal.portal_types._setObject('OpenGeverBaseFTI', fti)
        fti.lookupSchema()
        transaction.commit()
    def setUp(self):
        super(TestCreatorBehavior, self).setUp()
        self.grant('Contributor')

        fti = DexterityFTI('ReferenceFTI')
        fti.behaviors = ('opengever.base.behaviors.creator.ICreator',)
        self.portal.portal_types._setObject('ReferenceFTI', fti)
        fti.lookupSchema()
        transaction.commit()
Beispiel #45
0
    def setUp(self):
        super(TestBaseBehavior, self).setUp()

        fti = DexterityFTI('OpenGeverBaseFTI')
        fti.schema = 'opengever.base.tests.emptyschema.IEmptySchema'
        fti.behaviors = ('opengever.base.behaviors.base.IOpenGeverBase',)
        self.portal.portal_types._setObject('OpenGeverBaseFTI', fti)
        fti.lookupSchema()
        transaction.commit()
def add_folder_type(portal):
    fti = DexterityFTI('folder')
    portal.portal_types._setObject('folder', fti)
    fti.klass = 'plone.dexterity.content.Container'
    fti.filter_content_types = False
    fti.behaviors = ('Products.CMFPlone.interfaces.constrains.'
                     'ISelectableConstrainTypes',
                     'plone.app.dexterity.behaviors.metadata.IBasic')
    return fti
def add_folder_type(portal):
    from plone.dexterity.fti import DexterityFTI

    fti = DexterityFTI(DEXTERITY_FTI_FOLDER)
    portal.portal_types._setObject(DEXTERITY_FTI_FOLDER, fti)
    fti.klass = 'plone.dexterity.content.Container'
    fti.filter_content_types = False
    fti.behaviors = ('plone.app.dexterity.behaviors.metadata.IBasic',
                     'brasil.gov.vcge.dx.behaviors.IVCGE')
    return fti
def add_folder_type(portal):
    fti = DexterityFTI('folder')
    portal.portal_types._setObject('folder', fti)
    fti.klass = 'plone.dexterity.content.Container'
    fti.filter_content_types = False
    fti.behaviors = (
        'Products.CMFPlone.interfaces.constrains.'
        'ISelectableConstrainTypes',
        'plone.app.dexterity.behaviors.metadata.IBasic')
    return fti
    def setUp(self):
        super(TestBaseBehavior, self).setUp()
        self.grant("Contributor")

        fti = DexterityFTI("OpenGeverBaseFTI")
        fti.schema = "opengever.base.tests.emptyschema.IEmptySchema"
        fti.behaviors = ("opengever.base.behaviors.base.IOpenGeverBase",)
        self.portal.portal_types._setObject("OpenGeverBaseFTI", fti)
        fti.lookupSchema()
        transaction.commit()
    def setUp(self):
        super(TestDocumentNumbering, self).setUp()

        fti = DexterityFTI('SimpleDocument')
        fti.klass = 'plone.dexterity.content.Container'
        fti.behaviors = ('opengever.document.behaviors.IBaseDocument', )
        fti.schema = 'opengever.document.document.IDocumentSchema'

        typestool = getToolByName(self.portal, 'portal_types')
        typestool._setObject('SimpleDocument', fti)
        register(fti)
    def setUp(self):
        super(TestSchemaLevelDefaultsForBehaviors, self).setUp()

        fti = DexterityFTI('SampleItem')
        fti.klass = 'plone.dexterity.content.Item'
        fti.behaviors = ('opengever.base.tests.sample_behavior.sample.ISampleSchema', )
        fti.schema = 'opengever.base.tests.emptyschema.IEmptySchema'

        typestool = getToolByName(self.portal, 'portal_types')
        typestool._setObject('SampleItem', fti)
        register(fti)
Beispiel #52
0
    def setUpPloneSite(self, portal):
        self.applyProfile(portal, 'plone.app.dexterity:default')
        self.applyProfile(portal, 'plone.app.drafts:default')

        if 'Folder' not in portal.portal_types.objectIds():
            fti = DexterityFTI('Folder')
            fti.behaviors = (
                'plone.app.dexterity.behaviors.metadata.IDublinCore', )
            fti.klass = 'plone.dexterity.content.Container'
            fti.filter_content_types = False
            fti.global_allow = True
            portal.portal_types._setObject('Folder', fti)

        fti = DexterityFTI('MyDocument')
        fti.behaviors = (
            'plone.app.dexterity.behaviors.metadata.IDublinCore',
            'plone.app.drafts.interfaces.IDraftable',
        )
        fti.global_allow = True
        portal.portal_types._setObject('MyDocument', fti)
Beispiel #53
0
def add_folder_type(portal):
    from plone.dexterity.fti import DexterityFTI

    fti = DexterityFTI(DEXTERITY_FTI_FOLDER)
    portal.portal_types._setObject(DEXTERITY_FTI_FOLDER, fti)
    fti.klass = 'plone.dexterity.content.Container'
    fti.filter_content_types = False
    fti.behaviors = (
        'plone.app.dexterity.behaviors.metadata.IBasic',
        'brasil.gov.vcge.dx.behaviors.IVCGE')
    return fti
    def setUp(self):
        super(TestDocumentNumbering, self).setUp()

        fti = DexterityFTI("SimpleDocument")
        fti.klass = "plone.dexterity.content.Container"
        fti.behaviors = ("opengever.document.behaviors.IBaseDocument",)
        fti.schema = "opengever.document.document.IDocumentSchema"

        typestool = getToolByName(self.portal, "portal_types")
        typestool._setObject("SimpleDocument", fti)
        register(fti)
Beispiel #55
0
 def setUp(self):
     self.portal = self.layer["portal"]
     self.request = self.layer["request"]
     login(self.portal, TEST_USER_NAME)
     setRoles(self.portal, TEST_USER_ID, ["Manager"])
     fti = DexterityFTI("tiledfolder")
     self.portal.portal_types._setObject("tiledfolder", fti)
     fti.klass = "plone.dexterity.content.Container"
     fti.behaviors = ("plone.tiles", )
     self.fti = fti
     alsoProvides(self.request, ITiles)
Beispiel #56
0
    def setUp(self):
        super(TestDocumentNumbering, self).setUp()

        fti = DexterityFTI('SimpleDocument')
        fti.klass = 'plone.dexterity.content.Container'
        fti.behaviors = ('opengever.document.behaviors.IBaseDocument', )
        fti.schema = 'opengever.document.document.IDocumentSchema'

        typestool = getToolByName(self.portal, 'portal_types')
        typestool._setObject('SimpleDocument', fti)
        register(fti)
Beispiel #57
0
    def setUp(self):
        self.app = self.layer.get('app')
        self.portal = self.layer.get('portal')
        setRoles(self.portal, TEST_USER_ID, ['Member', 'Contributor', 'Manager'])

        fti = DexterityFTI('TrashTestFTI',
                           klass="plone.dexterity.content.Container",
                           global_allow=True,
                           filter_content_types=False)
        fti.behaviors = ('plone.app.content.interfaces.INameFromTitle',
                         'opengever.trash.trash.ITrashable')
        self.portal.portal_types._setObject('TrashTestFTI', fti)