[Testbot] Plone 5.0 - Python 2.7 - Build # 1537 - Still failing! - 9 failure(s)
jenkins at plone.org
jenkins at plone.org
Thu Feb 13 16:30:27 UTC 2014
-------------------------------------------------------------------------------
Plone 5.0 - Python 2.7 - Build # 1537 - Still Failing!
-------------------------------------------------------------------------------
http://jenkins.plone.org/job/plone-5.0-python-2.7/1537/
-------------------------------------------------------------------------------
CHANGES
-------------------------------------------------------------------------------
Repository: plone.app.contenttypes
Branch: refs/heads/master
Date: 2014-02-13T04:37:55-08:00
Author: Andrew Mleczko (amleczko) <andrew at mleczko.net>
Commit: https://github.com/plone/plone.app.contenttypes/commit/cef87588119e4b24f59a47a359c299b0f321628d
backport richtext behavior from Plone5 branch
Files changed:
A plone/app/contenttypes/behaviors/richtext.py
A plone/app/contenttypes/tests/test_behaviors_richtext.py
M plone/app/contenttypes/behaviors/configure.zcml
M plone/app/contenttypes/profiles/default/types/Collection.xml
M plone/app/contenttypes/profiles/default/types/Document.xml
M plone/app/contenttypes/profiles/default/types/Event.xml
M plone/app/contenttypes/profiles/default/types/News_Item.xml
M plone/app/contenttypes/tests/test_document.py
M plone/app/contenttypes/tests/test_news_item.py
D plone/app/contenttypes/schema/document.xml
D plone/app/contenttypes/schema/event.xml
D plone/app/contenttypes/schema/news_item.xml
diff --git a/plone/app/contenttypes/behaviors/configure.zcml b/plone/app/contenttypes/behaviors/configure.zcml
index d15e4c0..350fe48 100644
--- a/plone/app/contenttypes/behaviors/configure.zcml
+++ b/plone/app/contenttypes/behaviors/configure.zcml
@@ -42,6 +42,15 @@
marker=".collection.ISyndicatableCollection"
/>
+ <plone:behavior
+ title="RichText"
+ description="Adds richtext behavior"
+ provides=".richtext.IRichText"
+ factory=".richtext.RichText"
+ for="plone.dexterity.interfaces.IDexterityContent"
+ marker=".richtext.IRichText"
+ />
+
<utility
component=".collection.MetaDataFieldsVocabularyFactory"
name="plone.app.contenttypes.metadatafields" />
@@ -49,4 +58,4 @@
<adapter factory=".collection.CollectionFeed"
for=".collection.ISyndicatableCollection" />
-</configure>
\ No newline at end of file
+</configure>
diff --git a/plone/app/contenttypes/behaviors/richtext.py b/plone/app/contenttypes/behaviors/richtext.py
new file mode 100644
index 0000000..73e4e57
--- /dev/null
+++ b/plone/app/contenttypes/behaviors/richtext.py
@@ -0,0 +1,30 @@
+# -*- coding: utf-8 -*-
+from plone.autoform.interfaces import IFormFieldProvider
+from plone.dexterity.interfaces import IDexterityContent
+from plone.app.textfield import RichText as RichTextField
+from plone.supermodel import model
+from zope.component import adapts
+from zope.interface import alsoProvides, implements
+
+from plone.app.contenttypes import _
+
+
+class IRichText(model.Schema):
+
+ text = RichTextField(
+ title=_(u'Text', default=u'Text'),
+ description=u"",
+ required=False,
+ )
+ model.primary('text')
+
+
+alsoProvides(IRichText, IFormFieldProvider)
+
+
+class RichText(object):
+ implements(IRichText)
+ adapts(IDexterityContent)
+
+ def __init__(self, context):
+ self.context = context
diff --git a/plone/app/contenttypes/profiles/default/types/Collection.xml b/plone/app/contenttypes/profiles/default/types/Collection.xml
index 9ca1a6c..c51276f 100644
--- a/plone/app/contenttypes/profiles/default/types/Collection.xml
+++ b/plone/app/contenttypes/profiles/default/types/Collection.xml
@@ -19,6 +19,7 @@
<element value="plone.app.dexterity.behaviors.discussion.IAllowDiscussion"/>
<element value="plone.app.dexterity.behaviors.exclfromnav.IExcludeFromNavigation"/>
<element value="plone.app.dexterity.behaviors.metadata.IDublinCore"/>
+ <element value="plone.app.contenttypes.behaviors.richtext.IRichText"/>
<element value="plone.app.relationfield.behavior.IRelatedItems"/>
</property>
diff --git a/plone/app/contenttypes/profiles/default/types/Document.xml b/plone/app/contenttypes/profiles/default/types/Document.xml
index c77907c..27b774e 100644
--- a/plone/app/contenttypes/profiles/default/types/Document.xml
+++ b/plone/app/contenttypes/profiles/default/types/Document.xml
@@ -24,13 +24,11 @@
<element value="plone.app.dexterity.behaviors.discussion.IAllowDiscussion"/>
<element value="plone.app.dexterity.behaviors.exclfromnav.IExcludeFromNavigation"/>
<element value="plone.app.dexterity.behaviors.metadata.IDublinCore"/>
+ <element value="plone.app.contenttypes.behaviors.richtext.IRichText"/>
<element value="plone.app.relationfield.behavior.IRelatedItems"/>
<element value="plone.app.versioningbehavior.behaviors.IVersionable" />
<element value="plone.app.contenttypes.behaviors.tableofcontents.ITableOfContents"/>
</property>
- <property name="schema"></property>
- <property name="model_source"></property>
- <property name="model_file">plone.app.contenttypes.schema:document.xml</property>
<alias from="(Default)" to="(dynamic view)"/>
<alias from="edit" to="@@edit"/>
<alias from="sharing" to="@@sharing"/>
diff --git a/plone/app/contenttypes/profiles/default/types/Event.xml b/plone/app/contenttypes/profiles/default/types/Event.xml
index 0d416a0..9912e42 100644
--- a/plone/app/contenttypes/profiles/default/types/Event.xml
+++ b/plone/app/contenttypes/profiles/default/types/Event.xml
@@ -20,8 +20,6 @@
<!-- Schema, class and security -->
<property name="klass">plone.app.contenttypes.content.Event</property>
<property name="schema"></property>
- <property name="model_source"></property>
- <property name="model_file">plone.app.contenttypes.schema:event.xml</property>
<property name="add_permission">plone.app.contenttypes.addEvent</property>
<!-- Enabled behaviors -->
@@ -34,6 +32,7 @@
<element value="plone.app.event.dx.behaviors.IEventSummary"/>
<element value="plone.app.dexterity.behaviors.metadata.IDublinCore"/>
<element value="plone.app.content.interfaces.INameFromTitle"/>
+ <element value="plone.app.contenttypes.behaviors.richtext.IRichText"/>
<element value="plone.app.dexterity.behaviors.discussion.IAllowDiscussion"/>
<element value="plone.app.dexterity.behaviors.exclfromnav.IExcludeFromNavigation"/>
<element value="plone.app.relationfield.behavior.IRelatedItems"/>
diff --git a/plone/app/contenttypes/profiles/default/types/News_Item.xml b/plone/app/contenttypes/profiles/default/types/News_Item.xml
index 2934368..98c986f 100644
--- a/plone/app/contenttypes/profiles/default/types/News_Item.xml
+++ b/plone/app/contenttypes/profiles/default/types/News_Item.xml
@@ -21,6 +21,7 @@
<property name="klass">plone.app.contenttypes.content.NewsItem</property>
<property name="behaviors">
<element value="plone.app.dexterity.behaviors.metadata.IDublinCore"/>
+ <element value="plone.app.contenttypes.behaviors.richtext.IRichText"/>
<element value="plone.app.content.interfaces.INameFromTitle"/>
<element value="plone.app.dexterity.behaviors.discussion.IAllowDiscussion"/>
<element value="plone.app.dexterity.behaviors.exclfromnav.IExcludeFromNavigation"/>
@@ -28,9 +29,6 @@
<element value="plone.app.contenttypes.behaviors.leadimage.ILeadImage"/>
<element value="plone.app.versioningbehavior.behaviors.IVersionable" />
</property>
- <property name="schema"></property>
- <property name="model_source"></property>
- <property name="model_file">plone.app.contenttypes.schema:news_item.xml</property>
<alias from="(Default)" to="(dynamic view)"/>
<alias from="edit" to="@@edit"/>
<alias from="sharing" to="@@sharing"/>
diff --git a/plone/app/contenttypes/schema/document.xml b/plone/app/contenttypes/schema/document.xml
deleted file mode 100644
index 524fc38..0000000
--- a/plone/app/contenttypes/schema/document.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<model xmlns="http://namespaces.plone.org/supermodel/schema"
- xmlns:marshal="http://namespaces.plone.org/supermodel/marshal"
- xmlns:indexer="http://namespaces.plone.org/supermodel/indexer"
- xmlns:i18n="http://xml.zope.org/namespaces/i18n">
- <schema>
- <field name="text" type="plone.app.textfield.RichText" indexer:searchable="true"
- marshal:primary="true">
- <description />
- <required>False</required>
- <title i18n:translate="">Text</title>
- </field>
- </schema>
-</model>
diff --git a/plone/app/contenttypes/schema/event.xml b/plone/app/contenttypes/schema/event.xml
deleted file mode 100644
index f76eaf8..0000000
--- a/plone/app/contenttypes/schema/event.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<model xmlns="http://namespaces.plone.org/supermodel/schema">
- <schema>
- </schema>
-</model>
\ No newline at end of file
diff --git a/plone/app/contenttypes/schema/news_item.xml b/plone/app/contenttypes/schema/news_item.xml
deleted file mode 100644
index 3a0fdc7..0000000
--- a/plone/app/contenttypes/schema/news_item.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<model xmlns="http://namespaces.plone.org/supermodel/schema"
- xmlns:indexer="http://namespaces.plone.org/supermodel/indexer"
- xmlns:i18n="http://xml.zope.org/namespaces/i18n"
- i18n:domain="plone">
- <schema>
- <field name="text" type="plone.app.textfield.RichText" indexer:searchable="true">
- <description />
- <required>False</required>
- <title>Text</title>
- </field>
- <!--
- <field name="image" type="plone.namedfile.field.NamedBlobImage">
- <description i18n:translate="help_news_image">Will be shown in the news listing, and in the news item itself. Image will be scaled to a sensible size.</description>
- <required>False</required>
- <title i18n:translate="label_news_image">Image</title>
- </field>
- <field name="image_caption" type="zope.schema.TextLine" indexer:searchable="true">
- <description />
- <required>False</required>
- <title i18n:translate="label_image_caption">Image Caption</title>
- </field>
- -->
- </schema>
-</model>
diff --git a/plone/app/contenttypes/tests/test_behaviors_richtext.py b/plone/app/contenttypes/tests/test_behaviors_richtext.py
new file mode 100644
index 0000000..9f0fd20
--- /dev/null
+++ b/plone/app/contenttypes/tests/test_behaviors_richtext.py
@@ -0,0 +1,61 @@
+import unittest2 as unittest
+
+from Products.CMFCore.utils import getToolByName
+from plone.app.dexterity.testing import DEXTERITY_INTEGRATION_TESTING
+from plone.app.testing import TEST_USER_ID, setRoles
+from plone.app.testing import SITE_OWNER_NAME
+from plone.app.testing import SITE_OWNER_PASSWORD
+from plone.testing.z2 import Browser
+from plone.dexterity.fti import DexterityFTI
+
+from plone.app.contenttypes.behaviors.richtext import IRichText
+
+
+class RichTextBase:
+ # subclass here
+ _behaviors = None
+ _portal_type = None
+
+ def _setupFTI(self):
+ fti = DexterityFTI(self._portal_type)
+ self.portal.portal_types._setObject(self._portal_type, fti)
+ fti.klass = 'plone.dexterity.content.Item'
+ fti.behaviors = self._behaviors
+
+
+class RichTextBehaviorTests(RichTextBase, unittest.TestCase):
+ """ basic use cases and tests for richtext behavior"""
+
+ layer = DEXTERITY_INTEGRATION_TESTING
+
+ _behaviors = (
+ 'plone.app.contenttypes.behaviors.richtext.IRichText',)
+ _portal_type = 'SomeDocument'
+
+ def setUp(self):
+ app = self.layer['app']
+ self.portal = self.layer['portal']
+ self.wf = getToolByName(self.portal, "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'])
+ self._setupFTI()
+ self.portal.invokeFactory(self._portal_type, '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 %s:%s' % (SITE_OWNER_NAME, SITE_OWNER_PASSWORD,)
+ )
+
+ def test_richtext_behavior(self):
+ IRichText.providedBy(self.portal.doc1)
+
+
+def test_suite():
+ from unittest import defaultTestLoader
+ return defaultTestLoader.loadTestsFromName(__name__)
diff --git a/plone/app/contenttypes/tests/test_document.py b/plone/app/contenttypes/tests/test_document.py
index 486faa5..405b7c9 100644
--- a/plone/app/contenttypes/tests/test_document.py
+++ b/plone/app/contenttypes/tests/test_document.py
@@ -109,7 +109,7 @@ def test_add_document(self):
.value = "My document"
self.browser.getControl(name='form.widgets.IDublinCore.description')\
.value = "This is my document."
- self.browser.getControl(name='form.widgets.text')\
+ self.browser.getControl(name='form.widgets.IRichText.text')\
.value = "Lorem Ipsum"
self.browser.getControl('Save').click()
self.assertTrue(self.browser.url.endswith('my-document/view'))
diff --git a/plone/app/contenttypes/tests/test_news_item.py b/plone/app/contenttypes/tests/test_news_item.py
index 9985e81..c810cac 100644
--- a/plone/app/contenttypes/tests/test_news_item.py
+++ b/plone/app/contenttypes/tests/test_news_item.py
@@ -136,7 +136,7 @@ def test_add_news_item(self):
.value = "My news item"
self.browser.getControl(name='form.widgets.IDublinCore.description')\
.value = "This is my news item."
- self.browser.getControl(name='form.widgets.text')\
+ self.browser.getControl(name='form.widgets.IRichText.text')\
.value = "Lorem Ipsum"
self.browser.getControl('Save').click()
Repository: plone.app.contenttypes
Branch: refs/heads/master
Date: 2014-02-13T06:05:34-08:00
Author: Philip Bauer (pbauer) <bauer at starzel.de>
Commit: https://github.com/plone/plone.app.contenttypes/commit/a76ffc32766e7849023f32ba777f25ad173db123
Merge pull request #120 from plone/richtext-behavior
backport richtext behavior from Plone5 branch
Files changed:
A plone/app/contenttypes/behaviors/richtext.py
A plone/app/contenttypes/tests/test_behaviors_richtext.py
M plone/app/contenttypes/behaviors/configure.zcml
M plone/app/contenttypes/profiles/default/types/Collection.xml
M plone/app/contenttypes/profiles/default/types/Document.xml
M plone/app/contenttypes/profiles/default/types/Event.xml
M plone/app/contenttypes/profiles/default/types/News_Item.xml
M plone/app/contenttypes/tests/test_document.py
M plone/app/contenttypes/tests/test_news_item.py
D plone/app/contenttypes/schema/document.xml
D plone/app/contenttypes/schema/event.xml
D plone/app/contenttypes/schema/news_item.xml
diff --git a/plone/app/contenttypes/behaviors/configure.zcml b/plone/app/contenttypes/behaviors/configure.zcml
index d15e4c0..350fe48 100644
--- a/plone/app/contenttypes/behaviors/configure.zcml
+++ b/plone/app/contenttypes/behaviors/configure.zcml
@@ -42,6 +42,15 @@
marker=".collection.ISyndicatableCollection"
/>
+ <plone:behavior
+ title="RichText"
+ description="Adds richtext behavior"
+ provides=".richtext.IRichText"
+ factory=".richtext.RichText"
+ for="plone.dexterity.interfaces.IDexterityContent"
+ marker=".richtext.IRichText"
+ />
+
<utility
component=".collection.MetaDataFieldsVocabularyFactory"
name="plone.app.contenttypes.metadatafields" />
@@ -49,4 +58,4 @@
<adapter factory=".collection.CollectionFeed"
for=".collection.ISyndicatableCollection" />
-</configure>
\ No newline at end of file
+</configure>
diff --git a/plone/app/contenttypes/behaviors/richtext.py b/plone/app/contenttypes/behaviors/richtext.py
new file mode 100644
index 0000000..73e4e57
--- /dev/null
+++ b/plone/app/contenttypes/behaviors/richtext.py
@@ -0,0 +1,30 @@
+# -*- coding: utf-8 -*-
+from plone.autoform.interfaces import IFormFieldProvider
+from plone.dexterity.interfaces import IDexterityContent
+from plone.app.textfield import RichText as RichTextField
+from plone.supermodel import model
+from zope.component import adapts
+from zope.interface import alsoProvides, implements
+
+from plone.app.contenttypes import _
+
+
+class IRichText(model.Schema):
+
+ text = RichTextField(
+ title=_(u'Text', default=u'Text'),
+ description=u"",
+ required=False,
+ )
+ model.primary('text')
+
+
+alsoProvides(IRichText, IFormFieldProvider)
+
+
+class RichText(object):
+ implements(IRichText)
+ adapts(IDexterityContent)
+
+ def __init__(self, context):
+ self.context = context
diff --git a/plone/app/contenttypes/profiles/default/types/Collection.xml b/plone/app/contenttypes/profiles/default/types/Collection.xml
index 9ca1a6c..c51276f 100644
--- a/plone/app/contenttypes/profiles/default/types/Collection.xml
+++ b/plone/app/contenttypes/profiles/default/types/Collection.xml
@@ -19,6 +19,7 @@
<element value="plone.app.dexterity.behaviors.discussion.IAllowDiscussion"/>
<element value="plone.app.dexterity.behaviors.exclfromnav.IExcludeFromNavigation"/>
<element value="plone.app.dexterity.behaviors.metadata.IDublinCore"/>
+ <element value="plone.app.contenttypes.behaviors.richtext.IRichText"/>
<element value="plone.app.relationfield.behavior.IRelatedItems"/>
</property>
diff --git a/plone/app/contenttypes/profiles/default/types/Document.xml b/plone/app/contenttypes/profiles/default/types/Document.xml
index c77907c..27b774e 100644
--- a/plone/app/contenttypes/profiles/default/types/Document.xml
+++ b/plone/app/contenttypes/profiles/default/types/Document.xml
@@ -24,13 +24,11 @@
<element value="plone.app.dexterity.behaviors.discussion.IAllowDiscussion"/>
<element value="plone.app.dexterity.behaviors.exclfromnav.IExcludeFromNavigation"/>
<element value="plone.app.dexterity.behaviors.metadata.IDublinCore"/>
+ <element value="plone.app.contenttypes.behaviors.richtext.IRichText"/>
<element value="plone.app.relationfield.behavior.IRelatedItems"/>
<element value="plone.app.versioningbehavior.behaviors.IVersionable" />
<element value="plone.app.contenttypes.behaviors.tableofcontents.ITableOfContents"/>
</property>
- <property name="schema"></property>
- <property name="model_source"></property>
- <property name="model_file">plone.app.contenttypes.schema:document.xml</property>
<alias from="(Default)" to="(dynamic view)"/>
<alias from="edit" to="@@edit"/>
<alias from="sharing" to="@@sharing"/>
diff --git a/plone/app/contenttypes/profiles/default/types/Event.xml b/plone/app/contenttypes/profiles/default/types/Event.xml
index 0d416a0..9912e42 100644
--- a/plone/app/contenttypes/profiles/default/types/Event.xml
+++ b/plone/app/contenttypes/profiles/default/types/Event.xml
@@ -20,8 +20,6 @@
<!-- Schema, class and security -->
<property name="klass">plone.app.contenttypes.content.Event</property>
<property name="schema"></property>
- <property name="model_source"></property>
- <property name="model_file">plone.app.contenttypes.schema:event.xml</property>
<property name="add_permission">plone.app.contenttypes.addEvent</property>
<!-- Enabled behaviors -->
@@ -34,6 +32,7 @@
<element value="plone.app.event.dx.behaviors.IEventSummary"/>
<element value="plone.app.dexterity.behaviors.metadata.IDublinCore"/>
<element value="plone.app.content.interfaces.INameFromTitle"/>
+ <element value="plone.app.contenttypes.behaviors.richtext.IRichText"/>
<element value="plone.app.dexterity.behaviors.discussion.IAllowDiscussion"/>
<element value="plone.app.dexterity.behaviors.exclfromnav.IExcludeFromNavigation"/>
<element value="plone.app.relationfield.behavior.IRelatedItems"/>
diff --git a/plone/app/contenttypes/profiles/default/types/News_Item.xml b/plone/app/contenttypes/profiles/default/types/News_Item.xml
index 2934368..98c986f 100644
--- a/plone/app/contenttypes/profiles/default/types/News_Item.xml
+++ b/plone/app/contenttypes/profiles/default/types/News_Item.xml
@@ -21,6 +21,7 @@
<property name="klass">plone.app.contenttypes.content.NewsItem</property>
<property name="behaviors">
<element value="plone.app.dexterity.behaviors.metadata.IDublinCore"/>
+ <element value="plone.app.contenttypes.behaviors.richtext.IRichText"/>
<element value="plone.app.content.interfaces.INameFromTitle"/>
<element value="plone.app.dexterity.behaviors.discussion.IAllowDiscussion"/>
<element value="plone.app.dexterity.behaviors.exclfromnav.IExcludeFromNavigation"/>
@@ -28,9 +29,6 @@
<element value="plone.app.contenttypes.behaviors.leadimage.ILeadImage"/>
<element value="plone.app.versioningbehavior.behaviors.IVersionable" />
</property>
- <property name="schema"></property>
- <property name="model_source"></property>
- <property name="model_file">plone.app.contenttypes.schema:news_item.xml</property>
<alias from="(Default)" to="(dynamic view)"/>
<alias from="edit" to="@@edit"/>
<alias from="sharing" to="@@sharing"/>
diff --git a/plone/app/contenttypes/schema/document.xml b/plone/app/contenttypes/schema/document.xml
deleted file mode 100644
index 524fc38..0000000
--- a/plone/app/contenttypes/schema/document.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<model xmlns="http://namespaces.plone.org/supermodel/schema"
- xmlns:marshal="http://namespaces.plone.org/supermodel/marshal"
- xmlns:indexer="http://namespaces.plone.org/supermodel/indexer"
- xmlns:i18n="http://xml.zope.org/namespaces/i18n">
- <schema>
- <field name="text" type="plone.app.textfield.RichText" indexer:searchable="true"
- marshal:primary="true">
- <description />
- <required>False</required>
- <title i18n:translate="">Text</title>
- </field>
- </schema>
-</model>
diff --git a/plone/app/contenttypes/schema/event.xml b/plone/app/contenttypes/schema/event.xml
deleted file mode 100644
index f76eaf8..0000000
--- a/plone/app/contenttypes/schema/event.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<model xmlns="http://namespaces.plone.org/supermodel/schema">
- <schema>
- </schema>
-</model>
\ No newline at end of file
diff --git a/plone/app/contenttypes/schema/news_item.xml b/plone/app/contenttypes/schema/news_item.xml
deleted file mode 100644
index 3a0fdc7..0000000
--- a/plone/app/contenttypes/schema/news_item.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<model xmlns="http://namespaces.plone.org/supermodel/schema"
- xmlns:indexer="http://namespaces.plone.org/supermodel/indexer"
- xmlns:i18n="http://xml.zope.org/namespaces/i18n"
- i18n:domain="plone">
- <schema>
- <field name="text" type="plone.app.textfield.RichText" indexer:searchable="true">
- <description />
- <required>False</required>
- <title>Text</title>
- </field>
- <!--
- <field name="image" type="plone.namedfile.field.NamedBlobImage">
- <description i18n:translate="help_news_image">Will be shown in the news listing, and in the news item itself. Image will be scaled to a sensible size.</description>
- <required>False</required>
- <title i18n:translate="label_news_image">Image</title>
- </field>
- <field name="image_caption" type="zope.schema.TextLine" indexer:searchable="true">
- <description />
- <required>False</required>
- <title i18n:translate="label_image_caption">Image Caption</title>
- </field>
- -->
- </schema>
-</model>
diff --git a/plone/app/contenttypes/tests/test_behaviors_richtext.py b/plone/app/contenttypes/tests/test_behaviors_richtext.py
new file mode 100644
index 0000000..9f0fd20
--- /dev/null
+++ b/plone/app/contenttypes/tests/test_behaviors_richtext.py
@@ -0,0 +1,61 @@
+import unittest2 as unittest
+
+from Products.CMFCore.utils import getToolByName
+from plone.app.dexterity.testing import DEXTERITY_INTEGRATION_TESTING
+from plone.app.testing import TEST_USER_ID, setRoles
+from plone.app.testing import SITE_OWNER_NAME
+from plone.app.testing import SITE_OWNER_PASSWORD
+from plone.testing.z2 import Browser
+from plone.dexterity.fti import DexterityFTI
+
+from plone.app.contenttypes.behaviors.richtext import IRichText
+
+
+class RichTextBase:
+ # subclass here
+ _behaviors = None
+ _portal_type = None
+
+ def _setupFTI(self):
+ fti = DexterityFTI(self._portal_type)
+ self.portal.portal_types._setObject(self._portal_type, fti)
+ fti.klass = 'plone.dexterity.content.Item'
+ fti.behaviors = self._behaviors
+
+
+class RichTextBehaviorTests(RichTextBase, unittest.TestCase):
+ """ basic use cases and tests for richtext behavior"""
+
+ layer = DEXTERITY_INTEGRATION_TESTING
+
+ _behaviors = (
+ 'plone.app.contenttypes.behaviors.richtext.IRichText',)
+ _portal_type = 'SomeDocument'
+
+ def setUp(self):
+ app = self.layer['app']
+ self.portal = self.layer['portal']
+ self.wf = getToolByName(self.portal, "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'])
+ self._setupFTI()
+ self.portal.invokeFactory(self._portal_type, '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 %s:%s' % (SITE_OWNER_NAME, SITE_OWNER_PASSWORD,)
+ )
+
+ def test_richtext_behavior(self):
+ IRichText.providedBy(self.portal.doc1)
+
+
+def test_suite():
+ from unittest import defaultTestLoader
+ return defaultTestLoader.loadTestsFromName(__name__)
diff --git a/plone/app/contenttypes/tests/test_document.py b/plone/app/contenttypes/tests/test_document.py
index 486faa5..405b7c9 100644
--- a/plone/app/contenttypes/tests/test_document.py
+++ b/plone/app/contenttypes/tests/test_document.py
@@ -109,7 +109,7 @@ def test_add_document(self):
.value = "My document"
self.browser.getControl(name='form.widgets.IDublinCore.description')\
.value = "This is my document."
- self.browser.getControl(name='form.widgets.text')\
+ self.browser.getControl(name='form.widgets.IRichText.text')\
.value = "Lorem Ipsum"
self.browser.getControl('Save').click()
self.assertTrue(self.browser.url.endswith('my-document/view'))
diff --git a/plone/app/contenttypes/tests/test_news_item.py b/plone/app/contenttypes/tests/test_news_item.py
index 9985e81..c810cac 100644
--- a/plone/app/contenttypes/tests/test_news_item.py
+++ b/plone/app/contenttypes/tests/test_news_item.py
@@ -136,7 +136,7 @@ def test_add_news_item(self):
.value = "My news item"
self.browser.getControl(name='form.widgets.IDublinCore.description')\
.value = "This is my news item."
- self.browser.getControl(name='form.widgets.text')\
+ self.browser.getControl(name='form.widgets.IRichText.text')\
.value = "Lorem Ipsum"
self.browser.getControl('Save').click()
Repository: plone.app.contenttypes
Branch: refs/heads/master
Date: 2014-02-13T07:44:08-08:00
Author: Bo Simonsen (bosim) <bo at geekworld.dk>
Commit: https://github.com/plone/plone.app.contenttypes/commit/7182d5aa99a4f7617d9f5d55ddc7116c35975a55
Added condition on Archetypes warning viewlet to ensure the product will work for Dexterity only sites.
Files changed:
M plone/app/contenttypes/browser/configure.zcml
diff --git a/plone/app/contenttypes/browser/configure.zcml b/plone/app/contenttypes/browser/configure.zcml
index f2543b6..cad2eab 100644
--- a/plone/app/contenttypes/browser/configure.zcml
+++ b/plone/app/contenttypes/browser/configure.zcml
@@ -2,6 +2,7 @@
xmlns="http://namespaces.zope.org/zope"
xmlns:browser="http://namespaces.zope.org/browser"
xmlns:plone="http://namespaces.plone.org/plone"
+ xmlns:zcml="http://namespaces.zope.org/zcml"
i18n_domain="plone">
<include package="plone.app.contentmenu" />
@@ -241,15 +242,17 @@
allowed_interface="plone.app.contenttypes.browser.utils.IUtils"
/>
- <browser:viewlet
- name="archetypes_warning_viewlet"
- for="Products.Archetypes.interfaces.base.IBaseObject"
- manager="plone.app.layout.viewlets.interfaces.IAboveContent"
- class=".viewlets.ATWarningViewlet"
- template="templates/archetypes_warning_viewlet.pt"
- layer="plone.app.contenttypes.interfaces.IPloneAppContenttypesLayer"
- permission="cmf.ModifyPortalContent" />
-
+ <configure zcml:condition="installed Products.Archetypes">
+ <browser:viewlet
+ name="archetypes_warning_viewlet"
+ for="Products.Archetypes.interfaces.base.IBaseObject"
+ manager="plone.app.layout.viewlets.interfaces.IAboveContent"
+ class=".viewlets.ATWarningViewlet"
+ template="templates/archetypes_warning_viewlet.pt"
+ layer="plone.app.contenttypes.interfaces.IPloneAppContenttypesLayer"
+ permission="cmf.ModifyPortalContent"
+ />
+ </configure>
<!-- Query string widget -->
<adapter factory=".widgets.QueryStringFieldWidget" />
-------------------------------------------------------------------------------
-------------- next part --------------
A non-text attachment was scrubbed...
Name: CHANGES.log
Type: application/octet-stream
Size: 28874 bytes
Desc: not available
URL: <http://lists.plone.org/pipermail/plone-testbot/attachments/20140213/07b7ee33/attachment-0002.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: build.log
Type: application/octet-stream
Size: 136685 bytes
Desc: not available
URL: <http://lists.plone.org/pipermail/plone-testbot/attachments/20140213/07b7ee33/attachment-0003.obj>
More information about the Testbot
mailing list