Source code for pywps.app.exceptions
##################################################################
# Copyright 2018 Open Source Geospatial Foundation and others #
# licensed under MIT, Please consult LICENSE.txt for details #
##################################################################
"""
Process exceptions raised intentionally in processes to provide information for users.
"""
[docs]class ProcessError(Exception):
""":class:`pywps.app.exceptions.ProcessError` is an :class:`Exception`
you can intentionally raise in a process
to provide a user-friendly error message.
The error message gets validated (3<= message length <=144) and only
alpha numeric characters and a few special characters are allowed.
The special characters are: `.`, `:`, `!`, `?`, `=`, `,`, `-`.
"""
min_msg_length = 3
max_msg_length = 144
allowed_chars = ['.', ':', '!', '?', '=', ',', '-']
default_msg = 'Sorry, process failed. Please check server error log.'
def __init__(self, msg=None):
self.msg = msg
def __str__(self):
return self.message
def _validate_message(self):
valid = False
if self.msg and self.min_msg_length <= len(self.msg) <= self.max_msg_length:
# remove spaces
test_str = self.msg.replace(' ', '')
# remove allowed non alpha-numeric chars
for char in self.allowed_chars:
test_str = test_str.replace(char, '')
# only alpha numeric string accepted
valid = test_str.isalnum()
return valid
@property
def message(self):
if self._validate_message():
new_msg = "{}".format(self.msg)
else:
new_msg = self.default_msg
return new_msg