From f7401c9b272f12fd543c36fe8c2e3217dcede791 Mon Sep 17 00:00:00 2001 From: Salvatore Larosa Date: Sat, 30 May 2015 17:29:45 +0200 Subject: [PATCH] [user expression] Fix crash and add a log message when the expression is not valid, fixes #12852 --- python/user.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/python/user.py b/python/user.py index d8a2f85b2f9..553946b4045 100644 --- a/python/user.py +++ b/python/user.py @@ -1,8 +1,10 @@ import os import sys import glob +import traceback -from qgis.core import QgsApplication +from PyQt4.QtCore import QCoreApplication +from qgis.core import QgsApplication, QgsMessageLog def load_user_expressions(path): """ @@ -14,9 +16,16 @@ def load_user_expressions(path): for name in names: if name == "__init__": continue - # As user expression functions should be registed with qgsfunction + # As user expression functions should be registered with qgsfunction # just importing the file is enough to get it to load the functions into QGIS - __import__("expressions.{0}".format(name), locals(), globals()) + try: + __import__("expressions.{0}".format(name), locals(), globals()) + except: + error = traceback.format_exc() + msgtitle = QCoreApplication.translate("UserExpressions", "User expressions") + msg = QCoreApplication.translate("UserExpressions", + "The user expression {0} is not valid".format(name)) + QgsMessageLog.logMessage(msg +"\n"+ error, msgtitle, QgsMessageLog.WARNING) userpythonhome = os.path.join(QgsApplication.qgisSettingsDirPath(), "python")