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_LINE_IDX_ERROR
extern int OBI_ELT_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.apps.temp import get_temp_dms
from obitools3.utils cimport tobytes # TODO because can't read options as bytes 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): class MalformedURIException(RuntimeError):
pass pass
@ -219,10 +222,13 @@ def open_uri(uri,
type(resource[1]), type(resource[1]),
urlunparse(urip)) urlunparse(urip))
except Exception as e: 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 error=e
if scheme==b"dms" : if scheme==b"dms" :
logger('Error','cannot open DMS: %s', uri) logger('Error','Could not open DMS URI: %s', uri)
raise FileNotFoundError('uri') raise FileNotFoundError('uri')
if not urip.scheme: 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 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_ */ #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 // Check uniqueness of name
if (view_exists(dms, view_name)) if (view_exists(dms, view_name))
{ {
obi_set_errno(OBIVIEW_ERROR); obi_set_errno(OBIVIEW_ALREADY_EXISTS_ERROR);
obidebug(1, "\nName of new view already exists"); obidebug(1, "\nName of new view ('%s') already exists", view_name);
return NULL; return NULL;
} }