Better handling of errors and exceptions when new view name already
exists
This commit is contained in:
@ -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
|
||||
|
@ -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:
|
||||
|
@ -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_ */
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user