示例#1
0
 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
示例#2
0
    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)
示例#3
0
    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)
示例#4
0
 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
示例#5
0
 def data(self):
     return dict((name, f.data) for name, f in iteritems(self._fields))
示例#6
0
 def populate_obj(self, obj):
     for name, field in iteritems(self._fields):
         field.populate_obj(obj, name)