-
Notifications
You must be signed in to change notification settings - Fork 31
/
Copy patherrors.py
168 lines (108 loc) · 5.06 KB
/
errors.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
# -*- coding: utf-8 -*-
#
# This file is part of CERN Analysis Preservation Framework.
# Copyright (C) 2018 CERN.
#
# CERN Analysis Preservation Framework is free software; you can redistribute
# it and/or modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2 of the
# License, or (at your option) any later version.
#
# CERN Analysis Preservation Framework is distributed in the hope that it will
# be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with CERN Analysis Preservation Framework; if not, write to the
# Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
# MA 02111-1307, USA.
#
# In applying this license, CERN does not
# waive the privileges and immunities granted to it by virtue of its status
# as an Intergovernmental Organization or submit itself to any jurisdiction.
"""Deposit errors."""
from invenio_rest.errors import RESTException, RESTValidationError, FieldError
class DepositDoesNotExist(Exception):
"""Deposit with given key does not exist exception."""
pass
class WrongJSONSchemaError(RESTValidationError):
"""Wrong JSONSchema error exception."""
code = 400
description = "The provided JSON schema or 'ana_type' field doesn't exist"
def __init__(self, description, **kwargs):
"""Initialize exception."""
super(WrongJSONSchemaError, self).__init__(**kwargs)
self.description = description or self.description
class UpdateDepositPermissionsError(RESTValidationError):
"""Exception during updating deposit's permissions."""
code = 400
description = "Error occured during updating deposit permissions."
def __init__(self, description, **kwargs):
"""Initialize exception."""
super(UpdateDepositPermissionsError, self).__init__(**kwargs)
self.description = description or self.description
class DepositValidationError(RESTValidationError):
"""Deposit validation error exception."""
code = 422
description = "Validation error. Try again with valid data"
def __init__(self, description, errors=None, **kwargs):
"""Initialize exception."""
super(DepositValidationError, self).__init__(**kwargs)
self.description = description or self.description
self.errors = errors
class FileUploadError(RESTException):
"""Exception during uploading external urls."""
code = 400
def __init__(self, description, **kwargs):
"""Initialize exception."""
super(FileUploadError, self).__init__(**kwargs)
self.description = description or self.description
class AuthorizationError(RESTException):
"""Exception during authorization."""
code = 401
def __init__(self, description, **kwargs):
"""Initialize exception."""
super(AuthorizationError, self).__init__(**kwargs)
self.description = description or self.description
class DisconnectWebhookError(RESTException):
"""Exception during disconnecting webhook for analysis."""
code = 400
def __init__(self, description, **kwargs):
"""Initialize exception."""
super().__init__(**kwargs)
self.description = description or 'Error during disconnecting webhook.'
class ReviewError(RESTException):
"""Exception during review for analysis."""
code = 400
def __init__(self, description, **kwargs):
"""Initialize exception."""
super().__init__(**kwargs)
self.description = description or 'Review is not a possible action.'
class ReviewValidationError(RESTValidationError):
"""Review validation error exception."""
code = 400
description = "Validation error. Try again with valid data"
def __init__(self, description, errors=None, **kwargs):
"""Initialize exception."""
super(ReviewValidationError, self).__init__(**kwargs)
self.description = description or self.description
self.errors = [FieldError(e[0], e[1]) for e in errors.items()]
class InputValidationError(RESTValidationError):
"""Review validation error exception."""
code = 400
description = "Validation error. Try again with valid data"
def __init__(self, description, errors=None, **kwargs):
"""Initialize exception."""
super(InputValidationError, self).__init__(**kwargs)
self.description = description or self.description
self.errors = [FieldError(e[0], e[1]) for e in errors.items()]
class DataValidationError(RESTValidationError):
"""Review validation error exception."""
code = 400
description = "Validation error. Try again with valid data"
def __init__(self, description, errors=None, **kwargs):
"""Initialize exception."""
super(DataValidationError, self).__init__(**kwargs)
self.description = description or self.description
self.errors = [FieldError(e['field'], e['message']) for e in errors]