def get_serializer(self, *args, **kwargs): self.get_model_class() # TODO: avoid to call it twice obfuscate_fields = [field.name for field in self.get_table().fields if field.obfuscate and field.show] if obfuscate_fields: objects = args[0] if not isinstance(objects, Sequence): objects = [objects] for obj in objects: for field_name in obfuscate_fields: value = obfuscate(getattr(obj, field_name)) setattr(obj, field_name, value) return super().get_serializer(*args, **kwargs)
def queryset_to_csv(data, fields): header = None for row in data.iterator(): row_data = {} for field in fields: if not field.show_on_frontend or field.name == "search_data": continue else: value = getattr(row, field.name) if field.obfuscate: value = obfuscate(value) row_data[field.name] = value if header is None: header = list(row_data.keys()) yield header yield [row_data[field] for field in header]