def validate(self, extra_validators=None): self._errors = None success = True for name, field in iteritems(self._fields): if extra_validators is not None and name in extra_validators: extra = extra_validators[name] else: extra = tuple() if not field.validate(self, extra): success = False return success
def process(self, jsondata=None, obj=None, data=None, **kwargs): jsondata = self.meta.wrap_jsondata(self, jsondata) if data is not None: kwargs = dict(data, **kwargs) for name, field, in iteritems(self._fields): if obj is not None and hasattr(obj, name): field.process(jsondata, getattr(obj, name)) elif name in kwargs: field.process(jsondata, kwargs[name]) else: field.process(jsondata)
def __init__(self, jsondata=None, obj=None, prefix='', data=None, meta=None, **kwargs): meta_obj = self._json_meta() if meta is not None and isinstance(meta, dict): meta_obj.update_values(meta) super(Json, self).__init__(self._unbound_fields, meta=meta_obj, prefix=prefix) for name, field in iteritems(self._fields): # Set all the fields to attributes so that they obscure the class # attributes with the same names. setattr(self, name, field) self.process(jsondata, obj, data=data, **kwargs)
def errors(self): if self._errors is None: self._errors = dict((name, f.errors) for name, f in iteritems(self._fields) if f.errors) return self._errors
def data(self): return dict((name, f.data) for name, f in iteritems(self._fields))
def populate_obj(self, obj): for name, field in iteritems(self._fields): field.populate_obj(obj, name)