def _write_hook(_, data): if data[-1] == '\n': data = data[:-1] else: self.log.warning('Unexpected line from copy without end of line.') vals = data.split('\t') obf_vals = [] for field, value in zip(column_list, vals): obf_col = obf_col_map.get(field, {}) action = obf_col.get('action', actions.HASH) if action == actions.KEEP: obf_vals.append(value) continue str_val = skytools.unescape_copy(value) if str_val is None: obf_vals.append(value) continue if action == actions.HASH: obf_val = hash_function(str_val) obf_vals.append('%d' % obf_val) elif action == actions.JSON: obf_val = self.obf_json(str_val, obf_col) obf_vals.append(skytools.quote_copy(obf_val)) else: raise ValueError('Invalid value for action: %s' % action) obf_data = '\t'.join(obf_vals) + '\n' return obf_data
def _gen_list_copy(tbl, row, fields, qfields): tmp = [] for i in range(len(fields)): try: v = row[i] except IndexError: v = None tmp.append(skytools.quote_copy(v)) return "\t".join(tmp)
def _gen_dict_copy(tbl, row, fields, qfields): tmp = [] for f in fields: v = row.get(f) tmp.append(skytools.quote_copy(v)) return "\t".join(tmp)
def obf_vals_to_data(obf_vals): """Converts obfuscated values back to copy data """ vals = [skytools.quote_copy(value) for value in obf_vals] obf_data = '\t'.join(vals) + '\n' return obf_data