def test_read_multiple(self):
        field_node1 = etree.Element('field')
        field_node1.set(ns("widget", self.namespace),
                        "z3c.form.browser.password.PasswordFieldWidget")
        field_node1.set(ns("mode", self.namespace), "hidden")
        field_node1.set(ns("omitted", self.namespace), "true")
        field_node1.set(ns("before", self.namespace), "somefield")

        field_node2 = etree.Element('field')
        field_node2.set(ns("mode", self.namespace), "display")
        field_node2.set(ns("omitted", self.namespace), "yes")

        class IDummy(Interface):
            dummy1 = zope.schema.TextLine(title=u"dummy1")
            dummy2 = zope.schema.TextLine(title=u"dummy2")

        handler = FormSchema()
        handler.read(field_node1, IDummy, IDummy['dummy1'])
        handler.read(field_node2, IDummy, IDummy['dummy2'])

        self.assertEquals(
            {'dummy1': 'z3c.form.browser.password.PasswordFieldWidget'},
            IDummy.getTaggedValue(WIDGETS_KEY))
        self.assertEquals([(Interface, 'dummy1', 'true'),
                           (Interface, 'dummy2', 'yes')],
                          IDummy.getTaggedValue(OMITTED_KEY))
        self.assertEquals([(Interface, 'dummy1', 'hidden'),
                           (Interface, 'dummy2', 'display')],
                          IDummy.getTaggedValue(MODES_KEY))
        self.assertEquals([(
            'dummy1',
            'before',
            'somefield',
        )], IDummy.getTaggedValue(ORDER_KEY))
    def test_read(self):
        field_node = etree.Element('field')
        field_node.set(ns("widget", self.namespace),
                       "z3c.form.browser.password.PasswordFieldWidget")
        field_node.set(ns("mode", self.namespace), "hidden")
        field_node.set(ns("omitted", self.namespace), "true")
        field_node.set(ns("before", self.namespace), "somefield")
        field_node.set(ns("validator", self.namespace),
                       "plone.autoform.tests.test_utils.TestValidator")

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

        handler = FormSchema()
        handler.read(field_node, IDummy, IDummy['dummy'])

        self.assertEquals(
            {'dummy': 'z3c.form.browser.password.PasswordFieldWidget'},
            IDummy.getTaggedValue(WIDGETS_KEY))
        self.assertEquals([(Interface, 'dummy', 'true')],
                          IDummy.getTaggedValue(OMITTED_KEY))
        self.assertEquals([(Interface, 'dummy', 'hidden')],
                          IDummy.getTaggedValue(MODES_KEY))
        self.assertEquals([(
            'dummy',
            'before',
            'somefield',
        )], IDummy.getTaggedValue(ORDER_KEY))
        validator = getMultiAdapter((None, None, None, IDummy['dummy'], None),
                                    IValidator)
        from plone.autoform.tests.test_utils import TestValidator
        assert isinstance(validator, TestValidator)
    def test_write_values_with_interfaces(self):
        field_node1 = etree.Element('field')
        field_node2 = etree.Element('field')

        class IDummy(Interface):
            dummy1 = zope.schema.TextLine(title=u"dummy1")
            dummy2 = zope.schema.TextLine(title=u"dummy2")

        modes_values = [(IForm, u'dummy1', 'hidden'),
                        (IForm, u'dummy2', 'hidden'),
                        (IEditForm, u'dummy2', 'display')]
        IDummy.setTaggedValue(MODES_KEY, modes_values)
        omitted_values = [(IForm, u'dummy1', 'true'),
                          (IForm, u'dummy2', 'true'),
                          (IEditForm, u'dummy2', 'false')]
        IDummy.setTaggedValue(OMITTED_KEY, omitted_values)

        handler = FormSchema()
        handler.write(field_node1, IDummy, IDummy['dummy1'])
        handler.write(field_node2, IDummy, IDummy['dummy2'])

        self.assertEquals("z3c.form.interfaces.IForm:hidden",
                          field_node1.get(ns("mode", self.namespace)))
        self.assertEquals("z3c.form.interfaces.IForm:true",
                          field_node1.get(ns("omitted", self.namespace)))

        self.assertEquals(
            "z3c.form.interfaces.IForm:hidden z3c.form.interfaces.IEditForm:display",
            field_node2.get(ns("mode", self.namespace)))
        self.assertEquals(
            "z3c.form.interfaces.IForm:true z3c.form.interfaces.IEditForm:false",
            field_node2.get(ns("omitted", self.namespace)))
    def test_write(self):
        field_node = etree.Element('field')

        class IDummy(Interface):
            dummy = zope.schema.TextLine(title=u"dummy1")

        IDummy.setTaggedValue(WIDGETS_KEY, {'dummy': 'SomeWidget'})
        IDummy.setTaggedValue(OMITTED_KEY, [(Interface, 'dummy', 'true')])
        IDummy.setTaggedValue(MODES_KEY, [(Interface, 'dummy', 'hidden')])
        IDummy.setTaggedValue(ORDER_KEY, [(
            'dummy',
            'before',
            'somefield',
        )])

        handler = FormSchema()
        handler.write(field_node, IDummy, IDummy['dummy'])

        widget_node = field_node.find(ns('widget', self.namespace))
        self.assertEquals("SomeWidget", widget_node.get('type'))
        self.assertEquals("true", field_node.get(ns("omitted",
                                                    self.namespace)))
        self.assertEquals("hidden", field_node.get(ns("mode", self.namespace)))
        self.assertEquals("somefield",
                          field_node.get(ns("before", self.namespace)))
    def test_read_values_with_interfaces(self):
        field_node1 = etree.Element('field')
        field_node1.set(ns("mode", self.namespace),
                        "z3c.form.interfaces.IForm:hidden")
        field_node1.set(ns("omitted", self.namespace),
                        "z3c.form.interfaces.IForm:true")

        field_node2 = etree.Element('field')
        field_node2.set(
            ns("mode", self.namespace),
            "z3c.form.interfaces.IForm:hidden z3c.form.interfaces.IEditForm:display"
        )
        field_node2.set(
            ns("omitted", self.namespace),
            "z3c.form.interfaces.IForm:true z3c.form.interfaces.IEditForm:false"
        )

        class IDummy(Interface):
            dummy1 = zope.schema.TextLine(title=u"dummy1")
            dummy2 = zope.schema.TextLine(title=u"dummy2")

        handler = FormSchema()
        handler.read(field_node1, IDummy, IDummy['dummy1'])
        handler.read(field_node2, IDummy, IDummy['dummy2'])

        expected_modes = [(IForm, u'dummy1', 'hidden'),
                          (IForm, u'dummy2', 'hidden'),
                          (IEditForm, u'dummy2', 'display')]
        self.assertEquals(expected_modes, IDummy.queryTaggedValue(MODES_KEY))
        expected_omitted = [(IForm, u'dummy1', 'true'),
                            (IForm, u'dummy2', 'true'),
                            (IEditForm, u'dummy2', 'false')]
        self.assertEquals(expected_omitted,
                          IDummy.queryTaggedValue(OMITTED_KEY))
Beispiel #6
0
    def test_read_parameterized_widget_default(self):
        from plone.autoform.widgets import ParameterizedWidget

        param_node = etree.Element('klass')
        param_node.text = 'custom'
        param2_node = etree.Element('placeholder')
        param2_node.text = 'help'
        widget_node = etree.Element(ns('widget', self.namespace))
        widget_node.append(param_node)
        widget_node.append(param2_node)
        field_node = etree.Element('field')
        field_node.append(widget_node)

        class IDummy(Interface):
            foo = zope.schema.TextLine(title=u'foo')

        handler = FormSchema()
        handler.read(field_node, IDummy, IDummy['foo'])

        widgets = IDummy.queryTaggedValue(WIDGETS_KEY)
        self.assertTrue(isinstance(widgets['foo'], ParameterizedWidget))
        self.assertTrue(widgets['foo'].widget_factory is None)
        self.assertIn('klass', widgets['foo'].params)
        self.assertEqual(widgets['foo'].params['klass'], 'custom')
        self.assertIn('placeholder', widgets['foo'].params)
        self.assertEqual(widgets['foo'].params['placeholder'], 'help')
    def test_read_no_data(self):
        field_node = etree.Element('field')

        class IDummy(Interface):
            dummy = zope.schema.TextLine(title=u"dummy1")

        handler = FormSchema()
        handler.read(field_node, IDummy, IDummy['dummy'])

        self.assertEquals(None, IDummy.queryTaggedValue(WIDGETS_KEY))
        self.assertEquals(None, IDummy.queryTaggedValue(OMITTED_KEY))
        self.assertEquals(None, IDummy.queryTaggedValue(MODES_KEY))
        self.assertEquals(None, IDummy.queryTaggedValue(ORDER_KEY))
    def test_write_no_data(self):
        field_node = etree.Element('field')

        class IDummy(Interface):
            dummy = zope.schema.TextLine(title=u"dummy1")

        handler = FormSchema()
        handler.write(field_node, IDummy, IDummy['dummy'])

        self.assertEquals(None, field_node.find(ns("widget", self.namespace)))
        self.assertEquals(None, field_node.get(ns("omitted", self.namespace)))
        self.assertEquals(None, field_node.get(ns("mode", self.namespace)))
        self.assertEquals(None, field_node.get(ns("before", self.namespace)))
    def test_write_parameterized_widget_default(self):
        from plone.autoform.widgets import ParameterizedWidget
        pw = ParameterizedWidget(None)

        class IDummy(Interface):
            dummy1 = zope.schema.Text(title=u'dummy1')

        IDummy.setTaggedValue(WIDGETS_KEY, {'dummy1': pw})

        fieldNode = etree.Element('field')
        handler = FormSchema()
        handler.write(fieldNode, IDummy, IDummy['dummy1'])

        self.assertEquals(etree.tostring(fieldNode), '<field/>')
    def test_write_parameterized_widget_default_with_handler(self):
        from plone.autoform.widgets import ParameterizedWidget
        pw = ParameterizedWidget(None, klass='custom')

        class IDummy(Interface):
            dummy1 = zope.schema.Text(title=u'dummy1')

        IDummy.setTaggedValue(WIDGETS_KEY, {'dummy1': pw})

        fieldNode = etree.Element('field')
        handler = FormSchema()
        handler.write(fieldNode, IDummy, IDummy['dummy1'])

        self.assertEquals(
            etree.tostring(fieldNode),
            '<field><ns0:widget xmlns:ns0="http://namespaces.plone.org/supermodel/form">'
            '<klass>custom</klass></ns0:widget></field>')
Beispiel #11
0
    def test_write_parameterized_widget_string(self):
        from plone.autoform.widgets import ParameterizedWidget
        pw = ParameterizedWidget('foo')

        class IDummy(Interface):
            dummy1 = zope.schema.Text(title=u'dummy1')

        IDummy.setTaggedValue(WIDGETS_KEY, {'dummy1': pw})

        fieldNode = etree.Element('field')
        handler = FormSchema()
        handler.write(fieldNode, IDummy, IDummy['dummy1'])

        self.assertEqual(
            etree.tostring(fieldNode), '<field><ns0:widget'
            ' xmlns:ns0="http://namespaces.plone.org/supermodel/form"'
            ' type="foo"/></field>')
Beispiel #12
0
    def test_write_partial(self):
        field_node = etree.Element('field')

        class IDummy(Interface):
            dummy = zope.schema.TextLine(title=u'dummy1')

        IDummy.setTaggedValue(WIDGETS_KEY, {'dummy': 'SomeWidget'})
        IDummy.setTaggedValue(OMITTED_KEY, [(Interface, 'dummy2', 'true')])
        IDummy.setTaggedValue(MODES_KEY, [(Interface, 'dummy', 'display'),
                                          (Interface, 'dummy2', 'hidden')])
        IDummy.setTaggedValue(ORDER_KEY, [])

        handler = FormSchema()
        handler.write(field_node, IDummy, IDummy['dummy'])

        widget_node = field_node.find(ns('widget', self.namespace))
        self.assertEqual('SomeWidget', widget_node.get('type'))
        self.assertEqual(None, field_node.get(ns('omitted', self.namespace)))
        self.assertEqual('display', field_node.get(ns('mode', self.namespace)))
        self.assertEqual(None, field_node.get(ns('before', self.namespace)))
    def test_read_parameterized_widget(self):
        from plone.autoform.widgets import ParameterizedWidget

        param_node = etree.Element('klass')
        param_node.text = 'custom'
        widget_node = etree.Element(ns('widget', self.namespace))
        widget_node.set(
            'type', 'plone.autoform.tests.test_supermodel_handler.DummyWidget')
        widget_node.append(param_node)
        field_node = etree.Element('field')
        field_node.append(widget_node)

        class IDummy(Interface):
            foo = zope.schema.TextLine(title=u'foo')

        handler = FormSchema()
        handler.read(field_node, IDummy, IDummy['foo'])

        widgets = IDummy.queryTaggedValue(WIDGETS_KEY)
        self.assertTrue(isinstance(widgets['foo'], ParameterizedWidget))
        self.assertTrue(widgets['foo'].widget_factory is DummyWidget)
        self.assertEqual(widgets['foo'].params, {'klass': 'custom'})