mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-23 00:02:38 -05:00
Fixes crash in tests, and adapts these VirtualErrorHandlers to the same code used elsewhere in QGIS
74 lines
1.8 KiB
Plaintext
74 lines
1.8 KiB
Plaintext
%Module(name=qgis._server,
|
|
keyword_arguments="All")
|
|
|
|
${DEFAULTDOCSTRINGSIGNATURE}
|
|
|
|
%Import QtCore/QtCoremod.sip
|
|
%Import QtGui/QtGuimod.sip
|
|
%Import QtXml/QtXmlmod.sip
|
|
|
|
%Import core/core.sip
|
|
%Include qgsserverexception.sip
|
|
|
|
%Feature HAVE_SERVER_PYTHON_PLUGINS
|
|
|
|
%Include server_auto.sip
|
|
|
|
|
|
%VirtualErrorHandler serverapi_badrequest_exception_handler
|
|
PyObject *type, *exception, *traceback;
|
|
|
|
PyErr_Fetch(&type, &exception, &traceback);
|
|
// check whether the object is already a unicode string
|
|
QString pyStrException;
|
|
if ( PyUnicode_Check( exception) )
|
|
{
|
|
pyStrException = QString::fromUtf8( PyUnicode_AsUTF8( exception ) );
|
|
}
|
|
else
|
|
{
|
|
PyObject* str = PyObject_Str( exception );
|
|
pyStrException = QString::fromUtf8( PyUnicode_AsUTF8( str ) );
|
|
Py_XDECREF( str );
|
|
}
|
|
|
|
SIP_RELEASE_GIL( sipGILState );
|
|
|
|
QString strException = "API bad request error";
|
|
if ( !pyStrException.isEmpty() )
|
|
{
|
|
strException = pyStrException;
|
|
}
|
|
|
|
throw QgsServerApiBadRequestException( strException );
|
|
%End
|
|
|
|
|
|
%VirtualErrorHandler server_exception_handler
|
|
PyObject *type, *exception, *traceback;
|
|
|
|
PyErr_Fetch(&type, &exception, &traceback);
|
|
// check whether the object is already a unicode string
|
|
QString pyStrException;
|
|
if ( PyUnicode_Check( exception) )
|
|
{
|
|
pyStrException = QString::fromUtf8( PyUnicode_AsUTF8( exception ) );
|
|
}
|
|
else
|
|
{
|
|
PyObject* str = PyObject_Str( exception );
|
|
pyStrException = QString::fromUtf8( PyUnicode_AsUTF8( str ) );
|
|
Py_XDECREF( str );
|
|
}
|
|
|
|
SIP_RELEASE_GIL( sipGILState );
|
|
|
|
QString strException = "Server internal error";
|
|
if ( !pyStrException.isEmpty() )
|
|
{
|
|
strException = pyStrException;
|
|
}
|
|
|
|
throw QgsServerException( strException );
|
|
%End
|