"""This file and its contents are licensed under the Apache License 2.0. Please see the included NOTICE for copyright information and LICENSE for a copy of the license. """ import os from io_storages.redis.models import RedisExportStorage, RedisImportStorage from io_storages.serializers import ExportStorageSerializer, ImportStorageSerializer from rest_framework import serializers from rest_framework.exceptions import ValidationError class RedisImportStorageSerializer(ImportStorageSerializer): type = serializers.ReadOnlyField(default=os.path.basename(os.path.dirname(__file__))) class Meta: model = RedisImportStorage fields = '__all__' def to_representation(self, instance): result = super().to_representation(instance) result.pop('password') return result def validate(self, data): data = super(RedisImportStorageSerializer, self).validate(data) storage = RedisImportStorage(**data) try: storage.validate_connection() except: # noqa: E722 raise ValidationError("Can't connect to Redis server.") return data class RedisExportStorageSerializer(ExportStorageSerializer): type = serializers.ReadOnlyField(default=os.path.basename(os.path.dirname(__file__))) def to_representation(self, instance): result = super().to_representation(instance) result.pop('password') return result class Meta: model = RedisExportStorage fields = '__all__'