Files
superset2/superset/annotation_layers/annotations/commands/exceptions.py
Daniel Vaz Gaspar 6f69212f28 feat: annotations REST API (#11344)
* feat(api): annotations and layers CRUD REST API

* lint

* annotations API and tests

* fix openapi spec

* fix openapi spec

* fix openapi spec

* annotations bulk delete

* fix openapi spec

* fix older tests

* fix older tests

* small lint fixes

* layer_id to pk to keep broad coherence on openapi spec

* fix openapi spec

* one more test and validation

* fix test name

* fix test

* fix bulk delete

* add name validation

* annotation uniqueness validation

* lint

* add sorting reqs and tests

* add statsd metrics

* Update superset/annotation_layers/annotations/dao.py

Co-authored-by: Ville Brofeldt <33317356+villebro@users.noreply.github.com>

* Update tests/core_tests.py

Co-authored-by: Ville Brofeldt <33317356+villebro@users.noreply.github.com>

* address comments

* address my comment :)

* fix, address comments

* lint

Co-authored-by: riahk <moar.riah@gmail.com>
Co-authored-by: Ville Brofeldt <33317356+villebro@users.noreply.github.com>
2020-10-23 09:41:17 +01:00

73 lines
2.2 KiB
Python

# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
from flask_babel import lazy_gettext as _
from marshmallow import ValidationError
from superset.commands.exceptions import (
CommandException,
CommandInvalidError,
CreateFailedError,
DeleteFailedError,
)
class AnnotationDatesValidationError(ValidationError):
"""
Marshmallow validation error for start date is after end date
"""
def __init__(self) -> None:
super().__init__(
[_("End date must be after start date")], field_name="start_dttm"
)
class AnnotationUniquenessValidationError(ValidationError):
"""
Marshmallow validation error for annotation layer name already exists
"""
def __init__(self) -> None:
super().__init__(
[_("Short description must be unique for this layer")],
field_name="short_descr",
)
class AnnotationBulkDeleteFailedError(DeleteFailedError):
message = _("Annotations could not be deleted.")
class AnnotationNotFoundError(CommandException):
message = _("Annotation not found.")
class AnnotationInvalidError(CommandInvalidError):
message = _("Annotation parameters are invalid.")
class AnnotationCreateFailedError(CreateFailedError):
message = _("Annotation could not be created.")
class AnnotationUpdateFailedError(CreateFailedError):
message = _("Annotation could not be updated.")
class AnnotationDeleteFailedError(CommandException):
message = _("Annotation delete failed.")