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__()
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)
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}
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)
def update(self): convert_request_form_to_unicode(self.request.form) return super(PublicContentProviderForm, self).update()
def update(self): convert_request_form_to_unicode(self.request.form) return super(PublicViewletForm, self).update()