Revision cbd5f433f3ff478fb26e9c09b9e3b5c74512e28d authored by Jonas Otten on 13 December 2023, 10:29:49 UTC, committed by GitHub on 13 December 2023, 10:29:49 UTC
It is not possible to attach a GCS cloud storage bucket whose name contains a dot. As stated [here](https://cloud.google.com/storage/docs/buckets#naming), GCS bucket names allow dots. This is a major problem for us, and this PR fixes this issue. --------- Co-authored-by: Jonas Otten <jootten@uos.de> Co-authored-by: Boris Sekachev <sekachev.bs@gmail.com> Co-authored-by: Maria Khrustaleva <maria@cvat.ai>
1 parent 2aae952
serializers.py
# Copyright (C) 2023 CVAT.ai Corporation
#
# SPDX-License-Identifier: MIT
from drf_spectacular.utils import extend_schema_serializer
from rest_framework import serializers
from cvat.apps.analytics_report.models import (
BinaryOperatorType,
GranularityChoice,
TargetChoice,
ViewChoice,
)
class BinaryOperationSerializer(serializers.Serializer):
left = serializers.CharField(
required=False,
allow_null=True,
help_text="The name of the data series used as the left (first) operand of the binary operation.",
)
operator = serializers.ChoiceField(choices=BinaryOperatorType.choices())
right = serializers.CharField(
required=False,
allow_null=True,
help_text="The name of the data series used as the right (second) operand of the binary operation.",
)
class TransformationSerializer(serializers.Serializer):
name = serializers.CharField()
binary = BinaryOperationSerializer(
required=False,
allow_null=True,
)
class DataFrameSerializer(serializers.Serializer):
value = serializers.FloatField()
date = serializers.DateField()
class MetricSerializer(serializers.Serializer):
name = serializers.CharField()
title = serializers.CharField()
description = serializers.CharField(allow_blank=True)
granularity = serializers.ChoiceField(
choices=GranularityChoice.choices(), required=False, allow_null=True
)
default_view = serializers.ChoiceField(choices=ViewChoice.choices())
data_series = serializers.DictField(child=DataFrameSerializer(many=True))
transformations = serializers.ListField(child=TransformationSerializer())
@extend_schema_serializer(many=False)
class AnalyticsReportSerializer(serializers.Serializer):
created_date = serializers.DateTimeField()
target = serializers.ChoiceField(choices=TargetChoice.choices())
job_id = serializers.IntegerField(required=False)
task_id = serializers.IntegerField(required=False)
project_id = serializers.IntegerField(required=False)
statistics = serializers.ListField(child=MetricSerializer())
class AnalyticsReportCreateSerializer(serializers.Serializer):
job_id = serializers.IntegerField(required=False)
task_id = serializers.IntegerField(required=False)
project_id = serializers.IntegerField(required=False)
def validate(self, data):
job_id = data.get("job_id")
task_id = data.get("task_id")
project_id = data.get("project_id")
if job_id is None and task_id is None and project_id is None:
raise serializers.ValidationError("No any job, task or project specified")
if sum(map(bool, [job_id, task_id, project_id])) > 1:
raise serializers.ValidationError(
"Only one of job_id, task_id or project_id must be specified"
)
return data
Computing file changes ...