Example #1
0
    def computeValue(self):
        # First lookup the request
        ignoreRequest = getValue(self.component, 'ignoreRequest', self.form)
        if not ignoreRequest:
            extractor = self.form.widgetFactory.extractor(self.component)
            if extractor is not None:
                value = extractor.extractRaw()
                if value:
                    return self.prepareRequestValue(value, extractor)

        # After, the context
        ignoreContent = getValue(self.component, 'ignoreContent', self.form)
        if not ignoreContent:
            data = self.form.getContentData()
            try:
                value = data.get(self.component.identifier)
                # XXX: Need review
                if value is None:
                    value = NO_VALUE
                return self.prepareContentValue(value)
            except KeyError:
                # No value on the content for field, continue.
                pass

        # Take any default value
        value = self.component.getDefaultValue(self.form)
        return self.prepareContentValue(value)
Example #2
0
def verify_post(action, form, request):
    isPostOnly = getValue(action, 'postOnly', form)
    if isPostOnly and request.method != 'POST':
        form.errors.append(
            Error('This form was not submitted properly.',
                  form.prefix))
        return False
    else:
        return True
Example #3
0
 def widget(self, field):
     """Create a widget for the given field.
     """
     if not field.available(self.form):
         return None
     mode = str(getValue(field, 'mode', self.form))
     return getMultiAdapter(
         (field, self.form, self.request),
         interfaces.IWidget,
         name=mode)
Example #4
0
    def extractor(self, field):
        """Create a widget extractor for the given field.
        """
        mode = getValue(field, 'mode', self.form)

        # The field mode should be extractable or we skip it.
        if (IModeMarker.providedBy(mode) and mode.extractable is False):
            return None

        extractor = queryMultiAdapter(
            (field, self.form, self.request),
            interfaces.IWidgetExtractor,
            name=str(mode))
        if extractor is not None:
            return extractor
        # Default to the default extractor
        return getMultiAdapter(
            (field, self.form, self.request),
            interfaces.IWidgetExtractor)
Example #5
0
    def process(self, form, request):
        for action in self:
            extractor = interfaces.IWidgetExtractor(action, form, request)

            value, error = extractor.extract()
            if value is not markers.NO_VALUE:
                isPostOnly = markers.getValue(action, 'postOnly', form)
                if isPostOnly and request.method != 'POST':
                    form.errors.append(
                        errors.Error('This form was not submitted properly',
                                     form.prefix))
                    return None, markers.FAILURE
                try:
                    if action.validate(form):
                        return action, action(form)
                except interfaces.ActionError as error:
                    form.errors.append(errors.Error(
                        error.args[0], form.prefix))
                    return action, markers.FAILURE
        return None, markers.NOTHING_DONE