コード例 #1
0
class RobotListSerializer(serializers.ModelSerializer):
    strategy_name = serializers.CharField(read_only=True)
    asset_record = AssetRecordSerializer(read_only=True)
    exchange = ExchangeSerializer(source="credential.exchange", read_only=True)

    class Meta:
        model = Robot
        fields = [
            # plain model fields
            "id",
            "name",
            "pair",
            "market_type",
            "enabled",
            "start_time",
            "ping_time",
            "target_currency",
            "base_currency",
            "quote_currency",
            "created_at",
            "modified_at",
            # related model fields
            "asset_record",
            # derived fields
            "duration_display",
            "duration_in_second",
            "duration",
            "strategy_name",
            "exchange",
        ]
コード例 #2
0
class CredentialListSerializer(serializers.ModelSerializer):
    api_key = MaskedCharField(read_only=True, help_text="Partial masked API key.")
    secret = MaskedCharField(read_only=True, help_text="Partial masked secret key.")
    passphrase = MaskedCharField(
        read_only=True, mask_all=True, help_text="Completely masked passphrase."
    )
    exchange = ExchangeSerializer(read_only=True)

    class Meta:
        model = Credential
        fields = [
            "id",
            "note",
            "api_key",
            "secret",
            "passphrase",
            "test_net",
            "exchange",
            "created_at",
            "modified_at",
        ]

        extra_kwargs = {
            "test_net": {"help_text": "Is a credential of exchange test net or not."},
        }
コード例 #3
0
ファイル: serializers.py プロジェクト: yfjelley/yufuquant
class RobotRetrieveSerializer(serializers.ModelSerializer):
    duration_display = DurationField(source="duration", read_only=True)
    asset_record = AssetRecordSerializer(read_only=True)
    exchange = ExchangeSerializer(source="credential.exchange", read_only=True)

    class Meta:
        model = Robot
        fields = [
            # plain model fields
            "id",
            "name",
            "pair",
            "market_type",
            "enabled",
            "start_time",
            "ping_time",
            "target_currency",
            "base_currency",
            "quote_currency",
            "strategy_parameters",
            "created_at",
            "modified_at",
            # related fields
            "asset_record",
            # derived fields
            "duration_display",
            "strategy_spec_view",
            "exchange",
        ]
コード例 #4
0
class CredentialSerializer(serializers.ModelSerializer):
    api_key_masked = CredentialKeyField(source="api_key", read_only=True)
    secret_masked = CredentialKeyField(source="secret", read_only=True)
    exchange_info = ExchangeSerializer(source="exchange", read_only=True)

    class Meta:
        model = Credential
        fields = [
            "id",
            "note",
            "api_key",
            "secret",
            "api_key_masked",
            "secret_masked",
            "is_test_net",
            "exchange",
            "exchange_info",
            "created_at",
        ]
        read_only_fields = [
            "created_at",
        ]
        extra_kwargs = {
            "exchange": {
                "write_only": True
            },
            "api_key": {
                "write_only": True
            },
            "secret": {
                "write_only": True
            },
        }
コード例 #5
0
class RobotRetrieveSerializer(serializers.ModelSerializer):
    included_serializers = {
        "exchange": ExchangeSerializer,
        "asset_record": AssetRecordSerializer,
        "user": UserSerializer,
    }
    user = UserSerializer(source="credential.user", read_only=True)
    exchange = ExchangeSerializer(source="credential.exchange", read_only=True)
    duration_display = DurationField(source="duration", read_only=True)
    asset_record = AssetRecordSerializer(read_only=True)
    strategy_parameters = serializers.JSONField(read_only=True)
    strategy_parameters_view = serializers.SerializerMethodField()

    class Meta:
        model = Robot
        fields = [
            "id",
            "name",
            "pair",
            "target_currency",
            "base_currency",
            "quote_currency",
            "enabled",
            "start_time",
            "ping_time",
            "duration_display",
            "asset_record",
            "credential",
            "strategy_parameters",
            "strategy_parameters_view",
            "user",
            "exchange",
            "created_at",
            "modified_at",
        ]
        read_only_fields = [
            "ping_time",
            "created_at",
            "modified_at",
        ]
        extra_kwargs = {
            "credential": {"write_only": True},
        }

    class JSONAPIMeta:
        resource_name = "robots"
        included_resources = ["exchange", "asset_record", "user"]

    def get_strategy_parameters_view(self, obj: Robot) -> Dict[str, Any]:
        spec = obj.strategy.specification
        parameters = obj.strategy_parameters
        for parameter in spec["parameters"]:
            parameter["value"] = parameters[parameter["code"]]
        return spec
コード例 #6
0
class RobotRetrieveSerializer(serializers.ModelSerializer):
    user = UserSerializer(source="credential.user", read_only=True)
    exchange = ExchangeSerializer(source="credential.exchange", read_only=True)
    duration_display = DurationField(source="duration", read_only=True)
    asset_record = AssetRecordSerializer(read_only=True)
    strategy_parameters = serializers.JSONField(read_only=True)
    strategy_view = serializers.SerializerMethodField()

    class Meta:
        model = Robot
        fields = [
            "id",
            "name",
            "pair",
            "target_currency",
            "base_currency",
            "quote_currency",
            "enabled",
            "start_time",
            "ping_time",
            "duration_display",
            "asset_record",
            "credential",
            "strategy_template",
            "strategy_parameters",
            "strategy_view",
            "user",
            "exchange",
            "created_at",
            "modified_at",
        ]
        read_only_fields = [
            "ping_time",
            "created_at",
            "modified_at",
        ]
        extra_kwargs = {
            "credential": {
                "write_only": True
            },
        }

    def get_strategy_view(self, obj: Robot) -> Dict[str, Any]:
        spec = obj.strategy_template.parameter_spec
        parameters = obj.strategy_parameters
        for field in spec["fields"]:
            field["value"] = parameters["fields"][field["code"]]
        return spec
コード例 #7
0
class CredentialListSerializer(serializers.ModelSerializer):
    api_key_masked = CredentialKeyField(source="api_key", read_only=True)
    secret_masked = CredentialKeyField(source="secret", read_only=True)
    exchange = ExchangeSerializer(read_only=True)

    class Meta:
        model = Credential
        fields = [
            "id",
            "note",
            "api_key_masked",
            "secret_masked",
            "is_test_net",
            "exchange",
            "created_at",
        ]
コード例 #8
0
class RobotListSerializer(serializers.ModelSerializer):
    included_serializers = {
        "exchange": ExchangeSerializer,
        "asset_record": AssetRecordSerializer,
    }
    duration_display = DurationField(source="duration", read_only=True)
    strategy_name = serializers.CharField(read_only=True)
    exchange = ExchangeSerializer(source="credential.exchange", read_only=True)

    class Meta:
        model = Robot
        fields = [
            "id",
            "name",
            "pair",
            "market_type",
            "target_currency",
            "base_currency",
            "quote_currency",
            "enabled",
            "start_time",
            "ping_time",
            "duration_display",
            "asset_record",
            "credential",
            "strategy",
            "strategy_name",
            "exchange",
            "created_at",
            "modified_at",
        ]
        read_only_fields = [
            "ping_time",
            "asset_record",
            "created_at",
            "modified_at",
        ]
        extra_kwargs = {
            "credential": {"write_only": True},
            "strategy": {"write_only": True},
        }

    class JSONAPIMeta:
        resource_name = "robots"
        included_resources = ["exchange", "asset_record"]
コード例 #9
0
class RobotRetrieveSerializer(serializers.ModelSerializer):
    strategy_name = serializers.CharField(read_only=True)
    asset_record = AssetRecordSerializer(read_only=True)
    test_net = serializers.BooleanField(read_only=True)
    exchange = ExchangeSerializer(source="credential.exchange", read_only=True)
    strategy_store = serializers.JSONField()
    position_store = serializers.JSONField()
    order_store = serializers.JSONField()
    market_type_display = serializers.CharField(
        source="get_market_type_display")

    class Meta:
        model = Robot
        fields = [
            # plain model fields
            "id",
            "name",
            "pair",
            "market_type",
            "enabled",
            "start_time",
            "ping_time",
            "target_currency",
            "base_currency",
            "quote_currency",
            "strategy_store",
            "position_store",
            "order_store",
            "created_at",
            "modified_at",
            # related fields
            "asset_record",
            # derived fields
            "duration_display",
            "duration_in_second",
            "strategy_name",
            "test_net",
            "exchange",
            "market_type_display",
        ]
コード例 #10
0
class RobotListSerializer(serializers.ModelSerializer):
    exchange = ExchangeSerializer(source="credential.exchange", read_only=True)
    duration_display = DurationField(source="duration", read_only=True)
    asset_record = AssetRecordSerializer(read_only=True)
    strategy_template_name = serializers.CharField(read_only=True)

    class Meta:
        model = Robot
        fields = [
            "id",
            "name",
            "pair",
            "target_currency",
            "base_currency",
            "quote_currency",
            "enabled",
            "start_time",
            "ping_time",
            "duration_display",
            "asset_record",
            "credential",
            "strategy_template",
            "strategy_template_name",
            "exchange",
            "created_at",
            "modified_at",
        ]
        read_only_fields = [
            "ping_time",
            "created_at",
            "modified_at",
        ]
        extra_kwargs = {
            "credential": {
                "write_only": True
            },
            "strategy_template": {
                "write_only": True
            },
        }
コード例 #11
0
class RobotConfigSerializer(serializers.ModelSerializer):
    user = UserSerializer(source="credential.user", read_only=True)
    exchange = ExchangeSerializer(source="credential.exchange", read_only=True)
    credential_keys = CredentialKeysSerializer(source="credential",
                                               read_only=True)
    is_test_net = serializers.BooleanField(source="credential.is_test_net",
                                           read_only=True)
    strategy_parameters = serializers.JSONField()

    class Meta:
        model = Robot
        fields = [
            "id",
            "name",
            "pair",
            "target_currency",
            "enabled",
            "is_test_net",
            "user",
            "exchange",
            "credential_keys",
            "strategy_parameters",
        ]