diff --git a/python/obitools3/dms/capi/obierrno.pxd b/python/obitools3/dms/capi/obierrno.pxd index a0bf858..b67da92 100644 --- a/python/obitools3/dms/capi/obierrno.pxd +++ b/python/obitools3/dms/capi/obierrno.pxd @@ -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 diff --git a/python/obitools3/uri/decode.pyx b/python/obitools3/uri/decode.pyx index 863f040..0e5df55 100644 --- a/python/obitools3/uri/decode.pyx +++ b/python/obitools3/uri/decode.pyx @@ -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: diff --git a/src/obierrno.h b/src/obierrno.h index d7cfe3a..49c9b63 100644 --- a/src/obierrno.h +++ b/src/obierrno.h @@ -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_ */ diff --git a/src/obiview.c b/src/obiview.c index 7ba74bf..19e669b 100644 --- a/src/obiview.c +++ b/src/obiview.c @@ -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; }