oqtopus 0.1.18__py3-none-any.whl → 0.1.19__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
oqtopus/core/module.py CHANGED
@@ -3,7 +3,7 @@ import json
3
3
  from qgis.PyQt.QtCore import QByteArray, QObject, QUrl, pyqtSignal
4
4
  from qgis.PyQt.QtNetwork import QNetworkAccessManager, QNetworkReply, QNetworkRequest
5
5
 
6
- from ..utils.plugin_utils import PluginUtils
6
+ from ..utils.plugin_utils import PluginUtils, logger
7
7
  from .module_package import ModulePackage
8
8
 
9
9
 
@@ -25,8 +25,9 @@ class Module(QObject):
25
25
  return f"Module(name={self.name}, organisation={self.organisation}, repository={self.repository})"
26
26
 
27
27
  def start_load_versions(self):
28
- url = QUrl(f"https://api.github.com/repos/{self.organisation}/{self.repository}/releases")
29
- request = QNetworkRequest(url)
28
+ url = f"https://api.github.com/repos/{self.organisation}/{self.repository}/releases"
29
+ logger.info(f"Loading versions from '{url}'...")
30
+ request = QNetworkRequest(QUrl(url))
30
31
  headers = PluginUtils.get_github_headers()
31
32
  for key, value in headers.items():
32
33
  request.setRawHeader(QByteArray(key.encode()), QByteArray(value.encode()))
@@ -83,8 +84,10 @@ class Module(QObject):
83
84
  )
84
85
  self.development_versions.append(mainVersion)
85
86
 
86
- url = QUrl(f"https://api.github.com/repos/{self.organisation}/{self.repository}/pulls")
87
- request = QNetworkRequest(url)
87
+ url = f"https://api.github.com/repos/{self.organisation}/{self.repository}/pulls"
88
+ logger.info(f"Loading development versions from '{url}'...")
89
+
90
+ request = QNetworkRequest(QUrl(url))
88
91
  headers = PluginUtils.get_github_headers()
89
92
  for key, value in headers.items():
90
93
  request.setRawHeader(QByteArray(key.encode()), QByteArray(value.encode()))
@@ -116,3 +116,8 @@ class ModulePackage:
116
116
  self.created_at = QDateTime.fromString(json_payload["created_at"], Qt.DateFormat.ISODate)
117
117
  self.prerelease = False
118
118
  self.html_url = json_payload["html_url"]
119
+
120
+ is_on_a_fork = json_payload["head"]["repo"]["fork"]
121
+ if is_on_a_fork:
122
+ self.organisation = json_payload["head"]["repo"]["owner"]["login"]
123
+ self.repository = json_payload["head"]["repo"]["name"]
@@ -62,6 +62,11 @@ class LogModel(QAbstractItemModel):
62
62
  | Qt.ItemFlag.ItemNeverHasChildren
63
63
  )
64
64
 
65
+ def clear(self):
66
+ self.beginResetModel()
67
+ self.logs = []
68
+ self.endResetModel()
69
+
65
70
 
66
71
  class LogFilterProxyModel(QSortFilterProxyModel):
67
72
  LEVELS = ["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"]
@@ -8,6 +8,7 @@ from qgis.PyQt.QtCore import Qt
8
8
  from qgis.PyQt.QtWidgets import QMessageBox, QWidget
9
9
 
10
10
  from ..core.module import Module
11
+ from ..core.module_package import ModulePackage
11
12
  from ..utils.plugin_utils import PluginUtils, logger
12
13
  from ..utils.qt_utils import CriticalMessageBox, OverrideCursor, QtUtils
13
14
 
@@ -81,7 +82,16 @@ class ModuleWidget(QWidget, DIALOG_UI):
81
82
 
82
83
  logger.info(f"PUM config loaded from '{pumConfigFilename}'")
83
84
 
84
- self.parameters_groupbox.setParameters(self.__pum_config.parameters())
85
+ try:
86
+ self.parameters_groupbox.setParameters(self.__pum_config.parameters())
87
+ except Exception as exception:
88
+ CriticalMessageBox(
89
+ self.tr("Error"),
90
+ self.tr(f"Can't load parameters from PUM config '{pumConfigFilename}':"),
91
+ exception,
92
+ self,
93
+ ).exec()
94
+ return
85
95
 
86
96
  self.db_demoData_comboBox.clear()
87
97
  for demo_data_name, demo_data_file in self.__pum_config.demo_data().items():
@@ -107,9 +117,19 @@ class ModuleWidget(QWidget, DIALOG_UI):
107
117
  ).exec()
108
118
  return
109
119
 
110
- parameters = self.parameters_groupbox.parameters_values()
111
-
112
120
  try:
121
+ parameters = self.parameters_groupbox.parameters_values()
122
+
123
+ beta_testing = False
124
+ if (
125
+ self.__current_module_package.type == ModulePackage.Type.PULL_REQUEST
126
+ or self.__current_module_package.type == ModulePackage.Type.BRANCH
127
+ ):
128
+ logger.warning(
129
+ "Installing module from branch or pull request: set parameter beta_testing to True"
130
+ )
131
+ beta_testing = True
132
+
113
133
  upgrader = Upgrader(
114
134
  config=self.__pum_config,
115
135
  )
@@ -119,6 +139,7 @@ class ModuleWidget(QWidget, DIALOG_UI):
119
139
  connection=self.__database_connection,
120
140
  roles=self.db_parameters_CreateAndGrantRoles_checkBox.isChecked(),
121
141
  grant=self.db_parameters_CreateAndGrantRoles_checkBox.isChecked(),
142
+ beta_testing=beta_testing,
122
143
  )
123
144
 
124
145
  if self.db_demoData_checkBox.isChecked():
@@ -20,21 +20,21 @@ class ParameterWidget(QWidget):
20
20
  self.layout.setContentsMargins(0, 0, 0, 0)
21
21
  self.setLayout(self.layout)
22
22
  self.value = None
23
- self.__valueChanged = False
24
23
 
25
24
  if parameter_definition.type != ParameterType.BOOLEAN:
26
25
  self.layout.addWidget(QLabel(parameter_definition.name, self))
27
26
 
28
27
  if parameter_definition.type == ParameterType.BOOLEAN:
29
28
  self.widget = QCheckBox(parameter_definition.name, self)
30
- self.widget.setChecked(parameter_definition.default)
31
- self.widget.checked.connect(self.__valueChanged)
29
+ if parameter_definition.default is not None:
30
+ self.widget.setChecked(parameter_definition.default)
32
31
  self.layout.addWidget(self.widget)
33
32
  self.value = lambda: self.widget.isChecked()
34
33
  elif parameter_definition.type in (
35
34
  ParameterType.DECIMAL,
36
35
  ParameterType.INTEGER,
37
36
  ParameterType.TEXT,
37
+ ParameterType.PATH,
38
38
  ):
39
39
  self.widget = QLineEdit(self)
40
40
  if parameter_definition.default is not None:
@@ -46,6 +46,8 @@ class ParameterWidget(QWidget):
46
46
  self.value = lambda: float(self.widget.text() or self.widget.placeholderText())
47
47
  else:
48
48
  self.value = lambda: self.widget.text() or self.widget.placeholderText()
49
+ else:
50
+ raise ValueError(f"Unknown parameter type '{parameter_definition.type}'")
49
51
 
50
52
 
51
53
  class ParametersGroupBox(QGroupBox):
@@ -73,7 +73,9 @@ class PluginWidget(QWidget, DIALOG_UI):
73
73
  QMessageBox.warning(
74
74
  self,
75
75
  self.tr("Not implemented"),
76
- self.tr("Installation is not implemented yet."),
76
+ self.tr(
77
+ 'Installation is not implemented yet.\nAt the moment, you can only copy the plugin zip file to a directory and use "Install from ZIP" in QGIS.'
78
+ ),
77
79
  )
78
80
  return
79
81
 
@@ -7,7 +7,7 @@
7
7
  <x>0</x>
8
8
  <y>0</y>
9
9
  <width>513</width>
10
- <height>540</height>
10
+ <height>542</height>
11
11
  </rect>
12
12
  </property>
13
13
  <property name="windowTitle">
@@ -64,6 +64,9 @@
64
64
  <layout class="QGridLayout" name="gridLayout_5">
65
65
  <item row="5" column="1">
66
66
  <widget class="QLineEdit" name="parameters_password_lineEdit">
67
+ <property name="echoMode">
68
+ <enum>QLineEdit::PasswordEchoOnEdit</enum>
69
+ </property>
67
70
  <property name="clearButtonEnabled">
68
71
  <bool>true</bool>
69
72
  </property>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: oqtopus
3
- Version: 0.1.18
3
+ Version: 0.1.19
4
4
  Summary: A QGIS module manager
5
5
  Author-email: Damiano Lombardi <damiano@opengis.ch>
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -1,9 +1,9 @@
1
1
  oqtopus/__init__.py,sha256=PUl5ObSgoyF6tcNphBip9Rff8lul0t9VobiwsLKwgFA,104
2
2
  oqtopus/oqtopus.py,sha256=BF_JSF2oOCzc8Qr7Z0B7FJdYrdAR3FR9L7oXh3QatL4,1860
3
3
  oqtopus/oqtopus_plugin.py,sha256=Mpyk6xIgZ1wehBzv70xc6OfddiHQYfXnU6-2E6dDihs,5815
4
- oqtopus/core/module.py,sha256=XOGI7R_2LyoscXAA-hCTKu7KjJ6ppAPgVFwrtSBiWTA,4631
4
+ oqtopus/core/module.py,sha256=47iDvEOXFNWY77cbi7LhQs5qTUwRNuauieqNTPf9UKY,4766
5
5
  oqtopus/core/module_asset.py,sha256=qr_wwriJ_rZd86EuBo_Rx-MDCDJNYA6odhk6F-Z6YFA,467
6
- oqtopus/core/module_package.py,sha256=ilMWlArVmvULhoKHEXg7hNwiE6pLUsAMkLwtOes4j5A,3726
6
+ oqtopus/core/module_package.py,sha256=sYCnKMOMW4R9ULP3oresDNMAaFEb8y_pLa4Lvjdl7RI,3958
7
7
  oqtopus/core/modules_config.py,sha256=iEN_JYuFuGpF4dyfnmcJPfp_bIzrn_PNbq9G1DElyCg,186
8
8
  oqtopus/core/package_prepare_task.py,sha256=YqIjUbCqDyCd5t0Un71ECgY0LW_uFFxuXyO701nXZ_M,5483
9
9
  oqtopus/gui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -11,18 +11,18 @@ oqtopus/gui/about_dialog.py,sha256=dDNwHxKf_M82Z-TKmXW1fXmnI_WSV_7MShqz05trzRw,2
11
11
  oqtopus/gui/database_connection_widget.py,sha256=7wFO1ysGwoNoXFFakNz6TktwOm28z3dRmbVxavIXX0E,6375
12
12
  oqtopus/gui/database_create_dialog.py,sha256=afltzI1s9B0QGnZl6mgsX-0EvwOUArMu1Vxar4RsYvs,9055
13
13
  oqtopus/gui/database_duplicate_dialog.py,sha256=Oz8pob6HxZHbV5Thcrhy4dPvGEI4_brSxw9KIcTc2ZE,4017
14
- oqtopus/gui/logs_widget.py,sha256=B9Kbwt6cD40CV5mfcyaHZ5foJIPvWRednbxIRdeRgpU,6593
14
+ oqtopus/gui/logs_widget.py,sha256=lxP0rZYUF4ahR7RtM3SJCbk5nk70SVC9Ien6TvBsflY,6698
15
15
  oqtopus/gui/main_dialog.py,sha256=7nxn4vL5fIege0qBPP1mrOp5jP0YWXFJ_k_ywGeKD8M,6362
16
16
  oqtopus/gui/module_selection_widget.py,sha256=57M9sM_VhD5lAfxqOxEPWUHiB2Ty6EQQkRnvAZ0VSv8,16116
17
- oqtopus/gui/module_widget.py,sha256=ev8LoYVREg45mLLU9qu5bPhS4uDiayFAAy8e2zoLk-c,7618
18
- oqtopus/gui/parameters_groupbox.py,sha256=Lgwv76epIvZOZA0y9sxNcbuZ0Tun-ObUzvOa6eM3EzM,2842
19
- oqtopus/gui/plugin_widget.py,sha256=BDtheJ35yrk55Th0vHulHe99jsJUMY11lKBgrHHmkiE,5622
17
+ oqtopus/gui/module_widget.py,sha256=WEE0paMIbRDfJ2KvIByZtHK4H1TULXLBFb1c4ydQttg,8443
18
+ oqtopus/gui/parameters_groupbox.py,sha256=ZXoIbTDrpoe_SfxyYr7mNbQOi0vHAJSW8cPIXzGKdmE,2938
19
+ oqtopus/gui/plugin_widget.py,sha256=8av8KI3p8gnXOlSssB5-dFVvq4vaLfqGjY9NVSNiBb0,5757
20
20
  oqtopus/gui/project_widget.py,sha256=T34MyHzHgKw1Dl6V67MKPneSd9DDgrWhuhj7mrcvjSg,6696
21
21
  oqtopus/gui/settings_dialog.py,sha256=wgwVCuAIBh9iLrs9y5HfE99LrTV0rEYbL3frMBlW0cQ,1547
22
22
  oqtopus/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
23
  oqtopus/ui/about_dialog.ui,sha256=2oa5u3LIvN3prHyELUG-bwDuEHlBn9-uuA4CwYsEARo,6236
24
24
  oqtopus/ui/database_connection_widget.ui,sha256=0hLBaOx0KcLTH6RlkziVj-tsczjHDUGC-3EXQYgcTuE,3729
25
- oqtopus/ui/database_create_dialog.ui,sha256=wM_x54bfgdSaShdx6MwBgDx_R-O_ckeoynEhFjs-Sws,8261
25
+ oqtopus/ui/database_create_dialog.ui,sha256=4xP4L5wrXAZH7NVdnyiRTgvI-JykLzH5oH-FXHASWQM,8377
26
26
  oqtopus/ui/database_duplicate_dialog.ui,sha256=EzMRYhlxsiP_sr9ixBJn4lnefM5R_p1oXx4RCyMAj9U,3826
27
27
  oqtopus/ui/logs_widget.ui,sha256=oAgEtRUBXB-DzLC0vmBP-PEA-Uu3d3ppFm0ahs1jHQI,2785
28
28
  oqtopus/ui/main_dialog.ui,sha256=mB_VeJ-4wXJm3UTS5leGg_ZgFwgBJaS1QruBqnYMh6U,2650
@@ -36,10 +36,10 @@ oqtopus/utils/plugin_utils.py,sha256=v-Oxu2zs8tQWzEdHnwEl1mseapyvpPS-lHimJNK2zHY
36
36
  oqtopus/utils/qt_utils.py,sha256=HPe9tOQQH9R9xZp4rGphVhSJO7220q368xmreDu5-6g,3243
37
37
  oqtopus/utils/tmmtlogging.py,sha256=BSAPrhQGCuH2boMG4bP8QFyLfoss1uR4pO_pXjTA1eQ,1733
38
38
  oqtopus/utils/translation.py,sha256=p1d5N6CYIf94fGYdPQnJamdum9MVBlPkJ24c557rqdg,2647
39
- oqtopus-0.1.18.dist-info/licenses/LICENSE,sha256=gXf5dRMhNSbfLPYYTY_5hsZ1r7UU1OaKQEAQUhuIBkM,18092
39
+ oqtopus-0.1.19.dist-info/licenses/LICENSE,sha256=gXf5dRMhNSbfLPYYTY_5hsZ1r7UU1OaKQEAQUhuIBkM,18092
40
40
  tests/__init__.py,sha256=z5CxS92efenLcDm64Sifx26EjZBCWPO4oVvaEEHJJ6w,444
41
41
  tests/test_plugin_load.py,sha256=HuVLdrsn2PSjKIrvcLj0EH7vNE8-0jBMmHZHihsqB3Q,517
42
- oqtopus-0.1.18.dist-info/METADATA,sha256=qk2WDV_BKgW05EmceSuaW1IwRFs-ChcbsxX5Eof4QbY,21475
43
- oqtopus-0.1.18.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
44
- oqtopus-0.1.18.dist-info/top_level.txt,sha256=i4DHi21kcGIzrF8DlgsKj-UCENHg_NebTRac7cwt32A,14
45
- oqtopus-0.1.18.dist-info/RECORD,,
42
+ oqtopus-0.1.19.dist-info/METADATA,sha256=Dc2t_sJ8p4179aLZl3aOPterDx9_sB31H9STTDN5LhY,21475
43
+ oqtopus-0.1.19.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
44
+ oqtopus-0.1.19.dist-info/top_level.txt,sha256=i4DHi21kcGIzrF8DlgsKj-UCENHg_NebTRac7cwt32A,14
45
+ oqtopus-0.1.19.dist-info/RECORD,,