Better handling of errors and exceptions when new view name already

exists
This commit is contained in:
Celine Mercier
2018-10-17 19:47:40 +02:00
parent 4802e32f72
commit 0a0f0682a9
4 changed files with 12 additions and 3 deletions

View File

@ -6,3 +6,4 @@ cdef extern from "obierrno.h":
extern int OBI_LINE_IDX_ERROR
extern int OBI_ELT_IDX_ERROR
extern int OBIVIEW_ALREADY_EXISTS_ERROR

View File

@ -22,6 +22,9 @@ from obitools3.apps.config import getConfiguration,logger
from obitools3.apps.temp import get_temp_dms
from obitools3.utils cimport tobytes # TODO because can't read options as bytes
from obitools3.dms.capi.obierrno cimport obi_errno, \
OBIVIEW_ALREADY_EXISTS_ERROR
class MalformedURIException(RuntimeError):
pass
@ -219,10 +222,13 @@ def open_uri(uri,
type(resource[1]),
urlunparse(urip))
except Exception as e:
global obi_errno
if obi_errno == OBIVIEW_ALREADY_EXISTS_ERROR:
raise Exception("View name already exists in this DMS")
error=e
if scheme==b"dms" :
logger('Error','cannot open DMS: %s', uri)
logger('Error','Could not open DMS URI: %s', uri)
raise FileNotFoundError('uri')
if not urip.scheme:

View File

@ -128,6 +128,8 @@ extern int obi_errno;
*/
#define OBI_JSON_ERROR (34) /** Error related to JSON operations.
*/
#define OBIVIEW_ALREADY_EXISTS_ERROR (35) /** Tried to create a new view with a name already existing in the DMS.
*/
/**@}*/
#endif /* OBIERRNO_H_ */

View File

@ -1496,8 +1496,8 @@ Obiview_p obi_new_view(OBIDMS_p dms, const char* view_name, Obiview_p view_to_cl
// Check uniqueness of name
if (view_exists(dms, view_name))
{
obi_set_errno(OBIVIEW_ERROR);
obidebug(1, "\nName of new view already exists");
obi_set_errno(OBIVIEW_ALREADY_EXISTS_ERROR);
obidebug(1, "\nName of new view ('%s') already exists", view_name);
return NULL;
}