Пример #1
0
    def __call__(self):
        need(IFormResources)
        # Request now provide local by default
        assert hasattr(self.request, 'locale')
        convert_request_form_to_unicode(self.request.form)

        return super(ZopeForm, self).__call__()
Пример #2
0
    def validate(self):
        convert_request_form_to_unicode(self.request.form)
        info = {'success': True}
        fieldname = self.request.form['prefix.field']
        # We need to update the form first, since this is the common
        # place to configure more fields.
        self.context.update()

        try:
            lookup = IFormLookup(self.context).lookup(
                self.request.form['prefix.form'])
        except KeyError:
            info['success'] = False
        else:
            # Look for extractor, extract and validate value.
            for field in lookup.fields():
                extractor = lookup.form.widgetFactory.extractor(field)
                if extractor is not None:
                    if extractor.identifier == fieldname:
                        value, error = extractor.extract()
                        if error is None:
                            error = field.validate(value, self.context)
                        if error is not None:
                            if not IError.providedBy(error):
                                error = Error(title=error, identifier=fieldname)
                            info['success'] = False
                            info['errors'] = serialize_error(self, error)
                        break
            else:
                info['success'] = False
        return self.json_response(info)
Пример #3
0
    def updateForm(self):
        convert_request_form_to_unicode(self.request.form)
        self.update()
        form, action, status = self.updateActions()
        if status is FAILURE:
            # Render correctly the validation errors
            for error in form.formErrors:
                self.send_message(error.title, type="error")
        self.updateWidgets()
        info = {'ifaces': ['popup'],
                'success': status is SUCCESS}
        if status is SUCCESS:
            extra = interfaces.IRESTExtraPayloadProvider(action, None)
            if extra is not None:
                info['extra'] = extra.get_extra_payload(self)
        success_only = interfaces.IRESTSuccessAction.providedBy(action)
        if not (success_only and status == SUCCESS):
            actions = self.renderActions()

            def findDefault(actions):
                candidates = filter(itemgetter('default'), actions)
                if not candidates:
                    candidates = actions
                return candidates[0]['name'] if candidates else None

            info.update(
                {'label': self.translate(self.label),
                 'widgets': self.render(),
                 'prefix': self.prefix,
                 'actions': actions,
                 'url': absoluteURL(self, self.request),
                 'default': findDefault(actions),
                 'validation': not self.novalidation})
        return {'content': info}
Пример #4
0
    def __call__(self):
        convert_request_form_to_unicode(self.request.form)

        self.layout = component.getMultiAdapter(
            (self.request, self.context), ILayout)

        mapply(self.update, (), self.request)
        if self.request.response.getStatus() in (302, 303):
            # A redirect was triggered somewhere in update(). Don't
            # continue processing the form
            return

        self.updateForm()
        if self.request.response.getStatus() in (302, 303):
            return

        return self.layout(self)
Пример #5
0
 def update(self):
     convert_request_form_to_unicode(self.request.form)
     return super(PublicContentProviderForm, self).update()
Пример #6
0
 def update(self):
     convert_request_form_to_unicode(self.request.form)
     return super(PublicViewletForm, self).update()