def _filtered_data(self, data, schema=None): """Filter fields for RecordContainer.update() to use""" if not data: return {} if schema is None: schema = self._definition_schema() _getv = lambda name: data.get(name, None) _indata = lambda name: name in data if IRecord.providedBy(data): _getv = lambda name: getattr(data, name, None) _indata = lambda name: hasattr(data, name) fieldnames = [k for k, field in getFieldsInOrder(schema)] fieldnames.append('record_uid') # only non-schema attr we keep return dict([(k, _getv(k)) for k in fieldnames if _indata(k)])
def _filtered_data(self, data): fieldnames = self._ad_hoc_fieldlist(data) if IRecord.providedBy(data): return dict([(k, getattr(data, k, None)) for k in fieldnames]) return dict([(k, data.get(k, None)) for k in fieldnames])