def testWidgetAllowedTypesField(self): from zope.interface import Interface, implements from plone.app.textfield import RichText from zope.publisher.browser import TestRequest from Products.CMFCore.PortalContent import PortalContent from plone.app.textfield.widget import RichTextWidget from z3c.form.widget import FieldWidget class IWithText(Interface): text = RichText(title=u"Text", default_mime_type='text/structured', output_mime_type='text/html', allowed_mime_types=('text/structured', 'text/html')) class Context(PortalContent): implements(IWithText) text = None request = TestRequest() widget = FieldWidget(IWithText['text'], RichTextWidget(request)) widget.update() self.portal['portal_properties']['site_properties']._setPropValue( 'forbidden_contenttypes', ['text/structured']) allowed = widget.allowedMimeTypes() self.failUnless('text/html' in allowed) self.failUnless('text/structured' in allowed)
def testWidgetExtract(self): from zope.interface import Interface, implements from plone.app.textfield import RichText from zope.publisher.browser import TestRequest from Products.CMFCore.PortalContent import PortalContent from plone.app.textfield.widget import RichTextWidget from z3c.form.widget import FieldWidget from z3c.form.interfaces import NOVALUE class IWithText(Interface): text = RichText(title=u"Text", default_mime_type='text/structured', output_mime_type='text/html') class Context(PortalContent): implements(IWithText) text = None request = TestRequest() widget = FieldWidget(IWithText['text'], RichTextWidget(request)) widget.update() value = widget.extract() self.assertEquals(NOVALUE, value) request.form['%s' % widget.name] = u"Sample **text**" request.form['%s.mimeType' % widget.name] = 'text/structured' value = widget.extract() self.assertEquals(u"<p>Sample <strong>text</strong></p>", value.output.strip())
def testWidgetConverter(self): from zope.interface import Interface from plone.app.textfield import RichText from zope.publisher.browser import TestRequest from plone.app.textfield.value import RichTextValue from plone.app.textfield.widget import RichTextWidget from plone.app.textfield.widget import RichTextConverter from z3c.form.widget import FieldWidget _marker = object() class IWithText(Interface): text = RichText(title=u"Text", default_mime_type='text/structured', output_mime_type='text/html', missing_value=_marker) request = TestRequest() widget = FieldWidget(IWithText['text'], RichTextWidget(request)) widget.update() converter = RichTextConverter(IWithText['text'], widget) self.assertTrue(converter.toFieldValue(u'') is _marker) self.assertTrue(converter.toFieldValue(RichTextValue(u'')) is _marker)
def testWidgetAllowedTypesField(self): from zope.interface import Interface, implementer from plone.app.textfield import RichText from zope.publisher.browser import TestRequest from Products.CMFCore.PortalContent import PortalContent from plone.app.textfield.widget import RichTextWidget from z3c.form.widget import FieldWidget class IWithText(Interface): text = RichText( title=u"Text", default_mime_type='text/structured', output_mime_type='text/html', allowed_mime_types=( 'text/structured', 'text/html')) @implementer(IWithText) class Context(PortalContent): text = None request = TestRequest() widget = FieldWidget(IWithText['text'], RichTextWidget(request)) widget.update() self.portal['portal_properties']['site_properties']._setPropValue( 'forbidden_contenttypes', ['text/structured']) allowed = widget.allowedMimeTypes() self.failUnless('text/html' in allowed) self.failUnless('text/structured' in allowed)
def testWidgetExtract(self): from zope.interface import Interface, implementer from plone.app.textfield import RichText from zope.publisher.browser import TestRequest from Products.CMFCore.PortalContent import PortalContent from plone.app.textfield.widget import RichTextWidget from z3c.form.widget import FieldWidget from z3c.form.interfaces import NOVALUE class IWithText(Interface): text = RichText(title=u"Text", default_mime_type='text/structured', output_mime_type='text/html') @implementer(IWithText) class Context(PortalContent): text = None request = TestRequest() widget = FieldWidget(IWithText['text'], RichTextWidget(request)) widget.update() value = widget.extract() self.assertEquals(NOVALUE, value) request.form['%s' % widget.name] = u"Sample **text**" request.form['%s.mimeType' % widget.name] = 'text/structured' value = widget.extract() self.assertEquals( u"<p>Sample <strong>text</strong></p>", value.output.strip())
def testRichTextAreaWidgetConverter(self): from zope.interface import Interface from plone.app.textfield import RichText from zope.publisher.browser import TestRequest from plone.app.textfield.value import RichTextValue from plone.app.textfield.widget import RichTextWidget from plone.app.textfield.widget import RichTextAreaConverter from z3c.form.widget import FieldWidget _marker = object() class IWithText(Interface): text = RichText(title=u"Text", default_mime_type='text/structured', output_mime_type='text/html', missing_value=_marker) request = TestRequest() widget = FieldWidget(IWithText['text'], RichTextWidget(request)) widget.update() converter = RichTextAreaConverter(IWithText['text'], widget) # Test with None input. self.assertRaises(ValueError, converter.toFieldValue, None) self.assertTrue(converter.toWidgetValue(None) is None) # Test with string input. self.assertTrue(converter.toFieldValue('') is _marker) self.assertRaises(ValueError, converter.toFieldValue, b'Foo') self.assertRaises(ValueError, converter.toWidgetValue, b'') self.assertRaises(ValueError, converter.toWidgetValue, b'Foo') # Test with unicode input. self.assertTrue(converter.toFieldValue(u'') is _marker) self.assertEqual(converter.toFieldValue(u'Foo').raw, u'Foo') self.assertTrue( isinstance(converter.toFieldValue(u'Foo'), RichTextValue) ) self.assertEqual(converter.toWidgetValue(u''), u'') self.assertEqual(converter.toWidgetValue(u'Foo'), u'Foo') # Test with RichTextValue input. self.assertTrue(converter.toFieldValue(RichTextValue(u'')) is _marker) rich_text = RichTextValue(u'Foo') self.assertEqual(converter.toFieldValue(rich_text), rich_text) self.assertEqual(converter.toFieldValue(rich_text).raw, u'Foo') self.assertEqual(converter.toWidgetValue(rich_text), u'Foo')
def testRichTextAreaWidgetConverter(self): from zope.interface import Interface from plone.app.textfield import RichText from zope.publisher.browser import TestRequest from plone.app.textfield.value import RichTextValue from plone.app.textfield.widget import RichTextWidget from plone.app.textfield.widget import RichTextAreaConverter from z3c.form.widget import FieldWidget _marker = object() class IWithText(Interface): text = RichText(title=u"Text", default_mime_type='text/structured', output_mime_type='text/html', missing_value=_marker) request = TestRequest() widget = FieldWidget(IWithText['text'], RichTextWidget(request)) widget.update() converter = RichTextAreaConverter(IWithText['text'], widget) # Test with None input. self.assertRaises(ValueError, converter.toFieldValue, None) self.assertTrue(converter.toWidgetValue(None) is None) # Test with string input. self.assertTrue(converter.toFieldValue('') is _marker) self.assertRaises(ValueError, converter.toFieldValue, b'Foo') self.assertRaises(ValueError, converter.toWidgetValue, b'') self.assertRaises(ValueError, converter.toWidgetValue, b'Foo') # Test with unicode input. self.assertTrue(converter.toFieldValue(u'') is _marker) self.assertEqual(converter.toFieldValue(u'Foo').raw, u'Foo') self.assertTrue( isinstance(converter.toFieldValue(u'Foo'), RichTextValue)) self.assertEqual(converter.toWidgetValue(u''), u'') self.assertEqual(converter.toWidgetValue(u'Foo'), u'Foo') # Test with RichTextValue input. self.assertTrue(converter.toFieldValue(RichTextValue(u'')) is _marker) rich_text = RichTextValue(u'Foo') self.assertEqual(converter.toFieldValue(rich_text), rich_text) self.assertEqual(converter.toFieldValue(rich_text).raw, u'Foo') self.assertEqual(converter.toWidgetValue(rich_text), u'Foo')
def test_widget_params(self): from plone.app.z3cform.widget import RichTextWidget widget = FieldWidget(self.field, RichTextWidget(self.request)) # set the context so we can get tinymce settings widget.context = self.portal widget.update() base_args = widget._base_args() self.assertEqual(base_args['name'], 'text') self.assertEqual(base_args['value'], u'') self.assertEqual(base_args['pattern'], 'tinymce') self.assertEqual(base_args['pattern_options']['prependToUrl'], 'resolveuid/') self.assertEqual( base_args['pattern_options']['upload']['relativePath'], '@@fileUpload')
def test_widget_params(self): from plone.app.widgets.dx import RichTextWidget widget = FieldWidget(self.field, RichTextWidget(self.request)) widget.update() base_args = widget._base_args() self.assertEqual(base_args['name'], 'text') self.assertEqual(base_args['value'], u'') self.assertEqual(base_args['pattern'], 'tinymce') if PLONE50: self.assertEqual(base_args['pattern_options'], {}) else: self.assertEqual(base_args['pattern_options']['prependToUrl'], 'resolveuid/') self.assertEqual(base_args['pattern_options']['prependToUrl'], 'resolveuid/') self.assertEqual(base_args['pattern_options']['anchorSelector'], self.portal.portal_tinymce.anchor_selector)
def test_widget_params(self): from plone.app.widgets.dx import RichTextWidget widget = FieldWidget(self.field, RichTextWidget(self.request)) # set the context so we can get tinymce settings widget.context = self.portal widget.update() base_args = widget._base_args() self.assertEqual(base_args['name'], 'text') self.assertEqual(base_args['value'], u'') self.assertEqual(base_args['pattern'], 'tinymce') self.assertEqual(base_args['pattern_options']['prependToUrl'], 'resolveuid/') self.assertEqual(base_args['pattern_options']['rel_upload_path'], '@@fileUpload') if not PLONE50: self.assertEqual(base_args['pattern_options']['anchorSelector'], self.portal.portal_tinymce.anchor_selector)
def test_html(self): class IWithText(Interface): text = XMLText(title=u"Text") class Context(PortalContent): implements(IWithText) text = None widget = FieldWidget(IWithText['text'], XMLTextWidget(self.request)) widget.update() value = widget.extract() self.assertEquals(NOVALUE, value) self.request.form['%s' % widget.name] = u"<html><body>test</body></html>" self.request.form['%s.mimeType' % widget.name] = 'text/xml' widget.update() self.assertEquals(widget.html(), '<pre><html>\n <body>test</body>\n</html>\n</pre>')
def test_converter(self): _marker = object() class IWithText(Interface): text = XMLText(title=u"Text", missing_value = _marker) widget = FieldWidget(IWithText['text'], XMLTextWidget(self.request)) widget.update() converter = XMLTextConverter(IWithText['text'], widget) self.assertTrue(converter.toFieldValue(u'') is _marker) self.assertTrue(converter.toFieldValue(XMLTextValue(u'')) is _marker) self.assertEquals(converter.toWidgetValue(None), None) self.assertTrue(IXMLTextValue.providedBy( converter.toWidgetValue(XMLTextValue(u'')))) self.request.form['%s' % widget.name] = u"<html><body>test</body></html>" self.request.form['%s.mimeType' % widget.name] = 'text/xml' widget.update() self.assertTrue(IXMLTextValue.providedBy( converter.toWidgetValue(u"<html><body>test</body></html>"))) with self.assertRaises(ValueError): converter.toWidgetValue(int)
def DateFieldWidget(field, request): widget = FieldWidget(field, DateWidget(request)) widget.years_range = (-100, 10) widget.update() return widget