def get_encrypted_value(self, value: FieldFile, encryption_key: str): file_name = value.name value.delete(save=False) file = self.get_replacement_file(file_name) if func_supports_parameter(value.storage.save, 'max_length'): value.name = value.storage.save(file_name, file, max_length=value.field.max_length) else: # Backwards compatibility removed in Django 1.10 value.name = value.storage.save(file_name, file) setattr(value.instance, value.field.name, value.name) value._size = file.size # Django 1.8 + 1.9 value._committed = True file.close() return value
def my_decoder(obj): if '__type__' in obj: if obj['__type__'] == '__datetime__': return datetime.fromtimestamp(obj['epoch']) if obj['__type__'] == '__date__': return date.fromtimestamp(obj['epoch']) if obj['__type__'] == '__uuid__': return uuid.UUID('{%s}'%obj['tval'], version=obj['tversion']) if obj['__type__'] == '__fieldfile__': ff = FieldFile(None, type('field', (object,), {'storage':{}}), None) ff.name = obj['tval'] return ff return obj