oqtopus 0.1.18__py3-none-any.whl → 0.1.20__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 +8 -5
- oqtopus/core/module_package.py +5 -0
- oqtopus/gui/database_connection_widget.py +9 -0
- oqtopus/gui/database_create_dialog.py +4 -8
- oqtopus/gui/database_duplicate_dialog.py +33 -12
- oqtopus/gui/logs_widget.py +5 -0
- oqtopus/gui/module_widget.py +24 -3
- oqtopus/gui/parameters_groupbox.py +5 -3
- oqtopus/gui/plugin_widget.py +3 -1
- oqtopus/ui/database_create_dialog.ui +37 -37
- {oqtopus-0.1.18.dist-info → oqtopus-0.1.20.dist-info}/METADATA +1 -1
- {oqtopus-0.1.18.dist-info → oqtopus-0.1.20.dist-info}/RECORD +15 -15
- {oqtopus-0.1.18.dist-info → oqtopus-0.1.20.dist-info}/WHEEL +0 -0
- {oqtopus-0.1.18.dist-info → oqtopus-0.1.20.dist-info}/licenses/LICENSE +0 -0
- {oqtopus-0.1.18.dist-info → oqtopus-0.1.20.dist-info}/top_level.txt +0 -0
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 =
|
|
29
|
-
|
|
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 =
|
|
87
|
-
|
|
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()))
|
oqtopus/core/module_package.py
CHANGED
|
@@ -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"]
|
|
@@ -152,9 +152,18 @@ class DatabaseConnectionWidget(QWidget, DIALOG_UI):
|
|
|
152
152
|
databaseDuplicateDialog = DatabaseDuplicateDialog(
|
|
153
153
|
selected_service=self.db_services_comboBox.currentText(), parent=self
|
|
154
154
|
)
|
|
155
|
+
|
|
156
|
+
# Close the current connection otherwise it will block the database duplication
|
|
157
|
+
if self.__database_connection is not None:
|
|
158
|
+
self.__database_connection.close()
|
|
159
|
+
self.__database_connection = None
|
|
160
|
+
|
|
155
161
|
if databaseDuplicateDialog.exec() == QDialog.DialogCode.Rejected:
|
|
162
|
+
self.__serviceChanged()
|
|
156
163
|
return
|
|
157
164
|
|
|
165
|
+
self.__loadDatabaseInformations()
|
|
166
|
+
|
|
158
167
|
def __set_connection(self, connection):
|
|
159
168
|
"""
|
|
160
169
|
Set the current database connection and emit the signal_connectionChanged signal.
|
|
@@ -73,8 +73,6 @@ class DatabaseCreateDialog(QDialog, DIALOG_UI):
|
|
|
73
73
|
self.parameters_port_lineEdit.setPlaceholderText(DEFAULT_PG_PORT)
|
|
74
74
|
self.parameters_database_lineEdit.setPlaceholderText(DEFAULT_PG_DB)
|
|
75
75
|
|
|
76
|
-
self.database_lineEdit.textChanged.connect(self._databaseTextChanged)
|
|
77
|
-
|
|
78
76
|
self.buttonBox.accepted.connect(self._accept)
|
|
79
77
|
|
|
80
78
|
if self.existingService_comboBox.count() > 0:
|
|
@@ -106,9 +104,6 @@ class DatabaseCreateDialog(QDialog, DIALOG_UI):
|
|
|
106
104
|
def _enterManuallyToggled(self, checked):
|
|
107
105
|
self.parameters_frame.setEnabled(checked)
|
|
108
106
|
|
|
109
|
-
def _databaseTextChanged(self, text):
|
|
110
|
-
self.database_label.setText(text)
|
|
111
|
-
|
|
112
107
|
def _accept(self):
|
|
113
108
|
service_name = self.created_service_name()
|
|
114
109
|
|
|
@@ -193,9 +188,10 @@ class DatabaseCreateDialog(QDialog, DIALOG_UI):
|
|
|
193
188
|
service_name = self.existingService_comboBox.currentText()
|
|
194
189
|
existing_settings = pgserviceparser_service_config(service_name)
|
|
195
190
|
settings.update(existing_settings)
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
191
|
+
|
|
192
|
+
# Overwrite dbname with the new database name
|
|
193
|
+
if self.database_lineEdit.text():
|
|
194
|
+
settings["dbname"] = self.database_lineEdit.text()
|
|
199
195
|
|
|
200
196
|
return settings
|
|
201
197
|
|
|
@@ -23,11 +23,13 @@
|
|
|
23
23
|
# ---------------------------------------------------------------------
|
|
24
24
|
|
|
25
25
|
import psycopg
|
|
26
|
+
from pgserviceparser import full_config as pgserviceparser_full_config
|
|
26
27
|
from pgserviceparser import service_config as pgserviceparser_service_config
|
|
28
|
+
from pgserviceparser import write_service as pgserviceparser_write_service
|
|
27
29
|
from qgis.PyQt.QtCore import Qt
|
|
28
30
|
from qgis.PyQt.QtWidgets import QDialog, QMessageBox
|
|
29
31
|
|
|
30
|
-
from ..utils.plugin_utils import PluginUtils
|
|
32
|
+
from ..utils.plugin_utils import PluginUtils, logger
|
|
31
33
|
from ..utils.qt_utils import OverrideCursor
|
|
32
34
|
|
|
33
35
|
DIALOG_UI = PluginUtils.get_ui_class("database_duplicate_dialog.ui")
|
|
@@ -61,6 +63,23 @@ class DatabaseDuplicateDialog(QDialog, DIALOG_UI):
|
|
|
61
63
|
|
|
62
64
|
except Exception as exception:
|
|
63
65
|
errorText = self.tr(f"Can't connect to service '{service_name}':\n{exception}.")
|
|
66
|
+
logger.error(errorText)
|
|
67
|
+
QMessageBox.critical(self, "Error", errorText)
|
|
68
|
+
return
|
|
69
|
+
|
|
70
|
+
# Create new service configuration
|
|
71
|
+
new_service_name = self.newService_lineEdit.text()
|
|
72
|
+
|
|
73
|
+
# Check if the new service name is already in use
|
|
74
|
+
try:
|
|
75
|
+
if new_service_name in pgserviceparser_full_config():
|
|
76
|
+
errorText = self.tr(f"Service name '{new_service_name}' is already in use.")
|
|
77
|
+
logger.error(errorText)
|
|
78
|
+
QMessageBox.critical(self, "Error", errorText)
|
|
79
|
+
return
|
|
80
|
+
except Exception as e:
|
|
81
|
+
errorText = self.tr(f"Error checking existing service names:\n{e}.")
|
|
82
|
+
logger.error(errorText)
|
|
64
83
|
QMessageBox.critical(self, "Error", errorText)
|
|
65
84
|
return
|
|
66
85
|
|
|
@@ -75,25 +94,27 @@ class DatabaseDuplicateDialog(QDialog, DIALOG_UI):
|
|
|
75
94
|
)
|
|
76
95
|
except psycopg.Error as e:
|
|
77
96
|
errorText = self.tr(f"Error duplicating database:\n{e}.")
|
|
97
|
+
logger.error(errorText)
|
|
78
98
|
QMessageBox.critical(self, "Error", errorText)
|
|
79
99
|
return
|
|
80
100
|
finally:
|
|
81
101
|
database_connection.close()
|
|
82
102
|
|
|
83
|
-
#
|
|
84
|
-
new_service_name = self.newService_lineEdit.text()
|
|
85
|
-
new_service_config = pgserviceparser_service_config(
|
|
86
|
-
new_service_name,
|
|
87
|
-
dbname=new_database_name,
|
|
88
|
-
host=self.__existing_service_config.get("host", ""),
|
|
89
|
-
port=self.__existing_service_config.get("port", ""),
|
|
90
|
-
user=self.__existing_service_config.get("user", ""),
|
|
91
|
-
password=self.__existing_service_config.get("password", ""),
|
|
92
|
-
)
|
|
103
|
+
# Write the new service configuration
|
|
93
104
|
try:
|
|
94
|
-
|
|
105
|
+
new_service_config = {
|
|
106
|
+
"dbname": new_database_name,
|
|
107
|
+
"host": self.__existing_service_config.get("host", ""),
|
|
108
|
+
"port": self.__existing_service_config.get("port", ""),
|
|
109
|
+
"user": self.__existing_service_config.get("user", ""),
|
|
110
|
+
"password": self.__existing_service_config.get("password", ""),
|
|
111
|
+
}
|
|
112
|
+
pgserviceparser_write_service(
|
|
113
|
+
new_service_name, new_service_config, create_if_not_found=True
|
|
114
|
+
)
|
|
95
115
|
except Exception as e:
|
|
96
116
|
errorText = self.tr(f"Error writing new service configuration:\n{e}.")
|
|
117
|
+
logger.error(errorText)
|
|
97
118
|
QMessageBox.critical(self, "Error", errorText)
|
|
98
119
|
return
|
|
99
120
|
|
oqtopus/gui/logs_widget.py
CHANGED
|
@@ -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"]
|
oqtopus/gui/module_widget.py
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
31
|
-
|
|
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):
|
oqtopus/gui/plugin_widget.py
CHANGED
|
@@ -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(
|
|
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,17 +7,20 @@
|
|
|
7
7
|
<x>0</x>
|
|
8
8
|
<y>0</y>
|
|
9
9
|
<width>513</width>
|
|
10
|
-
<height>
|
|
10
|
+
<height>542</height>
|
|
11
11
|
</rect>
|
|
12
12
|
</property>
|
|
13
13
|
<property name="windowTitle">
|
|
14
|
-
<string>Create
|
|
14
|
+
<string>Create Database</string>
|
|
15
15
|
</property>
|
|
16
16
|
<layout class="QVBoxLayout" name="verticalLayout">
|
|
17
17
|
<item>
|
|
18
18
|
<widget class="QGroupBox" name="groupBox_2">
|
|
19
|
+
<property name="toolTip">
|
|
20
|
+
<string><html><head/><body><p>To issue a <span style=" font-style:italic;">CREATE DATABASE</span> command, you must first be connected to the PostgreSQL server. Select an existing administrative connection (often named postgres) from a service or manually.<br/>This connection is used to perform the creation action, and as a template for the new service to be created.</p></body></html></string>
|
|
21
|
+
</property>
|
|
19
22
|
<property name="title">
|
|
20
|
-
<string>
|
|
23
|
+
<string>Connection to use</string>
|
|
21
24
|
</property>
|
|
22
25
|
<layout class="QGridLayout" name="gridLayout_2">
|
|
23
26
|
<item row="0" column="1">
|
|
@@ -64,6 +67,9 @@
|
|
|
64
67
|
<layout class="QGridLayout" name="gridLayout_5">
|
|
65
68
|
<item row="5" column="1">
|
|
66
69
|
<widget class="QLineEdit" name="parameters_password_lineEdit">
|
|
70
|
+
<property name="echoMode">
|
|
71
|
+
<enum>QLineEdit::PasswordEchoOnEdit</enum>
|
|
72
|
+
</property>
|
|
67
73
|
<property name="clearButtonEnabled">
|
|
68
74
|
<bool>true</bool>
|
|
69
75
|
</property>
|
|
@@ -161,25 +167,6 @@
|
|
|
161
167
|
</attribute>
|
|
162
168
|
</widget>
|
|
163
169
|
</item>
|
|
164
|
-
<item row="6" column="1">
|
|
165
|
-
<widget class="QLineEdit" name="database_lineEdit">
|
|
166
|
-
<property name="font">
|
|
167
|
-
<font>
|
|
168
|
-
<italic>false</italic>
|
|
169
|
-
</font>
|
|
170
|
-
</property>
|
|
171
|
-
<property name="text">
|
|
172
|
-
<string/>
|
|
173
|
-
</property>
|
|
174
|
-
</widget>
|
|
175
|
-
</item>
|
|
176
|
-
<item row="6" column="0">
|
|
177
|
-
<widget class="QLabel" name="label_4">
|
|
178
|
-
<property name="text">
|
|
179
|
-
<string>Database</string>
|
|
180
|
-
</property>
|
|
181
|
-
</widget>
|
|
182
|
-
</item>
|
|
183
170
|
<item row="0" column="0">
|
|
184
171
|
<widget class="QRadioButton" name="useService_radioButton">
|
|
185
172
|
<property name="text">
|
|
@@ -199,35 +186,48 @@
|
|
|
199
186
|
<item>
|
|
200
187
|
<widget class="QGroupBox" name="groupBox">
|
|
201
188
|
<property name="title">
|
|
202
|
-
<string>
|
|
189
|
+
<string>New database</string>
|
|
203
190
|
</property>
|
|
204
191
|
<layout class="QGridLayout" name="gridLayout_3">
|
|
205
|
-
<item row="
|
|
192
|
+
<item row="1" column="0">
|
|
206
193
|
<widget class="QLabel" name="label">
|
|
194
|
+
<property name="toolTip">
|
|
195
|
+
<string>Enter a convenient alias that will be created in your pg_service.conf file.</string>
|
|
196
|
+
</property>
|
|
207
197
|
<property name="text">
|
|
208
|
-
<string>Service</string>
|
|
198
|
+
<string>Service name</string>
|
|
209
199
|
</property>
|
|
210
200
|
</widget>
|
|
211
201
|
</item>
|
|
212
|
-
<item row="0" column="1">
|
|
213
|
-
<widget class="QLineEdit" name="service_lineEdit"/>
|
|
214
|
-
</item>
|
|
215
202
|
<item row="1" column="1">
|
|
216
|
-
<widget class="
|
|
217
|
-
<property name="
|
|
218
|
-
<font>
|
|
219
|
-
|
|
220
|
-
|
|
203
|
+
<widget class="QLineEdit" name="service_lineEdit">
|
|
204
|
+
<property name="toolTip">
|
|
205
|
+
<string><html><head/><body><p>Enter a convenient alias that will be created in your <span style=" font-style:italic;">pg_service.conf</span> file.</p></body></html></string>
|
|
206
|
+
</property>
|
|
207
|
+
</widget>
|
|
208
|
+
</item>
|
|
209
|
+
<item row="0" column="0">
|
|
210
|
+
<widget class="QLabel" name="label_4">
|
|
211
|
+
<property name="toolTip">
|
|
212
|
+
<string>Enter the actual name for the new database as it will exist inside your PostgreSQL installation.</string>
|
|
221
213
|
</property>
|
|
222
214
|
<property name="text">
|
|
223
|
-
<string
|
|
215
|
+
<string>Database name</string>
|
|
224
216
|
</property>
|
|
225
217
|
</widget>
|
|
226
218
|
</item>
|
|
227
|
-
<item row="
|
|
228
|
-
<widget class="
|
|
219
|
+
<item row="0" column="1">
|
|
220
|
+
<widget class="QLineEdit" name="database_lineEdit">
|
|
221
|
+
<property name="font">
|
|
222
|
+
<font>
|
|
223
|
+
<italic>false</italic>
|
|
224
|
+
</font>
|
|
225
|
+
</property>
|
|
226
|
+
<property name="toolTip">
|
|
227
|
+
<string>Enter the actual name for the new database as it will exist inside your PostgreSQL installation.</string>
|
|
228
|
+
</property>
|
|
229
229
|
<property name="text">
|
|
230
|
-
<string
|
|
230
|
+
<string/>
|
|
231
231
|
</property>
|
|
232
232
|
</widget>
|
|
233
233
|
</item>
|
|
@@ -1,28 +1,28 @@
|
|
|
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=
|
|
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=
|
|
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
|
|
10
10
|
oqtopus/gui/about_dialog.py,sha256=dDNwHxKf_M82Z-TKmXW1fXmnI_WSV_7MShqz05trzRw,2345
|
|
11
|
-
oqtopus/gui/database_connection_widget.py,sha256=
|
|
12
|
-
oqtopus/gui/database_create_dialog.py,sha256=
|
|
13
|
-
oqtopus/gui/database_duplicate_dialog.py,sha256=
|
|
14
|
-
oqtopus/gui/logs_widget.py,sha256=
|
|
11
|
+
oqtopus/gui/database_connection_widget.py,sha256=_SM9K-2dUmXMgjJzqdWrfutRnU4I0WDWZ2FM1dkIa6A,6688
|
|
12
|
+
oqtopus/gui/database_create_dialog.py,sha256=Z7XK47EVs3S1GKWEGOZDE5a4cEWUgW4NcPzAD0JqyEg,8880
|
|
13
|
+
oqtopus/gui/database_duplicate_dialog.py,sha256=Scc1eo8hmniAIyDDK_Qks1RgZn6MsDbtIokg9woEldA,4944
|
|
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=
|
|
18
|
-
oqtopus/gui/parameters_groupbox.py,sha256=
|
|
19
|
-
oqtopus/gui/plugin_widget.py,sha256=
|
|
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=
|
|
25
|
+
oqtopus/ui/database_create_dialog.ui,sha256=c-fZJRH4tmAeOr6O6M2sPIhzzYQMrSc1DI6a7at-UjI,9230
|
|
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.
|
|
39
|
+
oqtopus-0.1.20.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.
|
|
43
|
-
oqtopus-0.1.
|
|
44
|
-
oqtopus-0.1.
|
|
45
|
-
oqtopus-0.1.
|
|
42
|
+
oqtopus-0.1.20.dist-info/METADATA,sha256=L0mPS1xldApE8aF-eS68a2ArcpzYiJfFDQP5NCL_1W4,21475
|
|
43
|
+
oqtopus-0.1.20.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
44
|
+
oqtopus-0.1.20.dist-info/top_level.txt,sha256=i4DHi21kcGIzrF8DlgsKj-UCENHg_NebTRac7cwt32A,14
|
|
45
|
+
oqtopus-0.1.20.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|