def generateBindings():
     for name in bindingNames:
         bnd = configurable.getBinding(context, name)
         renderer = iformless.IBindingRenderer(bnd,
                                               defaultBindingRenderer)
         renderer.isGrouped = True
         renderer.needsSkin = True
         yield invisible(data=bnd, render=renderer, key=name)
Esempio n. 2
0
 def _callback(binding):
     renderer = iformless.IBindingRenderer(binding, defaultBindingRenderer)
     try:
         binding_pattern = tag.patternGenerator( 'freeform-form!!%s' % name )
     except NodeNotFound:
         try:
             binding_pattern = tag.patternGenerator( 'freeform-form' )
         except NodeNotFound:
             binding_pattern = freeformDefaultForm
             
     if binding_pattern is freeformDefaultForm:
         renderer.needsSkin = True
     return binding_pattern(data=binding, render=renderer, key=name)
Esempio n. 3
0
    def test_2_renderPropertyBinding(self):
        binding = formless.Property('goodbye', formless.String(
            label="Goodbye",
            description="Goodbye cruel world"))

        # Look up an IBindingRenderer, which will render the form and the typed
        renderer = iformless.IBindingRenderer(binding)
        def later(val):
            self.assertSubstring('<form ', val)
            self.assertSubstring('<input name="change" type="submit"', val)
            self.assertSubstring('name="goodbye"', val)
            self.assertSubstring('Goodbye', val)
            self.assertSubstring('Goodbye cruel world', val)
        return self.render(tags.invisible(data=binding, render=renderer)).addCallback(later)
Esempio n. 4
0
    def test_1_renderWithDefaultValues(self):
        binding = formless.MethodBinding('haveFun', formless.Method(
            returnValue=None,
            arguments=[formless.Argument('funValue', formless.Integer(label="Fun Value", default=0))]
        ))

        def setupCtx(ctx):
            ctx.locate(iformless.IFormDefaults).setDefault('funValue', 15)
            return ctx

        renderer = iformless.IBindingRenderer(binding)
        def later(val):
            self.failIfSubstring('0', val)
            self.assertSubstring('15', val)
        return self.render(tags.invisible(data=binding, render=renderer), setupContext=setupCtx).addCallback(
            later)
Esempio n. 5
0
    def test_3_renderMethodBinding(self):
        binding = formless.MethodBinding('doit', formless.Method(
            returnValue=None,
            arguments=[formless.Argument('foo', formless.String(label="Foo"))],
            label="Do It",
            description="Do it to 'em all"))

        renderer = iformless.IBindingRenderer(binding)

        def later(val):
            self.assertSubstring('<form ', val)
            self.assertSubstring('Do It', val)
            self.assertSubstring("Do it to 'em all", val)
            self.assertSubstring("Foo", val)
            self.assertSubstring('name="foo"', val)
        return self.render(tags.invisible(data=binding, render=renderer)).addCallback(later)
Esempio n. 6
0
        def _innerFormRenderIt(context, data):
            tag = context.tag
            # Remember the key for when the form post URL is generated.
            context.remember(configurableKey, iformless.IConfigurableKey)
            if configurable is None:
                warnings.warn(
                    "No configurable was found which provides enough type information for freeform to be able to render forms; %r"
                    % (cf, ))
                yield ''
                return
            context.remember(configurable, iformless.IConfigurable)

            formDefaults = iformless.IFormDefaults(context)

            available = configurable.getBindingNames(context)
            bindings = []

            default_binding_pattern = None

            for name in available:
                if bindingDefaults is not None:
                    if name not in bindingDefaults:
                        continue
                    defs = formDefaults.getAllDefaults(name)
                    defs.update(bindingDefaults[name])

                bnd = configurable.getBinding(context, name)
                renderer = iformless.IBindingRenderer(bnd,
                                                      defaultBindingRenderer,
                                                      persist=False)
                try:
                    binding_pattern = tag.patternGenerator(
                        'freeform-form!!%s' % name)
                except NodeNotFound:
                    if default_binding_pattern is None:
                        try:
                            default_binding_pattern = tag.patternGenerator(
                                'freeform-form')
                        except NodeNotFound:
                            default_binding_pattern = freeformDefaultForm
                    binding_pattern = default_binding_pattern
                if binding_pattern is freeformDefaultForm:
                    renderer.needsSkin = True
                yield binding_pattern(data=bnd, render=renderer, key=name)