Exemplo n.º 1
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)),
     ]
Exemplo n.º 2
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)),
     ]
Exemplo n.º 3
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)),
     ]
Exemplo n.º 4
0
 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')
Exemplo n.º 5
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)),
     ]
Exemplo n.º 6
0
 def afterSetUp(self):
     """ create some sample content to test with """
     if not HAS_DEXTERITY:
         return
     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'
Exemplo n.º 7
0
 def setUp(self):
     self.portal = self.layer["portal"]
     self.request = self.layer["request"]
     fti = DexterityFTI("TaggedDocument")
     self.portal.portal_types._setObject("TaggedDocument", fti)
     fti.klass = "plone.dexterity.content.Container"
     fti.schema = "plone.restapi.tests.test_types.ITaggedValuesSchema"
Exemplo n.º 8
0
    def test_concrete_schema_not_refreshed_on_modify_schema(self):
        portal_type = u"testtype"
        fti = DexterityFTI(portal_type)

        class IBlank(Interface):
            pass

        class INew(Interface):
            title = zope.schema.TextLine(title=u"title")

        model_dummy = Model({u"": INew})
        fti.lookupModel = Mock(return_value=model_dummy)

        site_dummy = self.create_dummy(getPhysicalPath=lambda: ('', 'siteid'))
        self.mock_utility(site_dummy, ISiteRoot)

        # Set schema to something so that hasDynamicSchema is false
        fti.schema = IBlank.__identifier__
        assert not fti.hasDynamicSchema

        # Set source for dynamic FTI - should not be used
        schemaName = utils.portalTypeToSchemaName(fti.getId())
        setattr(plone.dexterity.schema.generated, schemaName, IBlank)

        # Sync should not happen now

        ftiModified(
            fti,
            ObjectModifiedEvent(
                fti, DexterityFTIModificationDescription('schema', '')))

        self.assertFalse('title' in IBlank)
    def test_dexterity_item(self):
        # prepare a fti
        portal_type = 'testtype'
        fti = DexterityFTI(portal_type)
        fti.klass = 'plone.dexterity.content.Item'
        fti.schema = Interface.__identifier__
        self.portal.portal_types._setObject(portal_type, fti)
        register(fti)

        # prepare an item
        item = Item('testitem')
        item.portal_type = portal_type
        self.portal._setObject(item.id, item)
        item = self.portal[item.id]

        john = create(Builder('user').with_roles('Reader', on=item))

        item.reindexObject()

        catalog = getToolByName(self.portal, 'portal_catalog')
        result = catalog(principal_with_local_roles=[john.getId()])

        self.assertEquals(1,
                          len(result),
                          'Expect one entry')
        self.assertEquals(result[0].getPath(),
                          '/'.join(item.getPhysicalPath()))
Exemplo n.º 10
0
 def setUp(self):
     self.portal = self.layer['portal']
     self.request = self.layer['request']
     fti = DexterityFTI('TaggedDocument')
     self.portal.portal_types._setObject('TaggedDocument', fti)
     fti.klass = 'plone.dexterity.content.Container'
     fti.schema = 'plone.restapi.tests.test_types.ITaggedValuesSchema'
Exemplo n.º 11
0
    def test_lookupModel_failure(self):
        fti = DexterityFTI('testtype')
        fti.schema = None
        fti.model_source = None
        fti.model_file = None

        self.assertRaises(ValueError, fti.lookupModel)
Exemplo n.º 12
0
 def afterSetUp(self):
     """ create some sample content to test with """
     if not HAS_DEXTERITY:
         return
     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'
Exemplo n.º 13
0
    def test_lookupModel_failure(self):
        fti = DexterityFTI(u"testtype")
        fti.schema = None
        fti.model_source = None
        fti.model_file = None

        self.assertRaises(ValueError, fti.lookupModel)
Exemplo n.º 14
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',)
Exemplo n.º 15
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',)
Exemplo n.º 16
0
 def setUp(self):
     super(TestDexterityItems, self).setUp()
     portal = self.portal
     fti = DexterityFTI('dxtest_type')
     fti.schema = u'collective.syndication.tests.test_syndication.ITestSchema'
     portal.portal_types._setObject('dxtest_type', fti)
     self.folder.invokeFactory('dxtest_type', 'dxtest1')
     self.folder.dxtest1.text = u'<p>Lorem ipsum dolor sit amet.</p>'
 def setUp(self):
     super(TestDexterityItems, self).setUp()
     portal = self.portal
     fti = DexterityFTI('dxtest_type')
     fti.schema = u'collective.syndication.tests.test_syndication.ITestSchema'
     portal.portal_types._setObject('dxtest_type', fti)
     self.folder.invokeFactory('dxtest_type', 'dxtest1')
     self.folder.dxtest1.text = u'<p>Lorem ipsum dolor sit amet.</p>'
Exemplo n.º 18
0
    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')
 def setUpPloneSite(self, portal):
     # Install into Plone site using portal_setup
     # self.applyProfile(portal, 'plone.app.linkintegrity:default')
     super(LinkintegrityFixture, self).setUpPloneSite(portal)
     setRoles(portal, TEST_USER_ID, ['Manager'])
     fti = DexterityFTI('My Dexterity Item')
     portal.portal_types._setObject('My Dexterity Item', fti)
     fti.klass = 'plone.dexterity.content.Item'
     fti.schema = 'collective.cover.tests.test_linkintegrity.IMyDexterityItem'
     fti.behaviors = ('plone.app.referenceablebehavior.referenceable.IReferenceable',)
     fti = DexterityFTI('Non referenciable Dexterity Item')
     portal.portal_types._setObject('Non referenciable Dexterity Item', fti)
     fti.klass = 'plone.dexterity.content.Item'
     fti.schema = 'collective.cover.tests.test_linkintegrity.IMyDexterityItem'
     # Create some dexterity items to test with it
     portal.invokeFactory(
         'My Dexterity Item', id='dexterity_item1', title='Dexterity Item 1')
     portal.invokeFactory(
         'My Dexterity Item', id='dexterity_item2', title='Dexterity Item 2')
     portal.invokeFactory(
         'Non referenciable Dexterity Item',
         id='nonreferenciable_dexterity_item1',
         title='Non referenciable Dexterity Item 1'
     )
     portal.invokeFactory(
         'Non referenciable Dexterity Item',
         id='nonreferenciable_dexterity_item2',
         title='Non referenciable Dexterity Item 2'
     )
     # Create an AT Image
     image = generate_jpeg(50, 50)
     portal.invokeFactory(
         'Image', id='image1', title='Test Image 1', image=image)
     portal.invokeFactory('collective.cover.content', 'cover1')
     # Documents
     text = '<html> <body> a test page </body> </html>'
     portal.invokeFactory(
         'Document', id='doc1', title='Test Page 1', text=text)
     text = '<html> <body> another test page </body> </html>'
     portal.invokeFactory(
         'Document', id='doc2', title='Test Page 2', text=text)
     text = '<html> <body> a test page in a subfolder </body> </html>'
     portal.invokeFactory('Folder', id='folder1', title='Test Folder 1')
     portal.folder1.invokeFactory(
         'Document', id='doc3', title='Test Page 3', text=text)
Exemplo n.º 20
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 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()
Exemplo n.º 22
0
    def test_lookupModel_with_schema_only(self):
        fti = DexterityFTI(u"testtype")
        fti.schema = u"plone.dexterity.tests.schemata.ITestSchema"
        fti.model_source = None
        fti.model_file = None

        model = fti.lookupModel()
        self.assertEqual(1, len(model.schemata))
        self.assertEqual(ITestSchema, model.schema)
Exemplo n.º 23
0
    def test_lookupModel_with_schema_only(self):
        fti = DexterityFTI('testtype')
        fti.schema = 'plone.dexterity.tests.schemata.ITestSchema'
        fti.model_source = None
        fti.model_file = None

        model = fti.lookupModel()
        self.assertEqual(1, len(model.schemata))
        self.assertEqual(ITestSchema, model.schema)
Exemplo n.º 24
0
    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()
Exemplo n.º 25
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)
    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)
Exemplo n.º 27
0
    def test_lookupModel_without_schema_policy(self):
        gsm = getGlobalSiteManager()
        gsm.registerUtility(DexteritySchemaPolicy(), plone.supermodel.interfaces.ISchemaPolicy, name=u"dexterity")

        fti = DexterityFTI(u"testtype")
        fti.schema = None
        fti.model_source = '<model xmlns="http://namespaces.plone.org/supermodel/schema"><schema/></model>'
        fti.model_file = None

        model = fti.lookupModel()
        self.assertEquals(False, ITestInterface in model.schemata[""].__bases__)
Exemplo n.º 28
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)
Exemplo n.º 29
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)
Exemplo n.º 30
0
 def test_lookupSchema_with_nonexistant_schema(self):
     ''' Tests the case where a dexterity type is not removed cleanly
     from the fti, but the code has been removed.
     '''
     fti = DexterityFTI('testtype')
     fti.schema = 'model.wont.be.imported'
     portal = self.create_dummy(getPhysicalPath=lambda: ('', 'site'))
     self.mock_utility(portal, Interface)
     schemaName = utils.portalTypeToSchemaName(fti.getId())
     setattr(plone.dexterity.schema.generated, schemaName, ITestSchema)
     self.assertEqual(ITestSchema, fti.lookupSchema())
     delattr(plone.dexterity.schema.generated, schemaName)
Exemplo n.º 31
0
    def setUp(self):
        self.portal = self.layer['portal']
        activateAndReindex(self.portal)
        setRoles(self.portal, TEST_USER_ID, ['Manager'])

        fti = DexterityFTI('My Dexterity Container')
        self.portal.portal_types._setObject('My Dexterity Container', fti)
        fti.klass = 'plone.dexterity.content.Container'
        fti.schema = 'zope.interface.Interface'
        fti.behaviors = ('collective.solr.behaviors.ISolrFields',)
        self.portal.invokeFactory('My Dexterity Container', 'child')
        self.child = self.portal['child']
Exemplo n.º 32
0
    def setUp(self):
        self.portal = self.layer['portal']
        activateAndReindex(self.portal)
        setRoles(self.portal, TEST_USER_ID, ['Manager'])

        fti = DexterityFTI('My Dexterity Container')
        self.portal.portal_types._setObject('My Dexterity Container', fti)
        fti.klass = 'plone.dexterity.content.Container'
        fti.schema = 'zope.interface.Interface'
        fti.behaviors = ('collective.solr.behaviors.ISolrFields', )
        self.portal.invokeFactory('My Dexterity Container', 'child')
        self.child = self.portal['child']
Exemplo n.º 33
0
    def setUp(self):
        self.portal = self.layer["portal"]
        activateAndReindex(self.portal)
        setRoles(self.portal, TEST_USER_ID, ["Manager"])

        fti = DexterityFTI("My Dexterity Container")
        self.portal.portal_types._setObject("My Dexterity Container", fti)
        fti.klass = "plone.dexterity.content.Container"
        fti.schema = "zope.interface.Interface"
        fti.behaviors = ("collective.solr.behaviors.ISolrFields", )
        self.portal.invokeFactory("My Dexterity Container", "child")
        self.child = self.portal["child"]
Exemplo n.º 34
0
 def test_lookupSchema_with_nonexistant_schema(self):
     """ Tests the case where a dexterity type is not removed cleanly
     from the fti, but the code has been removed.
     """
     fti = DexterityFTI(u"testtype")
     fti.schema = 'model.wont.be.imported'
     portal = self.create_dummy(getPhysicalPath=lambda: ('', 'site'))
     self.mock_utility(portal, ISiteRoot)
     schemaName = utils.portalTypeToSchemaName(fti.getId())
     setattr(plone.dexterity.schema.generated, schemaName, ITestSchema)
     self.assertEqual(ITestSchema, fti.lookupSchema())
     delattr(plone.dexterity.schema.generated, schemaName)
Exemplo n.º 35
0
    def test_lookupModel_without_schema_policy(self):
        gsm = getGlobalSiteManager()
        gsm.registerUtility(DexteritySchemaPolicy(),
                            plone.supermodel.interfaces.ISchemaPolicy,
                            name=u"dexterity")

        fti = DexterityFTI(u"testtype")
        fti.schema = None
        fti.model_source = '<model xmlns="http://namespaces.plone.org/supermodel/schema"><schema/></model>'
        fti.model_file = None

        model = fti.lookupModel()
        self.assertEqual(False, ITestInterface in model.schemata[''].__bases__)
Exemplo n.º 36
0
    def test_lookupModel_from_string(self):
        fti = DexterityFTI(u"testtype")
        fti.schema = None
        fti.model_source = "<model />"
        fti.model_file = None

        model_dummy = Model()

        from plone.supermodel import loadString
        self.patch_global(loadString, return_value=model_dummy)

        model = fti.lookupModel()
        self.assertIs(model_dummy, model)
Exemplo n.º 37
0
    def test_lookupModel_from_string(self):
        fti = DexterityFTI(u"testtype")
        fti.schema = None
        fti.model_source = "<model />"
        fti.model_file = None

        model_dummy = Model()

        from plone.supermodel import loadString
        self.patch_global(loadString, return_value=model_dummy)

        model = fti.lookupModel()
        self.assertIs(model_dummy, model)
Exemplo n.º 38
0
    def test_lookupSchema_with_dynamic_schema(self):
        fti = DexterityFTI(u"testtype")
        fti.schema = None  # use dynamic schema

        portal = self.create_dummy(getPhysicalPath=lambda: ('', 'site'))
        self.mock_utility(portal, ISiteRoot)

        schemaName = utils.portalTypeToSchemaName(fti.getId())
        setattr(plone.dexterity.schema.generated, schemaName, ITestSchema)

        self.assertEqual(ITestSchema, fti.lookupSchema())

        # cleanup
        delattr(plone.dexterity.schema.generated, schemaName)
Exemplo n.º 39
0
    def setUpPloneSite(self, portal):
        # install into the Plone site
        applyProfile(portal, 'plone.app.dexterity:default')
        applyProfile(portal, 'plone.app.widgets:default')
        applyProfile(portal, 'plone.app.standardtiles:default')

        # ensure plone.app.theming disabled
        from plone.registry.interfaces import IRegistry
        from zope.component import getUtility
        registry = getUtility(IRegistry)
        key = 'plone.app.theming.interfaces.IThemeSettings.enabled'
        if key in registry:
            registry[key] = False

        # creates some users
        acl_users = getToolByName(portal, 'acl_users')
        acl_users.userFolderAddUser(
            NORMAL_USER_NAME,
            NORMAL_USER_PASSWORD,
            ['Member'],
            [],
        )
        acl_users.userFolderAddUser(
            EDITOR_USER_NAME,
            EDITOR_USER_PASSWORD,
            ['Editor'],
            [],
        )
        acl_users.userFolderAddUser(
            MANAGER_USER_NAME,
            MANAGER_USER_PASSWORD,
            ['Manager'],
            [],
        )

        # define the dexterity "junk" type
        fti = DexterityFTI('DecoTestType1')
        fti.schema = u'plone.app.standardtiles.testing.ITestType1'
        fti.behaviors = (
            'plone.app.dexterity.behaviors.metadata.IDublinCore', )
        portal.portal_types._setObject('DecoTestType1', fti)

        # inserts the content of the types defined above
        login(portal, MANAGER_USER_NAME)
        content = portal[portal.invokeFactory('DecoTestType1',
                                              'deco-test-type1')]
        content.title = u"Test content"
        content.description = u"Just a test content"
        content.contributors = (u'Jane Doe', u'John Doe')
        logout()
    def setUpPloneSite(self, portal):
        # install into the Plone site
        applyProfile(portal, 'plone.app.dexterity:default')
        applyProfile(portal, 'plone.app.widgets:default')
        applyProfile(portal, 'plone.app.standardtiles:default')

        # ensure plone.app.theming disabled
        if HAS_PLONE_APP_THEMING:
            from plone.registry.interfaces import IRegistry
            from zope.component import getUtility
            registry = getUtility(IRegistry)
            key = 'plone.app.theming.interfaces.IThemeSettings.enabled'
            if key in registry:
                registry[key] = False

        # creates some users
        acl_users = getToolByName(portal, 'acl_users')
        acl_users.userFolderAddUser(
            NORMAL_USER_NAME,
            NORMAL_USER_PASSWORD,
            ['Member'],
            [],
        )
        acl_users.userFolderAddUser(
            EDITOR_USER_NAME,
            EDITOR_USER_PASSWORD,
            ['Editor'],
            [],
        )
        acl_users.userFolderAddUser(
            MANAGER_USER_NAME,
            MANAGER_USER_PASSWORD,
            ['Manager'],
            [],
        )

        # define the dexterity "junk" type
        fti = DexterityFTI('DecoTestType1')
        fti.schema = u'plone.app.standardtiles.testing.ITestType1'
        fti.behaviors = ('plone.app.dexterity.behaviors.metadata.IDublinCore',)
        portal.portal_types._setObject('DecoTestType1', fti)

        # inserts the content of the types defined above
        login(portal, MANAGER_USER_NAME)
        content = portal[portal.invokeFactory('DecoTestType1',
                                              'deco-test-type1')]
        content.title = u"Test content"
        content.description = u"Just a test content"
        content.contributors = (u'Jane Doe', u'John Doe')
        logout()
Exemplo n.º 41
0
    def test_lookupSchema_with_dynamic_schema(self):
        fti = DexterityFTI('testtype')
        fti.schema = None  # use dynamic schema

        portal = self.create_dummy(getPhysicalPath=lambda: ('', 'site'))
        self.mock_utility(portal, Interface)

        schemaName = utils.portalTypeToSchemaName(fti.getId())
        setattr(plone.dexterity.schema.generated, schemaName, ITestSchema)

        self.assertEqual(ITestSchema, fti.lookupSchema())

        # cleanup
        delattr(plone.dexterity.schema.generated, schemaName)
Exemplo n.º 42
0
    def setup_sample_fti(self):
        types_tool = self.layer['portal'].portal_types

        default_behaviors = [
            'plone.app.dexterity.behaviors.metadata.IBasic',
            'plone.app.content.interfaces.INameFromTitle',
            IDataGridFieldExample.__identifier__
        ]

        fti = DexterityFTI('SampleContent')
        fti.schema = 'ftw.publisher.core.testing.ISampleContentSchema'
        fti.klass = 'ftw.publisher.core.testing.SampleContent'
        fti.behaviors = tuple(default_behaviors)
        fti.default_view = 'view'
        types_tool._setObject('SampleContent', fti)
    def setup_sample_fti(self):
        types_tool = self.layer['portal'].portal_types

        default_behaviors = [
            'plone.app.dexterity.behaviors.metadata.IBasic',
            'plone.app.content.interfaces.INameFromTitle',
            IDataGridFieldExample.__identifier__
        ]

        fti = DexterityFTI('SampleContent')
        fti.schema = 'ftw.publisher.core.testing.ISampleContentSchema'
        fti.klass = 'ftw.publisher.core.testing.SampleContent'
        fti.behaviors = tuple(default_behaviors)
        fti.default_view = 'view'
        types_tool._setObject('SampleContent', fti)
Exemplo n.º 44
0
    def test_lookupModel_from_string(self):
        fti = DexterityFTI(u"testtype")
        fti.schema = None
        fti.model_source = "<model />"
        fti.model_file = None

        model_dummy = Model()

        loadString_mock = self.mocker.replace("plone.supermodel.loadString")
        self.expect(loadString_mock(fti.model_source, policy=u"dexterity")).result(model_dummy)

        self.replay()

        model = fti.lookupModel()
        self.assertIs(model_dummy, model)
Exemplo n.º 45
0
    def test_lookupModel_from_string_with_schema(self):
        fti = DexterityFTI(u"testtype")
        fti.schema = u"plone.dexterity.tests.schemata.ITestSchema"  # effectively ignored
        fti.model_source = "<model />"
        fti.model_file = None

        model_dummy = Model()

        loadString_mock = self.mocker.replace("plone.supermodel.loadString")
        self.expect(loadString_mock(fti.model_source, policy=u"dexterity")).result(model_dummy)

        self.replay()

        model = fti.lookupModel()
        self.assertIs(model_dummy, model)
        self.assertIs(ITestSchema, fti.lookupSchema())
Exemplo n.º 46
0
    def test_lookupModel_from_string(self):
        fti = DexterityFTI('testtype')
        fti.schema = None
        fti.model_source = '<model />'
        fti.model_file = None

        model_dummy = Model()

        loadString_mock = self.mocker.replace('plone.supermodel.loadString')
        self.expect(loadString_mock(fti.model_source,
                                    policy='dexterity')).result(model_dummy)

        self.replay()

        model = fti.lookupModel()
        self.assertIs(model_dummy, model)
    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)

        site_fti = typestool['Plone Site']
        site_fti.allowed_content_types = site_fti.allowed_content_types + (
            'SampleItem', )
Exemplo n.º 48
0
    def test_lookupModel_with_schema_policy(self):
        class TestSchemaPolicy(DexteritySchemaPolicy):
            def bases(self, schemaName, tree):
                return (ITestInterface,)

        gsm = getGlobalSiteManager()
        policy = TestSchemaPolicy()
        gsm.registerUtility(policy, plone.supermodel.interfaces.ISchemaPolicy, name=u"test")

        fti = DexterityFTI(u"testtype")
        fti.schema = None
        fti.model_source = '<model xmlns="http://namespaces.plone.org/supermodel/schema"><schema/></model>'
        fti.model_file = None
        fti.schema_policy = u"test"

        model = fti.lookupModel()
        self.assertEquals(True, ITestInterface in model.schemata[""].__bases__)
Exemplo n.º 49
0
    def test_lookupModel_from_string_with_schema(self):
        fti = DexterityFTI(u"testtype")
        fti.schema = u"plone.dexterity.tests.schemata.ITestSchema"  # effectively ignored
        fti.model_source = "<model />"
        fti.model_file = None

        model_dummy = Model()

        loadString_mock = self.mocker.replace("plone.supermodel.loadString")
        self.expect(loadString_mock(fti.model_source,
                                    policy=u"dexterity")).result(model_dummy)

        self.replay()

        model = fti.lookupModel()
        self.assertIs(model_dummy, model)
        self.assertIs(ITestSchema, fti.lookupSchema())
Exemplo n.º 50
0
    def test_lookupModel_from_string_with_schema(self):
        fti = DexterityFTI('testtype')
        # effectively ignored:
        fti.schema = 'plone.dexterity.tests.schemata.ITestSchema'
        fti.model_source = '<model />'
        fti.model_file = None

        model_dummy = Model()

        loadString_mock = self.mocker.replace('plone.supermodel.loadString')
        self.expect(loadString_mock(fti.model_source,
                                    policy='dexterity')).result(model_dummy)

        self.replay()

        model = fti.lookupModel()
        self.assertIs(model_dummy, model)
        self.assertIs(ITestSchema, fti.lookupSchema())
    def getFileSetter(self, schema):
        portal_type = 'testtype'
        setRoles(self.portal, TEST_USER_ID, ('Manager',))

        # prepare a fti
        fti = DexterityFTI(portal_type)
        fti.klass = 'plone.dexterity.content.Item'
        fti.schema = schema.__identifier__
        self.portal.portal_types._setObject(portal_type, fti)
        register(fti)

        # prepare an item
        item = Item('testitem')
        item.portal_type = portal_type
        self.portal._setObject(item.id, item)
        item = self.portal[item.id]

        return IQuickUploadFileSetter(item)
Exemplo n.º 52
0
    def test_lookupModel_from_string_with_schema(self):
        fti = DexterityFTI(u"testtype")
        # effectively ignored:
        fti.schema = u"plone.dexterity.tests.schemata.ITestSchema"
        fti.model_source = "<model />"
        fti.model_file = None

        model_dummy = Model()

        from plone.supermodel import loadString
        loadString_mock = self.patch_global(loadString,
                                            return_value=model_dummy)

        model = fti.lookupModel()
        self.assertIs(model_dummy, model)
        self.assertIs(ITestSchema, fti.lookupSchema())
        loadString_mock.assert_called_once_with(fti.model_source,
                                                policy=u'dexterity')
 def test_alias_dexterity_object(self):
     tt = getToolByName(self.portal, 'portal_types')
     
     fti = DexterityFTI('collective.alias.test')
     fti.schema = ITest.__identifier__
     
     tt._setObject('collective.alias.test', fti)
     
     self.folder.invokeFactory('collective.alias.test', 't1')
     self.folder['t1'].title = "Dummy title"
     self.folder['t1'].foo = "Foo Bar"
     
     relation = RelationValue(self.intids.getId(self.folder['t1']))
     self.folder.invokeFactory('collective.alias', 'a2', _aliasTarget=relation)
     
     self.failUnless(ITest.providedBy(self.folder['a2']))
     self.assertEquals("Dummy title", self.folder['a2'].title)
     self.assertEquals("Foo Bar", self.folder['a2'].foo)
Exemplo n.º 54
0
    def test_lookupModel_from_string_with_schema(self):
        fti = DexterityFTI(u"testtype")
        # effectively ignored:
        fti.schema = u"plone.dexterity.tests.schemata.ITestSchema"
        fti.model_source = "<model />"
        fti.model_file = None

        model_dummy = Model()

        from plone.supermodel import loadString
        loadString_mock = self.patch_global(
            loadString, return_value=model_dummy)

        model = fti.lookupModel()
        self.assertIs(model_dummy, model)
        self.assertIs(ITestSchema, fti.lookupSchema())
        loadString_mock.assert_called_once_with(
            fti.model_source, policy=u'dexterity')
Exemplo n.º 55
0
    def test_lookupModel_with_schema_policy(self):
        class TestSchemaPolicy(DexteritySchemaPolicy):
            def bases(self, schemaName, tree):
                return (ITestInterface, )

        gsm = getGlobalSiteManager()
        policy = TestSchemaPolicy()
        gsm.registerUtility(policy,
                            plone.supermodel.interfaces.ISchemaPolicy,
                            name=u"test")

        fti = DexterityFTI(u"testtype")
        fti.schema = None
        fti.model_source = '<model xmlns="http://namespaces.plone.org/supermodel/schema"><schema/></model>'
        fti.model_file = None
        fti.schema_policy = u"test"

        model = fti.lookupModel()
        self.assertEqual(True, ITestInterface in model.schemata[''].__bases__)
Exemplo n.º 56
0
    def test_lookupModel_from_string_with_schema(self):
        fti = DexterityFTI('testtype')
        # effectively ignored:
        fti.schema = 'plone.dexterity.tests.schemata.ITestSchema'
        fti.model_source = '<model />'
        fti.model_file = None

        model_dummy = Model()

        loadString_mock = self.mocker.replace('plone.supermodel.loadString')
        self.expect(
            loadString_mock(fti.model_source, policy='dexterity')
        ).result(model_dummy)

        self.replay()

        model = fti.lookupModel()
        self.assertIs(model_dummy, model)
        self.assertIs(ITestSchema, fti.lookupSchema())
Exemplo n.º 57
0
    def test_lookupModel_from_file_with_win32_absolute_path(self):

        fti = DexterityFTI(u"testtype")
        fti.schema = None
        fti.model_source = None
        fti.model_file = r"C:\models\testmodel.xml"

        model_dummy = Model()

        from os.path import isabs, isfile
        self.patch_global(isabs, return_value=True)
        self.patch_global(isfile, return_value=True)

        from plone.supermodel import loadFile
        loadFile_mock = self.patch_global(loadFile, return_value=model_dummy)

        model = fti.lookupModel()
        self.assertIs(model_dummy, model)
        loadFile_mock.assert_called_once_with(
            fti.model_file, reload=True, policy=u"dexterity")
Exemplo n.º 58
0
    def test_alias_dexterity_object(self):
        tt = getToolByName(self.portal, 'portal_types')

        fti = DexterityFTI('collective.alias.test')
        fti.schema = ITest.__identifier__

        tt._setObject('collective.alias.test', fti)

        self.folder.invokeFactory('collective.alias.test', 't1')
        self.folder['t1'].title = "Dummy title"
        self.folder['t1'].foo = "Foo Bar"

        relation = RelationValue(self.intids.getId(self.folder['t1']))
        self.folder.invokeFactory('collective.alias',
                                  'a2',
                                  _aliasTarget=relation)

        self.failUnless(ITest.providedBy(self.folder['a2']))
        self.assertEquals("Dummy title", self.folder['a2'].title)
        self.assertEquals("Foo Bar", self.folder['a2'].foo)