aboutsummaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
authorrr-2016-09-10 10:37:28 +0200
committerrr-2016-09-10 11:36:01 +0200
commit16d04adde0de461cd992f63440a84c9ea66ee106 (patch)
tree68a09a36be6fe703ac2de96bb96750a35e80c163 /server
parent8674c8b50e9988162aeeb57df23ef334f2701e93 (diff)
server/errors: add and document error codes
Diffstat (limited to 'server')
-rw-r--r--server/szurubooru/facade.py7
-rw-r--r--server/szurubooru/func/versions.py2
-rw-r--r--server/szurubooru/rest/app.py1
-rw-r--r--server/szurubooru/rest/errors.py7
4 files changed, 14 insertions, 3 deletions
diff --git a/server/szurubooru/facade.py b/server/szurubooru/facade.py
index cead9a2..1d26aad 100644
--- a/server/szurubooru/facade.py
+++ b/server/szurubooru/facade.py
@@ -11,6 +11,7 @@ from szurubooru import api, middleware
def _map_error(ex, target_class, title):
return target_class(
+ name=type(ex).__name__,
title=title,
description=str(ex),
extra_fields=getattr(ex, 'extra_fields', {}))
@@ -42,7 +43,11 @@ def _on_processing_error(ex):
def _on_stale_data_error(_ex):
raise rest.errors.HttpConflict(
- 'Someone else modified this in the meantime. Please try again.')
+ name='IntegrityError',
+ title='Integrity violation',
+ description=(
+ 'Someone else modified this in the meantime. '
+ 'Please try again.'))
def validate_config():
diff --git a/server/szurubooru/func/versions.py b/server/szurubooru/func/versions.py
index d38130a..ee84407 100644
--- a/server/szurubooru/func/versions.py
+++ b/server/szurubooru/func/versions.py
@@ -5,7 +5,7 @@ def verify_version(entity, context, field_name='version'):
actual_version = context.get_param_as_int(field_name, required=True)
expected_version = entity.version
if actual_version != expected_version:
- raise errors.InvalidParameterError(
+ raise errors.IntegrityError(
'Someone else modified this in the meantime. ' +
'Please try again.')
diff --git a/server/szurubooru/rest/app.py b/server/szurubooru/rest/app.py
index da8f2dd..2c21916 100644
--- a/server/szurubooru/rest/app.py
+++ b/server/szurubooru/rest/app.py
@@ -103,6 +103,7 @@ def application(env, start_response):
'%d %s' % (ex.code, ex.reason),
[('content-type', 'application/json')])
blob = {
+ 'name': ex.name,
'title': ex.title,
'description': ex.description,
}
diff --git a/server/szurubooru/rest/errors.py b/server/szurubooru/rest/errors.py
index 0189147..3c40b4c 100644
--- a/server/szurubooru/rest/errors.py
+++ b/server/szurubooru/rest/errors.py
@@ -5,10 +5,15 @@ class BaseHttpError(RuntimeError):
code = None
reason = None
- def __init__(self, description, title=None, extra_fields=None):
+ def __init__(self, name, description, title=None, extra_fields=None):
super().__init__()
+ # error name for programmers
+ self.name = name
+ # error description for humans
self.description = description
+ # short title for humans
self.title = title or self.reason
+ # additional fields for programmers
self.extra_fields = extra_fields

© 2015 - 2026 Jakob L. Kreuze