Skip to content

Commit 3a03c98

Browse files
committed
[processing] configurable URL for scripts and models repository
1 parent d2ff57e commit 3a03c98

3 files changed

Lines changed: 35 additions & 6 deletions

File tree

‎python/plugins/processing/core/ProcessingConfig.py‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,8 @@ class ProcessingConfig(object):
6464
WARN_UNMATCHING_EXTENT_CRS = 'WARN_UNMATCHING_EXTENT_CRS'
6565
DEFAULT_OUTPUT_RASTER_LAYER_EXT = 'DEFAULT_OUTPUT_RASTER_LAYER_EXT'
6666
DEFAULT_OUTPUT_VECTOR_LAYER_EXT = 'DEFAULT_OUTPUT_VECTOR_LAYER_EXT'
67-
SHOW_PROVIDERS_TOOLTIP = "SHOW_PROVIDERS_TOOLTIP"
67+
SHOW_PROVIDERS_TOOLTIP = 'SHOW_PROVIDERS_TOOLTIP'
68+
MODELS_SCRIPTS_REPO = 'MODELS_SCRIPTS_REPO'
6869

6970
settings = {}
7071
settingIcons = {}
@@ -156,6 +157,11 @@ def initialize():
156157
ProcessingConfig.tr('General'),
157158
ProcessingConfig.RECENT_ALGORITHMS,
158159
ProcessingConfig.tr('Recent algorithms'), '', hidden=True))
160+
ProcessingConfig.addSetting(Setting(
161+
ProcessingConfig.tr('General'),
162+
ProcessingConfig.MODELS_SCRIPTS_REPO,
163+
ProcessingConfig.tr('Scripts and models repository'),
164+
'https://raw.githubusercontent.com/qgis/QGIS-Processing/master'))
159165
extensions = processing.tools.dataobjects.getSupportedOutputVectorLayerExtensions()
160166
ProcessingConfig.addSetting(Setting(
161167
ProcessingConfig.tr('General'),

‎python/plugins/processing/gui/GetScriptsAndModels.py‎

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,15 @@
3535
from qgis.PyQt import uic
3636
from qgis.PyQt.QtCore import Qt, QCoreApplication, QUrl
3737
from qgis.PyQt.QtGui import QIcon, QCursor
38-
from qgis.PyQt.QtWidgets import QApplication, QTreeWidgetItem, QPushButton
38+
from qgis.PyQt.QtWidgets import QApplication, QTreeWidgetItem, QPushButton, QMessageBox
3939
from qgis.PyQt.QtNetwork import QNetworkReply, QNetworkRequest
4040

4141
from qgis.utils import iface, show_message_log
4242
from qgis.core import QgsNetworkAccessManager, QgsMessageLog
4343
from qgis.gui import QgsMessageBar
4444

4545
from processing.core.alglist import algList
46+
from processing.core.ProcessingConfig import ProcessingConfig
4647
from processing.gui.ToolboxAction import ToolboxAction
4748
from processing.gui import Help2Html
4849
from processing.gui.Help2Html import getDescription, ALG_DESC, ALG_VERSION, ALG_CREATOR
@@ -65,6 +66,12 @@ def getIcon(self):
6566
return QIcon(os.path.join(pluginPath, 'images', 'script.svg'))
6667

6768
def execute(self):
69+
repoUrl = ProcessingConfig.getSetting(ProcessingConfig.MODELS_SCRIPTS_REPO)
70+
if repoUrl is None or repoUrl == '':
71+
QMessageBox.warning(None,
72+
self.tr('Repository error'),
73+
self.tr('Scripts and models repository is not configured.'))
74+
return
6875
dlg = GetScriptsAndModelsDialog(GetScriptsAndModelsDialog.SCRIPTS)
6976
dlg.exec_()
7077
if dlg.updateProvider:
@@ -81,6 +88,13 @@ def getIcon(self):
8188
return QIcon(os.path.join(pluginPath, 'images', 'r.svg'))
8289

8390
def execute(self):
91+
repoUrl = ProcessingConfig.getSetting(ProcessingConfig.MODELS_SCRIPTS_REPO)
92+
if repoUrl is None or repoUrl == '':
93+
QMessageBox.warning(None,
94+
self.tr('Repository error'),
95+
self.tr('Scripts and models repository is not configured.'))
96+
return
97+
8498
dlg = GetScriptsAndModelsDialog(GetScriptsAndModelsDialog.RSCRIPTS)
8599
dlg.exec_()
86100
if dlg.updateProvider:
@@ -97,6 +111,13 @@ def getIcon(self):
97111
return QIcon(os.path.join(pluginPath, 'images', 'model.svg'))
98112

99113
def execute(self):
114+
repoUrl = ProcessingConfig.getSetting(ProcessingConfig.MODELS_SCRIPTS_REPO)
115+
if repoUrl is None or repoUrl == '':
116+
QMessageBox.warning(None,
117+
self.tr('Repository error'),
118+
self.tr('Scripts and models repository is not configured.'))
119+
return
120+
100121
dlg = GetScriptsAndModelsDialog(GetScriptsAndModelsDialog.MODELS)
101122
dlg.exec_()
102123
if dlg.updateProvider:
@@ -133,18 +154,20 @@ def __init__(self, resourceType):
133154

134155
self.manager = QgsNetworkAccessManager.instance()
135156

157+
repoUrl = ProcessingConfig.getSetting(ProcessingConfig.MODELS_SCRIPTS_REPO)
158+
136159
self.resourceType = resourceType
137160
if self.resourceType == self.MODELS:
138161
self.folder = ModelerUtils.modelsFolders()[0]
139-
self.urlBase = 'https://raw.githubusercontent.com/qgis/QGIS-Processing/master/models/'
162+
self.urlBase = '{}/models/'.format(repoUrl)
140163
self.icon = QIcon(os.path.join(pluginPath, 'images', 'model.svg'))
141164
elif self.resourceType == self.SCRIPTS:
142165
self.folder = ScriptUtils.scriptsFolders()[0]
143-
self.urlBase = 'https://raw.githubusercontent.com/qgis/QGIS-Processing/master/scripts/'
166+
self.urlBase = '{}/scripts/'.format(repoUrl)
144167
self.icon = QIcon(os.path.join(pluginPath, 'images', 'script.svg'))
145168
else:
146169
self.folder = RUtils.RScriptsFolders()[0]
147-
self.urlBase = 'https://raw.githubusercontent.com/qgis/QGIS-Processing/master/rscripts/'
170+
self.urlBase = '{}/rscripts/'.format(repoUrl)
148171
self.icon = QIcon(os.path.join(pluginPath, 'images', 'r.svg'))
149172

150173
self.lastSelectedItem = None

‎python/plugins/processing/script/ScriptAlgorithmProvider.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ def __init__(self):
5050
CreateNewScriptAction.SCRIPT_PYTHON),
5151
AddScriptFromFileAction(),
5252
GetScriptsAction(),
53-
CreateScriptCollectionPluginAction(), ])
53+
CreateScriptCollectionPluginAction()])
5454
self.contextMenuActions = \
5555
[EditScriptAction(EditScriptAction.SCRIPT_PYTHON),
5656
DeleteScriptAction(DeleteScriptAction.SCRIPT_PYTHON)]

0 commit comments

Comments
 (0)