itkdb-gtk 0.0.17__tar.gz → 0.9.0__tar.gz
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.
- {itkdb_gtk-0.0.17 → itkdb_gtk-0.9.0}/PKG-INFO +2 -2
- {itkdb_gtk-0.0.17 → itkdb_gtk-0.9.0}/README.md +1 -1
- itkdb_gtk-0.0.17/itkdb_gtk/SendShipments.py → itkdb_gtk-0.9.0/itkdb_gtk/CreateShipments.py +2 -3
- {itkdb_gtk-0.0.17 → itkdb_gtk-0.9.0}/itkdb_gtk/GetShipments.py +0 -1
- {itkdb_gtk-0.0.17 → itkdb_gtk-0.9.0}/itkdb_gtk/GlueWeight.py +5 -14
- {itkdb_gtk-0.0.17 → itkdb_gtk-0.9.0}/itkdb_gtk/GroundVITests.py +0 -1
- {itkdb_gtk-0.0.17 → itkdb_gtk-0.9.0}/itkdb_gtk/ITkDB.svg +11 -3
- {itkdb_gtk-0.0.17 → itkdb_gtk-0.9.0}/itkdb_gtk/ITkDBlogin.py +0 -1
- {itkdb_gtk-0.0.17 → itkdb_gtk-0.9.0}/itkdb_gtk/ITkDButils.py +5 -17
- {itkdb_gtk-0.0.17 → itkdb_gtk-0.9.0}/itkdb_gtk/UploadModuleIV.py +2 -2
- {itkdb_gtk-0.0.17 → itkdb_gtk-0.9.0}/itkdb_gtk/UploadMultipleTests.py +77 -11
- {itkdb_gtk-0.0.17 → itkdb_gtk-0.9.0}/itkdb_gtk/UploadPetalInformation.py +8 -9
- {itkdb_gtk-0.0.17 → itkdb_gtk-0.9.0}/itkdb_gtk/UploadTest.py +97 -11
- {itkdb_gtk-0.0.17 → itkdb_gtk-0.9.0}/itkdb_gtk/WireBondGui.py +2 -1
- {itkdb_gtk-0.0.17 → itkdb_gtk-0.9.0}/itkdb_gtk/__init__.py +8 -3
- {itkdb_gtk-0.0.17 → itkdb_gtk-0.9.0}/itkdb_gtk/dashBoard.py +33 -16
- {itkdb_gtk-0.0.17 → itkdb_gtk-0.9.0}/itkdb_gtk/dbGtkUtils.py +10 -21
- {itkdb_gtk-0.0.17 → itkdb_gtk-0.9.0}/itkdb_gtk/readAVSdata.py +0 -7
- {itkdb_gtk-0.0.17 → itkdb_gtk-0.9.0}/itkdb_gtk/readGoogleSheet.py +0 -1
- {itkdb_gtk-0.0.17 → itkdb_gtk-0.9.0}/itkdb_gtk/untrash_component.py +1 -1
- {itkdb_gtk-0.0.17 → itkdb_gtk-0.9.0}/itkdb_gtk.egg-info/PKG-INFO +2 -2
- {itkdb_gtk-0.0.17 → itkdb_gtk-0.9.0}/itkdb_gtk.egg-info/SOURCES.txt +1 -1
- {itkdb_gtk-0.0.17 → itkdb_gtk-0.9.0}/itkdb_gtk.egg-info/entry_points.txt +2 -1
- {itkdb_gtk-0.0.17 → itkdb_gtk-0.9.0}/pyproject.toml +3 -2
- {itkdb_gtk-0.0.17 → itkdb_gtk-0.9.0}/itkdb_gtk/ITkDB.desktop +0 -0
- {itkdb_gtk-0.0.17 → itkdb_gtk-0.9.0}/itkdb_gtk/ShowAttachments.py +0 -0
- {itkdb_gtk-0.0.17 → itkdb_gtk-0.9.0}/itkdb_gtk/ShowComments.py +0 -0
- {itkdb_gtk-0.0.17 → itkdb_gtk-0.9.0}/itkdb_gtk/ShowDefects.py +0 -0
- {itkdb_gtk-0.0.17 → itkdb_gtk-0.9.0}/itkdb_gtk.egg-info/dependency_links.txt +0 -0
- {itkdb_gtk-0.0.17 → itkdb_gtk-0.9.0}/itkdb_gtk.egg-info/requires.txt +0 -0
- {itkdb_gtk-0.0.17 → itkdb_gtk-0.9.0}/itkdb_gtk.egg-info/top_level.txt +0 -0
- {itkdb_gtk-0.0.17 → itkdb_gtk-0.9.0}/setup.cfg +0 -0
- {itkdb_gtk-0.0.17 → itkdb_gtk-0.9.0}/test/test_holes.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: itkdb_gtk
|
|
3
|
-
Version: 0.0
|
|
3
|
+
Version: 0.9.0
|
|
4
4
|
Summary: A collection of Gtk based GUI to access ITkDB.
|
|
5
5
|
Author-email: Carlos Lacasta <carlos.lacasta@cern.ch>
|
|
6
6
|
Project-URL: Homepage, https://gitlab.cern.ch/atlas-itk/sw/db/itk-pdb-gtk-gui-utils
|
|
@@ -57,7 +57,7 @@ Find all shipments to be received at a given site and list them. It handles a
|
|
|
57
57
|
barcode reader that helps identifying the items actually received for the
|
|
58
58
|
reception. It will finally make the DB aware of the items receptioned.
|
|
59
59
|
|
|
60
|
-
##
|
|
60
|
+
## CreateShipments.py
|
|
61
61
|
Create a new shipment. Allows to add items with the QR reader as well as from a
|
|
62
62
|
GUI dialog. One can add comments and attachments to the shipment.
|
|
63
63
|
|
|
@@ -37,7 +37,7 @@ Find all shipments to be received at a given site and list them. It handles a
|
|
|
37
37
|
barcode reader that helps identifying the items actually received for the
|
|
38
38
|
reception. It will finally make the DB aware of the items receptioned.
|
|
39
39
|
|
|
40
|
-
##
|
|
40
|
+
## CreateShipments.py
|
|
41
41
|
Create a new shipment. Allows to add items with the QR reader as well as from a
|
|
42
42
|
GUI dialog. One can add comments and attachments to the shipment.
|
|
43
43
|
|
|
@@ -25,14 +25,13 @@ from gi.repository import Gtk, Gio, GLib
|
|
|
25
25
|
gtk_runs, gtk_args = Gtk.init_check()
|
|
26
26
|
|
|
27
27
|
|
|
28
|
-
class
|
|
28
|
+
class CreateShipments(dbGtkUtils.ITkDBWindow):
|
|
29
29
|
"""Create a shipment from input."""
|
|
30
30
|
|
|
31
31
|
def __init__(self, session):
|
|
32
32
|
"""Initialization.
|
|
33
33
|
|
|
34
34
|
Args:
|
|
35
|
-
----
|
|
36
35
|
session: ITkDB session.
|
|
37
36
|
|
|
38
37
|
"""
|
|
@@ -373,7 +372,7 @@ def main():
|
|
|
373
372
|
sys.exit()
|
|
374
373
|
|
|
375
374
|
client.user_gui = dlg
|
|
376
|
-
IS =
|
|
375
|
+
IS = CreateShipments(client)
|
|
377
376
|
IS.set_accept_focus(True)
|
|
378
377
|
IS.present()
|
|
379
378
|
IS.connect("destroy", Gtk.main_quit)
|
|
@@ -33,12 +33,10 @@ def find_module(ifile, module_sn="MODULE_SN"):
|
|
|
33
33
|
"""Find the starting line of a module.
|
|
34
34
|
|
|
35
35
|
Args:
|
|
36
|
-
----
|
|
37
36
|
ifile: the input file object.
|
|
38
37
|
module_sn: tag t ostar t a new module.
|
|
39
38
|
|
|
40
|
-
|
|
41
|
-
------
|
|
39
|
+
Returns:
|
|
42
40
|
the SN of the module.
|
|
43
41
|
|
|
44
42
|
"""
|
|
@@ -67,12 +65,10 @@ def remove_defaul_keys(data, default_value=-9999):
|
|
|
67
65
|
"""Remove keys with deafault value.
|
|
68
66
|
|
|
69
67
|
Args:
|
|
70
|
-
----
|
|
71
68
|
data: Input dictionary
|
|
72
69
|
default_value: Defaultvalue. Defaults to -9999.
|
|
73
70
|
|
|
74
|
-
Returns
|
|
75
|
-
-------
|
|
71
|
+
Returns:
|
|
76
72
|
data: trimmed dictionary
|
|
77
73
|
|
|
78
74
|
"""
|
|
@@ -92,9 +88,8 @@ class GlueWeight(Gtk.Window):
|
|
|
92
88
|
|
|
93
89
|
def __init__(self, session, ifile=None):
|
|
94
90
|
"""Initialization.
|
|
95
|
-
|
|
91
|
+
|
|
96
92
|
Args:
|
|
97
|
-
----
|
|
98
93
|
session: ITkDB session_
|
|
99
94
|
ifile (optional): Input file. Defaults to None.
|
|
100
95
|
|
|
@@ -205,13 +200,11 @@ class GlueWeight(Gtk.Window):
|
|
|
205
200
|
"""Create the dialog for a DB test and add it to the notebook.
|
|
206
201
|
|
|
207
202
|
Args:
|
|
208
|
-
----
|
|
209
203
|
test_json: The JSon-like dict with the values
|
|
210
204
|
test_name: The name of the test for internal indexing
|
|
211
205
|
label: The label for the Notebook
|
|
212
206
|
|
|
213
|
-
|
|
214
|
-
------
|
|
207
|
+
Returns:
|
|
215
208
|
The box containing the data.
|
|
216
209
|
|
|
217
210
|
"""
|
|
@@ -271,12 +264,10 @@ class GlueWeight(Gtk.Window):
|
|
|
271
264
|
"""Parse a data file.
|
|
272
265
|
|
|
273
266
|
Args:
|
|
274
|
-
----
|
|
275
267
|
ifile (): A file object.
|
|
276
268
|
module_sep: tag to idenntify a new module.
|
|
277
269
|
|
|
278
|
-
Returns
|
|
279
|
-
-------
|
|
270
|
+
Returns:
|
|
280
271
|
a list of tests (json)
|
|
281
272
|
|
|
282
273
|
"""
|
|
@@ -11,7 +11,10 @@
|
|
|
11
11
|
sodipodi:docname="ITkDB.svg"
|
|
12
12
|
width="75"
|
|
13
13
|
height="60"
|
|
14
|
-
inkscape:version="1.2 (
|
|
14
|
+
inkscape:version="1.3.2 (091e20e, 2023-11-25)"
|
|
15
|
+
inkscape:export-filename="ITkDB.png"
|
|
16
|
+
inkscape:export-xdpi="96"
|
|
17
|
+
inkscape:export-ydpi="96"
|
|
15
18
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
16
19
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
17
20
|
xmlns="http://www.w3.org/2000/svg"
|
|
@@ -40,8 +43,13 @@
|
|
|
40
43
|
showgrid="false"
|
|
41
44
|
inkscape:zoom="10.143094"
|
|
42
45
|
inkscape:cx="38.794869"
|
|
43
|
-
inkscape:cy="18.
|
|
44
|
-
inkscape:current-layer="
|
|
46
|
+
inkscape:cy="18.929135"
|
|
47
|
+
inkscape:current-layer="g9542"
|
|
48
|
+
inkscape:window-width="1368"
|
|
49
|
+
inkscape:window-height="1087"
|
|
50
|
+
inkscape:window-x="0"
|
|
51
|
+
inkscape:window-y="44"
|
|
52
|
+
inkscape:window-maximized="0" />
|
|
45
53
|
<g
|
|
46
54
|
id="g142"
|
|
47
55
|
transform="translate(14.828749,-1.5740459)">
|
|
@@ -50,7 +50,6 @@ def get_db_date(timestamp=None):
|
|
|
50
50
|
"""Convert a date string into the expected DB format.
|
|
51
51
|
|
|
52
52
|
Args:
|
|
53
|
-
----
|
|
54
53
|
timestamp: A date in string format
|
|
55
54
|
|
|
56
55
|
"""
|
|
@@ -81,13 +80,11 @@ def registerPetalCore(client, SN, alias, HC_id=None):
|
|
|
81
80
|
"""Register a Petal Core in the DB.
|
|
82
81
|
|
|
83
82
|
Args:
|
|
84
|
-
----
|
|
85
83
|
SN: Serial Number
|
|
86
84
|
alias: The alias of the Petal
|
|
87
85
|
HC_id: Comma separated list of HC identifiers.
|
|
88
86
|
|
|
89
|
-
Returns
|
|
90
|
-
-------
|
|
87
|
+
Returns:
|
|
91
88
|
_type_: _description_
|
|
92
89
|
|
|
93
90
|
"""
|
|
@@ -116,7 +113,6 @@ def create_component_attachment(client, SN, file_path, title=None, description="
|
|
|
116
113
|
"""Create an attachment to the given component.
|
|
117
114
|
|
|
118
115
|
Args:
|
|
119
|
-
----
|
|
120
116
|
client: The DB client
|
|
121
117
|
SN: The SN of the component.
|
|
122
118
|
file_path: The pat to th efile to be attached.
|
|
@@ -167,7 +163,6 @@ def set_component_property(client, SN, property, value):
|
|
|
167
163
|
"""Set the value of an object property.
|
|
168
164
|
|
|
169
165
|
Args:
|
|
170
|
-
----
|
|
171
166
|
client: The DB client
|
|
172
167
|
SN: The object SN
|
|
173
168
|
property: The property name
|
|
@@ -192,7 +187,6 @@ def assemble_component(client, parent, child):
|
|
|
192
187
|
"""Assemble child into parent.
|
|
193
188
|
|
|
194
189
|
Args:
|
|
195
|
-
----
|
|
196
190
|
client: The DB client
|
|
197
191
|
parent: The parent object or container.
|
|
198
192
|
child: The child to be assembled.
|
|
@@ -214,7 +208,6 @@ def set_object_stage(client, SN, stage):
|
|
|
214
208
|
"""Set stage of object
|
|
215
209
|
|
|
216
210
|
Args:
|
|
217
|
-
----
|
|
218
211
|
client: DB session
|
|
219
212
|
SN: Serial number
|
|
220
213
|
stage: Stage
|
|
@@ -247,13 +240,11 @@ def upload_test(client, data, attachments=None):
|
|
|
247
240
|
"""Upload a test to the DB.
|
|
248
241
|
|
|
249
242
|
Args:
|
|
250
|
-
----
|
|
251
243
|
client: The DB client
|
|
252
244
|
data (dict): A dictionary with all the elements of thee test.
|
|
253
|
-
attachments (
|
|
245
|
+
attachments ([Attachment]): one or more (in a list) Attachment to the test
|
|
254
246
|
|
|
255
247
|
Return:
|
|
256
|
-
------
|
|
257
248
|
resp: The response of the DB session.
|
|
258
249
|
|
|
259
250
|
"""
|
|
@@ -288,12 +279,11 @@ def upload_test(client, data, attachments=None):
|
|
|
288
279
|
return (str(e))
|
|
289
280
|
|
|
290
281
|
|
|
291
|
-
def create_shipment(session, sender, recipient, items, name=None, send=False,
|
|
292
|
-
attachment=None, comments=None):
|
|
282
|
+
def create_shipment(session, sender, recipient, items, name=None, send=False,
|
|
283
|
+
type="domestic", attachment=None, comments=None):
|
|
293
284
|
"""Create a chipment.
|
|
294
285
|
|
|
295
286
|
Args:
|
|
296
|
-
----
|
|
297
287
|
session : The itkdb session
|
|
298
288
|
sender : The sender ID
|
|
299
289
|
recipient : The recipient ID
|
|
@@ -301,7 +291,7 @@ def create_shipment(session, sender, recipient, items, name=None, send=False, ty
|
|
|
301
291
|
name: the name of the shipment.
|
|
302
292
|
send: If true, the status of the shipment is updated to inTransit
|
|
303
293
|
type (optional): Type of shipment. Defaults to "domestic".
|
|
304
|
-
attachment (optional): Attachment object.
|
|
294
|
+
attachment (optional, :class:`Attachment`): :class:`Attachment` object.
|
|
305
295
|
comments (optional): comments for the shipment
|
|
306
296
|
|
|
307
297
|
"""
|
|
@@ -437,7 +427,6 @@ def get_testrun(session, test_id, out_type="object"):
|
|
|
437
427
|
"""Retrieve information about a given test.
|
|
438
428
|
|
|
439
429
|
Args:
|
|
440
|
-
----
|
|
441
430
|
session : The itkdb session
|
|
442
431
|
test_id : The ID of the test.
|
|
443
432
|
out_type (optional): Type of output (full or object). Defaults to "object".
|
|
@@ -456,7 +445,6 @@ def get_test_skeleton(session, component, test_code, userdef={}, uservalues={}):
|
|
|
456
445
|
"""Get the skeleton of the given test.
|
|
457
446
|
|
|
458
447
|
Args:
|
|
459
|
-
----
|
|
460
448
|
session: The DB session
|
|
461
449
|
component: The component which is tested
|
|
462
450
|
test_code: The test code
|
|
@@ -574,8 +574,8 @@ class IVwindow(dbGtkUtils.ITkDBWindow):
|
|
|
574
574
|
"""Find module (SN) on database
|
|
575
575
|
|
|
576
576
|
Args:
|
|
577
|
-
|
|
578
|
-
|
|
577
|
+
SN (str): Module Serial number.
|
|
578
|
+
|
|
579
579
|
"""
|
|
580
580
|
md = ITkDButils.get_DB_component(self.session, SN)
|
|
581
581
|
if md is None:
|
|
@@ -9,7 +9,7 @@ from pathlib import Path
|
|
|
9
9
|
|
|
10
10
|
try:
|
|
11
11
|
import itkdb_gtk
|
|
12
|
-
|
|
12
|
+
|
|
13
13
|
except ImportError:
|
|
14
14
|
from pathlib import Path
|
|
15
15
|
cwd = Path(sys.argv[0]).parent.parent
|
|
@@ -39,14 +39,12 @@ def all_files(root, patterns='*', single_level=False, yield_folders=False):
|
|
|
39
39
|
"""A generator that reruns all files in the given folder.
|
|
40
40
|
|
|
41
41
|
Args:
|
|
42
|
-
----
|
|
43
42
|
root (file path): The folder
|
|
44
43
|
patterns (str, optional): The pattern of the files. Defaults to '*'.
|
|
45
44
|
single_level (bool, optional): If true, do not go into sub folders. Defaults to False.
|
|
46
45
|
yield_folders (bool, optional): If True, return folders as well. Defaults to False.
|
|
47
46
|
|
|
48
|
-
Yields
|
|
49
|
-
------
|
|
47
|
+
Yields:
|
|
50
48
|
str: file path name
|
|
51
49
|
|
|
52
50
|
"""
|
|
@@ -67,17 +65,16 @@ def all_files(root, patterns='*', single_level=False, yield_folders=False):
|
|
|
67
65
|
|
|
68
66
|
|
|
69
67
|
class TestList(object):
|
|
70
|
-
SN, TestType, RunNumber, Date, Institute, Path, Json, Nattch, Attachments, Ncomm, Comments, Ndef, Defects, ALL = range(
|
|
68
|
+
SN, TestType, RunNumber, Date, Institute, Stage, currentStage, Path, Json, Nattch, Attachments, Ncomm, Comments, Ndef, Defects, ALL = range(16)
|
|
71
69
|
|
|
72
70
|
|
|
73
71
|
def check_data(data):
|
|
74
72
|
"""Checks validity of JSon data.
|
|
75
73
|
|
|
76
74
|
Args:
|
|
77
|
-
----
|
|
78
75
|
data (): The json data
|
|
79
76
|
|
|
80
|
-
Returns
|
|
77
|
+
Returns:
|
|
81
78
|
-------
|
|
82
79
|
boolean: True if valid, False otherwise.
|
|
83
80
|
|
|
@@ -110,7 +107,6 @@ class UploadMultipleTests(dbGtkUtils.ITkDBWindow):
|
|
|
110
107
|
"""Initialization.
|
|
111
108
|
|
|
112
109
|
Args:
|
|
113
|
-
----
|
|
114
110
|
session: ITkDB session
|
|
115
111
|
|
|
116
112
|
"""
|
|
@@ -177,7 +173,7 @@ class UploadMultipleTests(dbGtkUtils.ITkDBWindow):
|
|
|
177
173
|
|
|
178
174
|
def create_tree_view(self, size=150):
|
|
179
175
|
"""Creates the tree vew with the attachments."""
|
|
180
|
-
model = Gtk.ListStore(str, str, str, str, str, str, object, int, object, int, object, int, object)
|
|
176
|
+
model = Gtk.ListStore(str, str, str, str, str, str, str, str, object, int, object, int, object, int, object)
|
|
181
177
|
self.tree = Gtk.TreeView(model=model)
|
|
182
178
|
self.tree.connect("button-press-event", self.button_pressed)
|
|
183
179
|
scrolled = Gtk.ScrolledWindow()
|
|
@@ -201,6 +197,10 @@ class UploadMultipleTests(dbGtkUtils.ITkDBWindow):
|
|
|
201
197
|
column = Gtk.TreeViewColumn("Institute", renderer, text=TestList.Institute)
|
|
202
198
|
self.tree.append_column(column)
|
|
203
199
|
|
|
200
|
+
renderer = Gtk.CellRendererText()
|
|
201
|
+
column = Gtk.TreeViewColumn("Stage", renderer, text=TestList.Stage)
|
|
202
|
+
self.tree.append_column(column)
|
|
203
|
+
|
|
204
204
|
renderer = Gtk.CellRendererText()
|
|
205
205
|
column = Gtk.TreeViewColumn("N. att.", renderer, text=TestList.Nattch)
|
|
206
206
|
self.tree.append_column(column)
|
|
@@ -257,6 +257,10 @@ class UploadMultipleTests(dbGtkUtils.ITkDBWindow):
|
|
|
257
257
|
item_show.connect("activate", self.on_show_json, (model, iter, values))
|
|
258
258
|
menu.append(item_show)
|
|
259
259
|
|
|
260
|
+
item_set_stage = Gtk.MenuItem(label="Set Stage")
|
|
261
|
+
item_set_stage.connect("activate", self.on_set_stage, (model, iter, values))
|
|
262
|
+
menu.append(item_set_stage)
|
|
263
|
+
|
|
260
264
|
item_show_att = Gtk.MenuItem(label="Edit Attachments")
|
|
261
265
|
item_show_att.connect("activate", self.on_show_attachments, (model, iter, values))
|
|
262
266
|
menu.append(item_show_att)
|
|
@@ -289,7 +293,7 @@ class UploadMultipleTests(dbGtkUtils.ITkDBWindow):
|
|
|
289
293
|
model.set_value(iter, TestList.RunNumber, payload["runNumber"])
|
|
290
294
|
model.set_value(iter, TestList.Date, handle_test_date(payload["date"]))
|
|
291
295
|
model.set_value(iter, TestList.Institute, handle_test_date(payload["institution"]))
|
|
292
|
-
|
|
296
|
+
|
|
293
297
|
|
|
294
298
|
dlg.hide()
|
|
295
299
|
dlg.destroy()
|
|
@@ -367,6 +371,66 @@ class UploadMultipleTests(dbGtkUtils.ITkDBWindow):
|
|
|
367
371
|
dlg.destroy()
|
|
368
372
|
return out, use_default
|
|
369
373
|
|
|
374
|
+
def on_set_stage(self, item, data):
|
|
375
|
+
"""Set the test stage."""
|
|
376
|
+
model, iter, val = data
|
|
377
|
+
SN = val[TestList.SN]
|
|
378
|
+
combo, currentStage = self.get_component_stages(SN)
|
|
379
|
+
|
|
380
|
+
dlg = Gtk.Dialog(title="Add Attachment")
|
|
381
|
+
|
|
382
|
+
dlg.add_buttons(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
|
|
383
|
+
Gtk.STOCK_OK, Gtk.ResponseType.OK)
|
|
384
|
+
area = dlg.get_content_area()
|
|
385
|
+
box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
|
|
386
|
+
area.add(box)
|
|
387
|
+
|
|
388
|
+
box.pack_start(Gtk.Label(label="Select Stage"), False, True, 0)
|
|
389
|
+
box.pack_start(combo, False, True, 0)
|
|
390
|
+
dlg.show_all()
|
|
391
|
+
|
|
392
|
+
rc = dlg.run()
|
|
393
|
+
if rc == Gtk.ResponseType.OK:
|
|
394
|
+
new_stage = combo.get_active_text()
|
|
395
|
+
model[iter][TestList.Stage] = new_stage
|
|
396
|
+
data = model[iter][TestList.Json]
|
|
397
|
+
changed = (new_stage != model[iter][TestList.currentStage])
|
|
398
|
+
data["isRetroactive"] = changed
|
|
399
|
+
if changed:
|
|
400
|
+
data["stage"] = new_stage
|
|
401
|
+
else:
|
|
402
|
+
if "stage" in data:
|
|
403
|
+
del data["stage"]
|
|
404
|
+
|
|
405
|
+
model[iter][TestList.Json] = data
|
|
406
|
+
|
|
407
|
+
|
|
408
|
+
dlg.hide()
|
|
409
|
+
dlg.destroy()
|
|
410
|
+
|
|
411
|
+
|
|
412
|
+
def get_component_stages(self, SN):
|
|
413
|
+
"""Create a combo with the stages."""
|
|
414
|
+
try:
|
|
415
|
+
obj = ITkDButils.get_DB_component(self.session, SN)
|
|
416
|
+
currentStage = obj["currentStage"]["code"]
|
|
417
|
+
|
|
418
|
+
combo = Gtk.ComboBoxText.new_with_entry()
|
|
419
|
+
combo.remove_all()
|
|
420
|
+
indx = 0
|
|
421
|
+
for i, stg in enumerate(obj["stages"]):
|
|
422
|
+
S = stg["code"]
|
|
423
|
+
combo.append_text(S)
|
|
424
|
+
if S == currentStage:
|
|
425
|
+
indx = i
|
|
426
|
+
|
|
427
|
+
combo.set_active(indx)
|
|
428
|
+
return combo, currentStage
|
|
429
|
+
|
|
430
|
+
except Exception:
|
|
431
|
+
self.write_message("Something went wring with the stages")
|
|
432
|
+
return [None, None]
|
|
433
|
+
|
|
370
434
|
def add_tests_to_view(self, files):
|
|
371
435
|
"""Add the input fiels to the treeview."""
|
|
372
436
|
default_site = None
|
|
@@ -419,8 +483,10 @@ class UploadMultipleTests(dbGtkUtils.ITkDBWindow):
|
|
|
419
483
|
comments = data.get("comments", [])
|
|
420
484
|
defects = data.get("defects", [])
|
|
421
485
|
the_date = handle_test_date(data["date"])
|
|
486
|
+
combo, currentStage = self.get_component_stages(data["component"])
|
|
422
487
|
model.append([data["component"], data["testType"], data["runNumber"], the_date,
|
|
423
|
-
data["institution"],
|
|
488
|
+
data["institution"], currentStage, currentStage,
|
|
489
|
+
ifile, data, len(attachments), attachments,
|
|
424
490
|
len(comments), comments, len(defects), defects])
|
|
425
491
|
|
|
426
492
|
except Exception as E:
|
|
@@ -14,7 +14,7 @@ from gi.repository import Gtk, Gio
|
|
|
14
14
|
|
|
15
15
|
try:
|
|
16
16
|
import itkdb_gtk
|
|
17
|
-
|
|
17
|
+
|
|
18
18
|
except ImportError:
|
|
19
19
|
from pathlib import Path
|
|
20
20
|
cwd = Path(sys.argv[0]).parent.parent
|
|
@@ -44,11 +44,9 @@ def get_type(child):
|
|
|
44
44
|
"""Return object type
|
|
45
45
|
|
|
46
46
|
Args:
|
|
47
|
-
-----
|
|
48
47
|
child (): object
|
|
49
48
|
|
|
50
|
-
Returns
|
|
51
|
-
-------
|
|
49
|
+
Returns:
|
|
52
50
|
str: object type
|
|
53
51
|
|
|
54
52
|
"""
|
|
@@ -229,13 +227,11 @@ class AVSPanel(Gtk.Window):
|
|
|
229
227
|
"""Create the dialog for a DB test and add it to the notebook.
|
|
230
228
|
|
|
231
229
|
Args:
|
|
232
|
-
----
|
|
233
230
|
test_json: The JSon-like dict with the values
|
|
234
231
|
test_name: The name of the test for internal indexing
|
|
235
232
|
label: The label for the Notebook
|
|
236
233
|
|
|
237
|
-
|
|
238
|
-
------
|
|
234
|
+
Returns:
|
|
239
235
|
The box containing the data.
|
|
240
236
|
|
|
241
237
|
"""
|
|
@@ -264,7 +260,6 @@ class AVSPanel(Gtk.Window):
|
|
|
264
260
|
"""Register petal core in DB.
|
|
265
261
|
|
|
266
262
|
Args:
|
|
267
|
-
----
|
|
268
263
|
SN: The petal Serial Number.
|
|
269
264
|
|
|
270
265
|
"""
|
|
@@ -610,7 +605,8 @@ class AVSPanel(Gtk.Window):
|
|
|
610
605
|
complain("Could not upload test {}".format(values["testType"]), res)
|
|
611
606
|
|
|
612
607
|
|
|
613
|
-
|
|
608
|
+
def main():
|
|
609
|
+
"""The main entry."""
|
|
614
610
|
# Parse command line options
|
|
615
611
|
parser = ArgumentParser()
|
|
616
612
|
parser.add_argument('files', nargs='*', help="Input files")
|
|
@@ -640,3 +636,6 @@ if __name__ == "__main__":
|
|
|
640
636
|
print("Bye !!")
|
|
641
637
|
dlg.die()
|
|
642
638
|
sys.exit()
|
|
639
|
+
|
|
640
|
+
if __name__ == "__main__":
|
|
641
|
+
main()
|
|
@@ -48,11 +48,9 @@ def check_data(data):
|
|
|
48
48
|
"""Checks validity of JSon data.
|
|
49
49
|
|
|
50
50
|
Args:
|
|
51
|
-
----
|
|
52
51
|
data (): The json data
|
|
53
52
|
|
|
54
|
-
Returns
|
|
55
|
-
-------
|
|
53
|
+
Returns:
|
|
56
54
|
boolean: True if valid, False otherwise.
|
|
57
55
|
|
|
58
56
|
"""
|
|
@@ -84,7 +82,6 @@ class UploadTest(dbGtkUtils.ITkDBWindow):
|
|
|
84
82
|
"""Initialization.
|
|
85
83
|
|
|
86
84
|
Args:
|
|
87
|
-
----
|
|
88
85
|
session: ITkDB session
|
|
89
86
|
payload: path of test file
|
|
90
87
|
attachment: an Attachment object or list of attachments.
|
|
@@ -92,6 +89,7 @@ class UploadTest(dbGtkUtils.ITkDBWindow):
|
|
|
92
89
|
"""
|
|
93
90
|
self.payload = payload
|
|
94
91
|
self.data = None
|
|
92
|
+
self.folder = None
|
|
95
93
|
self.attachments = []
|
|
96
94
|
self.comments = []
|
|
97
95
|
self.defects = []
|
|
@@ -169,6 +167,19 @@ class UploadTest(dbGtkUtils.ITkDBWindow):
|
|
|
169
167
|
self.entryTest = Gtk.Entry()
|
|
170
168
|
grid.attach(self.entryTest, 1, 2, 1, 1)
|
|
171
169
|
|
|
170
|
+
# Object Stage
|
|
171
|
+
lbl = Gtk.Label(label="Object Stage")
|
|
172
|
+
lbl.set_xalign(0)
|
|
173
|
+
grid.attach(lbl, 0, 3, 1, 1)
|
|
174
|
+
|
|
175
|
+
self.objStage = Gtk.ComboBoxText.new()
|
|
176
|
+
self.objStage.connect("changed", self.on_new_stage)
|
|
177
|
+
grid.attach(self.objStage, 1, 3, 1, 1)
|
|
178
|
+
|
|
179
|
+
self.isRetroactive = Gtk.ToggleButton.new_with_label("RetroActive")
|
|
180
|
+
grid.attach(self.isRetroactive, 2, 3, 1, 1)
|
|
181
|
+
|
|
182
|
+
|
|
172
183
|
# The "Add attachment" button.
|
|
173
184
|
box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
|
|
174
185
|
self.mainBox.pack_start(box, False, False, 0)
|
|
@@ -204,16 +215,11 @@ class UploadTest(dbGtkUtils.ITkDBWindow):
|
|
|
204
215
|
|
|
205
216
|
else:
|
|
206
217
|
print("Input file does not exists: {}".format(self.payload))
|
|
207
|
-
|
|
218
|
+
|
|
208
219
|
except TypeError:
|
|
209
220
|
self.load_payload(self.payload)
|
|
210
221
|
self.write_message("Loaded memory payload.")
|
|
211
222
|
|
|
212
|
-
#if len(self.attachments):
|
|
213
|
-
# dC = [A for A in self.attachments]
|
|
214
|
-
# self.attachments.clear()
|
|
215
|
-
# for A in dC:
|
|
216
|
-
# self.append_attachment_to_view(A)
|
|
217
223
|
if len(self.attachments) > 0:
|
|
218
224
|
self.btn_attch.set_label("Attachments ({})".format(len(self.attachments)))
|
|
219
225
|
|
|
@@ -250,20 +256,57 @@ class UploadTest(dbGtkUtils.ITkDBWindow):
|
|
|
250
256
|
return out
|
|
251
257
|
|
|
252
258
|
def load_payload(self, data):
|
|
253
|
-
"""
|
|
259
|
+
"""Payload is given as a dict."""
|
|
254
260
|
self.data = data
|
|
255
261
|
errors, missing = check_data(self.data)
|
|
256
262
|
self.complete_missing(missing, errors)
|
|
263
|
+
self.set_stages()
|
|
264
|
+
|
|
265
|
+
def on_new_stage(self, *args):
|
|
266
|
+
"""New stage selected."""
|
|
267
|
+
stg = self.objStage.get_active_text()
|
|
268
|
+
changed = (stg != self.currentStage)
|
|
269
|
+
self.isRetroactive.set_active(changed)
|
|
270
|
+
self.data["isRetroactive"] = changed
|
|
271
|
+
if changed:
|
|
272
|
+
self.data["stage"] = stg
|
|
273
|
+
else:
|
|
274
|
+
if "stage" in self.data:
|
|
275
|
+
del self.data["stage"]
|
|
276
|
+
|
|
277
|
+
def set_stages(self):
|
|
278
|
+
"""Prepare the stages combo."""
|
|
279
|
+
# Check the object stage
|
|
280
|
+
SN = self.data["component"]
|
|
281
|
+
try:
|
|
282
|
+
obj = ITkDButils.get_DB_component(self.session, SN)
|
|
283
|
+
self.currentStage = obj["currentStage"]["code"]
|
|
284
|
+
|
|
285
|
+
self.objStage.remove_all()
|
|
286
|
+
indx = 0
|
|
287
|
+
for i, stg in enumerate(obj["stages"]):
|
|
288
|
+
S = stg["code"]
|
|
289
|
+
self.objStage.append_text(S)
|
|
290
|
+
if S == self.currentStage:
|
|
291
|
+
indx = i
|
|
292
|
+
|
|
293
|
+
self.objStage.set_active(indx)
|
|
294
|
+
|
|
295
|
+
except Exception:
|
|
296
|
+
self.write_message("Something went wring with the stages")
|
|
297
|
+
|
|
257
298
|
|
|
258
299
|
def on_test_file(self, fdlg):
|
|
259
300
|
"""Test file browser clicked."""
|
|
260
301
|
fnam = fdlg.get_filename()
|
|
302
|
+
self.folder = Path(fnam).parent
|
|
261
303
|
|
|
262
304
|
# The file exists by definition
|
|
263
305
|
try:
|
|
264
306
|
self.data = json.loads(open(fnam).read())
|
|
265
307
|
errors, missing = check_data(self.data)
|
|
266
308
|
self.complete_missing(missing, errors)
|
|
309
|
+
self.set_stages()
|
|
267
310
|
|
|
268
311
|
except Exception as E:
|
|
269
312
|
self.data = None
|
|
@@ -285,6 +328,10 @@ class UploadTest(dbGtkUtils.ITkDBWindow):
|
|
|
285
328
|
else:
|
|
286
329
|
dbGtkUtils.complain("Invalid JSON data".format('\n'.join(errors)))
|
|
287
330
|
|
|
331
|
+
self.find_attachments()
|
|
332
|
+
self.find_comments()
|
|
333
|
+
self.find_defects()
|
|
334
|
+
|
|
288
335
|
self.entrySN.set_text(self.data["component"] if self.data["component"] else "")
|
|
289
336
|
self.entryTest.set_text(self.data["testType"])
|
|
290
337
|
self.comments = self.data.get("comments", [])
|
|
@@ -304,6 +351,24 @@ class UploadTest(dbGtkUtils.ITkDBWindow):
|
|
|
304
351
|
dlg.hide()
|
|
305
352
|
dlg.destroy()
|
|
306
353
|
|
|
354
|
+
def find_attachments(self):
|
|
355
|
+
"""Find Attachments in payload."""
|
|
356
|
+
self.attachments = []
|
|
357
|
+
if "attachments" in self.data:
|
|
358
|
+
for A in self.data["attachments"]:
|
|
359
|
+
if not Path(A["path"]).exists():
|
|
360
|
+
if self.folder:
|
|
361
|
+
the_path = self.folder.joinpath(A["path"])
|
|
362
|
+
else:
|
|
363
|
+
continue
|
|
364
|
+
else:
|
|
365
|
+
the_path = Path(A["path"]).expanduser().resolve()
|
|
366
|
+
|
|
367
|
+
self.attachments.append(ITkDButils.Attachment(the_path, A["title"], A["description"]))
|
|
368
|
+
|
|
369
|
+
if len(self.attachments) > 0:
|
|
370
|
+
self.btn_attch.set_label("Attachments ({})".format(len(self.attachments)))
|
|
371
|
+
|
|
307
372
|
def edit_attachments(self, *args):
|
|
308
373
|
"""Edit test attachmetns."""
|
|
309
374
|
SA = ShowAttachments("Test Attachments", self.session, self.attachments, parent=self)
|
|
@@ -317,6 +382,15 @@ class UploadTest(dbGtkUtils.ITkDBWindow):
|
|
|
317
382
|
if len(self.attachments) > 0:
|
|
318
383
|
self.btn_attch.set_label("Attachments ({})".format(len(self.attachments)))
|
|
319
384
|
|
|
385
|
+
def find_comments(self):
|
|
386
|
+
"""Find comments in payload"""
|
|
387
|
+
self.comments = []
|
|
388
|
+
if "comments" in self.data:
|
|
389
|
+
for C in self.data["comments"]:
|
|
390
|
+
self.comments.append(C)
|
|
391
|
+
|
|
392
|
+
if len(self.comments) > 0:
|
|
393
|
+
self.btn_comments.set_label("Comments ({})".format(len(self.comments)))
|
|
320
394
|
|
|
321
395
|
def edit_comments(self, *args):
|
|
322
396
|
"""Edit test comments."""
|
|
@@ -331,6 +405,17 @@ class UploadTest(dbGtkUtils.ITkDBWindow):
|
|
|
331
405
|
if len(self.comments) > 0:
|
|
332
406
|
self.btn_comments.set_label("Comments ({})".format(len(self.comments)))
|
|
333
407
|
|
|
408
|
+
|
|
409
|
+
def find_defects(self):
|
|
410
|
+
"""Find defects in payload."""
|
|
411
|
+
self.defects = []
|
|
412
|
+
if "defects" in self.data:
|
|
413
|
+
for D in self.data["defects"]:
|
|
414
|
+
self.defects.append(D)
|
|
415
|
+
|
|
416
|
+
if len(self.defects) > 0:
|
|
417
|
+
self.btn_defects.set_label("Defects ({})".format(len(self.defects)))
|
|
418
|
+
|
|
334
419
|
def edit_defects(self, *args):
|
|
335
420
|
"""Edit test defects."""
|
|
336
421
|
SD = ShowDefects("Test Defects", self.defects, self)
|
|
@@ -356,6 +441,7 @@ class UploadTest(dbGtkUtils.ITkDBWindow):
|
|
|
356
441
|
|
|
357
442
|
self.data["comments"] = self.comments
|
|
358
443
|
self.data["defects"] = self.defects
|
|
444
|
+
|
|
359
445
|
rc = ITkDButils.upload_test(self.session, self.data, self.attachments)
|
|
360
446
|
if rc:
|
|
361
447
|
ipos = rc.find("The following details may help:")
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
__version__ = "0.0
|
|
1
|
+
__version__ = "0.9.0"
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
def dash_board():
|
|
@@ -25,9 +25,9 @@ def groundVITests():
|
|
|
25
25
|
main()
|
|
26
26
|
|
|
27
27
|
|
|
28
|
-
def
|
|
28
|
+
def createShipments():
|
|
29
29
|
"""Send items."""
|
|
30
|
-
from .
|
|
30
|
+
from .CreateShipments import main
|
|
31
31
|
main()
|
|
32
32
|
|
|
33
33
|
def uploadTest():
|
|
@@ -50,3 +50,8 @@ def wirebondTest():
|
|
|
50
50
|
"""Inputs data and eventually upload wirebod test."""
|
|
51
51
|
from .WireBondGui import main
|
|
52
52
|
main()
|
|
53
|
+
|
|
54
|
+
def uploadPetalInformation():
|
|
55
|
+
"""Read files from AVS nd create Petal core in PDB."""
|
|
56
|
+
from .UploadPetalInformation import main
|
|
57
|
+
main()
|
|
@@ -15,7 +15,8 @@ from itkdb_gtk import dbGtkUtils
|
|
|
15
15
|
from itkdb_gtk import GetShipments
|
|
16
16
|
from itkdb_gtk import GroundVITests
|
|
17
17
|
from itkdb_gtk import ITkDBlogin
|
|
18
|
-
from itkdb_gtk import
|
|
18
|
+
from itkdb_gtk import CreateShipments
|
|
19
|
+
from itkdb_gtk import UploadTest
|
|
19
20
|
from itkdb_gtk import UploadMultipleTests
|
|
20
21
|
from itkdb_gtk import GlueWeight
|
|
21
22
|
from itkdb_gtk import UploadModuleIV
|
|
@@ -30,12 +31,13 @@ from gi.repository import Gtk
|
|
|
30
31
|
class DashWindow(dbGtkUtils.ITkDBWindow):
|
|
31
32
|
"""Dashboard class."""
|
|
32
33
|
UPLOAD_TEST = 1
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
34
|
+
UPLOAD_MANY_TESTS = 2
|
|
35
|
+
CREATE_SHIPMNT = 3
|
|
36
|
+
RECV_SHIPMNT = 4
|
|
37
|
+
PETAL_GND = 5
|
|
38
|
+
GLUE_WEIGHT = 6
|
|
39
|
+
MOD_IV = 7
|
|
40
|
+
WIRE_BOND = 8
|
|
39
41
|
|
|
40
42
|
def __init__(self, session):
|
|
41
43
|
"""Initialization."""
|
|
@@ -60,27 +62,31 @@ class DashWindow(dbGtkUtils.ITkDBWindow):
|
|
|
60
62
|
grid.attach(lbl, 0, irow, 1, 1)
|
|
61
63
|
|
|
62
64
|
irow += 1
|
|
63
|
-
btnTest = Gtk.Button(label="Upload
|
|
65
|
+
btnTest = Gtk.Button(label="Upload Single Test")
|
|
64
66
|
btnTest.connect("clicked", self.upload_test)
|
|
65
67
|
grid.attach(btnTest, 0, irow, 1, 1)
|
|
66
68
|
|
|
69
|
+
btnTest = Gtk.Button(label="Upload Multiple Tests")
|
|
70
|
+
btnTest.connect("clicked", self.upload_multiple_tests)
|
|
71
|
+
grid.attach(btnTest, 1, irow, 1, 1)
|
|
72
|
+
|
|
73
|
+
irow += 1
|
|
67
74
|
btnGnd = Gtk.Button(label="Petal VI/GND")
|
|
68
75
|
btnGnd.connect("clicked", self.petal_gnd)
|
|
69
|
-
grid.attach(btnGnd,
|
|
76
|
+
grid.attach(btnGnd, 0, irow, 1, 1)
|
|
70
77
|
|
|
71
|
-
irow += 1
|
|
72
78
|
btnWeight = Gtk.Button(label="GlueWeight")
|
|
73
79
|
btnWeight.connect("clicked", self.glue_weight)
|
|
74
|
-
grid.attach(btnWeight,
|
|
80
|
+
grid.attach(btnWeight, 1, irow, 1, 1)
|
|
75
81
|
|
|
82
|
+
irow += 1
|
|
76
83
|
btnModIV = Gtk.Button(label="Module IV")
|
|
77
84
|
btnModIV.connect("clicked", self.module_IV)
|
|
78
|
-
grid.attach(btnModIV,
|
|
85
|
+
grid.attach(btnModIV, 0, irow, 1, 1)
|
|
79
86
|
|
|
80
|
-
irow +=1
|
|
81
87
|
btnWireBond = Gtk.Button(label="Wire Bond")
|
|
82
88
|
btnWireBond.connect("clicked", self.wire_bond)
|
|
83
|
-
grid.attach(btnWireBond,
|
|
89
|
+
grid.attach(btnWireBond, 1, irow, 1, 1)
|
|
84
90
|
|
|
85
91
|
|
|
86
92
|
|
|
@@ -113,19 +119,30 @@ class DashWindow(dbGtkUtils.ITkDBWindow):
|
|
|
113
119
|
if self.mask & bt:
|
|
114
120
|
return
|
|
115
121
|
|
|
122
|
+
self.mask |= bt
|
|
123
|
+
W = UploadTest.UploadTest(self.session)
|
|
124
|
+
W.connect("destroy", self.app_closed, bitn)
|
|
125
|
+
|
|
126
|
+
def upload_multiple_tests(self, *args):
|
|
127
|
+
"""Launch upload multiple test."""
|
|
128
|
+
bitn = DashWindow.UPLOAD_MANY_TESTS
|
|
129
|
+
bt = 1 << bitn
|
|
130
|
+
if self.mask & bt:
|
|
131
|
+
return
|
|
132
|
+
|
|
116
133
|
self.mask |= bt
|
|
117
134
|
W = UploadMultipleTests.UploadMultipleTests(self.session)
|
|
118
135
|
W.connect("destroy", self.app_closed, bitn)
|
|
119
136
|
|
|
120
137
|
def create_shipment(self, *args):
|
|
121
|
-
"""Launch
|
|
138
|
+
"""Launch createShipment."""
|
|
122
139
|
bitn = DashWindow.CREATE_SHIPMNT
|
|
123
140
|
bt = 1 << bitn
|
|
124
141
|
if self.mask & bt:
|
|
125
142
|
return
|
|
126
143
|
|
|
127
144
|
self.mask |= bt
|
|
128
|
-
W =
|
|
145
|
+
W = CreateShipments.CreateShipments(self.session)
|
|
129
146
|
W.connect("destroy", self.app_closed, bitn)
|
|
130
147
|
|
|
131
148
|
def receive_shipment(self, *args):
|
|
@@ -108,7 +108,6 @@ def empty_container(container):
|
|
|
108
108
|
"""Remove all children from a container.
|
|
109
109
|
|
|
110
110
|
Args:
|
|
111
|
-
----
|
|
112
111
|
container: The container.
|
|
113
112
|
|
|
114
113
|
"""
|
|
@@ -121,7 +120,6 @@ def replace_in_container(container, child):
|
|
|
121
120
|
"""Replace a child from a single-child container.
|
|
122
121
|
|
|
123
122
|
Args:
|
|
124
|
-
----
|
|
125
123
|
container: the container
|
|
126
124
|
child: the new child to be added
|
|
127
125
|
|
|
@@ -138,7 +136,6 @@ def complain(main_title, second_text="", parent=None):
|
|
|
138
136
|
"""Open an error dialog.
|
|
139
137
|
|
|
140
138
|
Args:
|
|
141
|
-
----
|
|
142
139
|
main_title: Main text in window
|
|
143
140
|
second_text: Second text
|
|
144
141
|
parent: dialog parent
|
|
@@ -160,13 +157,11 @@ def ask_for_confirmation(main_title, second_text, parent=None):
|
|
|
160
157
|
"""Ask for action cofirmation.
|
|
161
158
|
|
|
162
159
|
Args:
|
|
163
|
-
----
|
|
164
160
|
main_title: Main title in the message window
|
|
165
161
|
second_text: Secondary text in the message widow
|
|
166
162
|
parent (optional): The parent window. Defaults to None.
|
|
167
163
|
|
|
168
164
|
Return:
|
|
169
|
-
------
|
|
170
165
|
OK: True if OK button clicked.
|
|
171
166
|
|
|
172
167
|
"""
|
|
@@ -254,14 +249,12 @@ def get_a_value(main_title, second_text=None, is_tv=False, parent=None):
|
|
|
254
249
|
"""Open a dialog to get a value.
|
|
255
250
|
|
|
256
251
|
Args:
|
|
257
|
-
----
|
|
258
252
|
main_title: Main title in the message window
|
|
259
253
|
is_tv: If true show a text view rathar than an entry.
|
|
260
254
|
second_text: Secondary text in the message widow
|
|
261
255
|
parent (optional): The parent window. Defaults to None.
|
|
262
256
|
|
|
263
257
|
Return:
|
|
264
|
-
------
|
|
265
258
|
value: The value in the entry
|
|
266
259
|
|
|
267
260
|
"""
|
|
@@ -274,9 +267,9 @@ def get_a_value(main_title, second_text=None, is_tv=False, parent=None):
|
|
|
274
267
|
box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
|
|
275
268
|
area.add(box)
|
|
276
269
|
|
|
277
|
-
box.pack_start(Gtk.Label(main_title), False, True, 0)
|
|
270
|
+
box.pack_start(Gtk.Label(label=main_title), False, True, 0)
|
|
278
271
|
if second_text and len(second_text):
|
|
279
|
-
box.pack_start(Gtk.Label(second_text), False, True, 0)
|
|
272
|
+
box.pack_start(Gtk.Label(label=second_text), False, True, 0)
|
|
280
273
|
|
|
281
274
|
entry = TextEntry(3 if is_tv else -1)
|
|
282
275
|
|
|
@@ -299,15 +292,13 @@ def get_a_list_of_values(main_title, labels, defaults=None, second_text=None, pa
|
|
|
299
292
|
"""Get a list of values.
|
|
300
293
|
|
|
301
294
|
Args:
|
|
302
|
-
----
|
|
303
295
|
main_title: Main title for window
|
|
304
296
|
labels: List of labes to get the values. If the label ends with /v
|
|
305
297
|
then a TextView will be shown instead of a TextEntry.
|
|
306
298
|
defaults (optional): default values-
|
|
307
299
|
second_text (optional): Second title for window-. Defaults to None.
|
|
308
300
|
|
|
309
|
-
Returns
|
|
310
|
-
-------
|
|
301
|
+
Returns:
|
|
311
302
|
list with values
|
|
312
303
|
|
|
313
304
|
"""
|
|
@@ -325,7 +316,7 @@ def get_a_list_of_values(main_title, labels, defaults=None, second_text=None, pa
|
|
|
325
316
|
lbl.set_markup("<b>{}</b>".format(main_title))
|
|
326
317
|
box.pack_start(lbl, False, True, 5)
|
|
327
318
|
if second_text and len(second_text):
|
|
328
|
-
box.pack_start(Gtk.Label(second_text), False, True, 0)
|
|
319
|
+
box.pack_start(Gtk.Label(label=second_text), False, True, 0)
|
|
329
320
|
|
|
330
321
|
entries = []
|
|
331
322
|
values = []
|
|
@@ -341,7 +332,7 @@ def get_a_list_of_values(main_title, labels, defaults=None, second_text=None, pa
|
|
|
341
332
|
else:
|
|
342
333
|
is_text_view.append(False)
|
|
343
334
|
|
|
344
|
-
lbl = Gtk.Label(txt)
|
|
335
|
+
lbl = Gtk.Label(label=txt)
|
|
345
336
|
lbl.set_justify(Gtk.Justification.LEFT)
|
|
346
337
|
vbox.pack_start(lbl, False, False, 0)
|
|
347
338
|
|
|
@@ -369,7 +360,6 @@ def add_button_to_container(box, label, tooltip=None, callback=None):
|
|
|
369
360
|
"""Creates a buttons and adds to container.
|
|
370
361
|
|
|
371
362
|
Args:
|
|
372
|
-
----
|
|
373
363
|
box: The container.
|
|
374
364
|
label: The button label
|
|
375
365
|
tooltip (optional): Tooltip message. Defaults to None.
|
|
@@ -407,7 +397,7 @@ class MessagePanel(object):
|
|
|
407
397
|
Args:
|
|
408
398
|
size: size of the panel
|
|
409
399
|
|
|
410
|
-
Returns
|
|
400
|
+
Returns:
|
|
411
401
|
Gtk.TextBuffer, Gtk.Frame
|
|
412
402
|
"""
|
|
413
403
|
frame = Gtk.Frame()
|
|
@@ -453,7 +443,6 @@ class ITkDBWindow(Gtk.Window):
|
|
|
453
443
|
"""Initialization.
|
|
454
444
|
|
|
455
445
|
Args:
|
|
456
|
-
----
|
|
457
446
|
title: The title of the window.
|
|
458
447
|
session: ITkDB session.
|
|
459
448
|
show_search: tooltip for search button in header (calls to query_db).
|
|
@@ -610,7 +599,6 @@ class DictDialog(Gtk.Grid):
|
|
|
610
599
|
"""Create the Gtk.Grid.
|
|
611
600
|
|
|
612
601
|
Args:
|
|
613
|
-
----
|
|
614
602
|
values: A dict (JSon-like)
|
|
615
603
|
hidden_keys: keys tha twill not be shown.
|
|
616
604
|
|
|
@@ -730,7 +718,6 @@ class DictDialog(Gtk.Grid):
|
|
|
730
718
|
"""Show the keys and values of a dictionary (JSON).
|
|
731
719
|
|
|
732
720
|
Args:
|
|
733
|
-
----
|
|
734
721
|
values: The dictionary object
|
|
735
722
|
|
|
736
723
|
"""
|
|
@@ -764,8 +751,10 @@ class DictDialog(Gtk.Grid):
|
|
|
764
751
|
def create_scrolled_dictdialog(the_dict, hidden=("component", "testType")):
|
|
765
752
|
"""Create a DictDialog within a scrolled window.
|
|
766
753
|
|
|
767
|
-
|
|
768
|
-
|
|
754
|
+
Args:
|
|
755
|
+
the_dict: the input dictionary with values.
|
|
756
|
+
|
|
757
|
+
Returns:
|
|
769
758
|
scrolled: the scrolled window
|
|
770
759
|
gM: the DictDialog
|
|
771
760
|
|
|
@@ -37,7 +37,6 @@ def create_weight(session, SN, the_date=None, manager="", passed=True, problems=
|
|
|
37
37
|
"""Creates the dictionary for a WEIGHT test.
|
|
38
38
|
|
|
39
39
|
Args:
|
|
40
|
-
----
|
|
41
40
|
session: the DB session
|
|
42
41
|
SN: Serial Number
|
|
43
42
|
the_date: the date of the test
|
|
@@ -62,7 +61,6 @@ def create_manufacturing(session, SN, the_date=None, manager="", passed=True, pr
|
|
|
62
61
|
"""Create the dictionary or the MANUFACTURING test.
|
|
63
62
|
|
|
64
63
|
Args:
|
|
65
|
-
----
|
|
66
64
|
session: the DB session
|
|
67
65
|
SN: Serial Number
|
|
68
66
|
the_date: the date of the test
|
|
@@ -102,7 +100,6 @@ def create_delamination_test(session, SN, the_date=None, operator="", passed=Tru
|
|
|
102
100
|
"""Create the delamination test JSON.
|
|
103
101
|
|
|
104
102
|
Args:
|
|
105
|
-
----
|
|
106
103
|
session: the DB session
|
|
107
104
|
SN: Serial Number
|
|
108
105
|
the_date: the date of the test
|
|
@@ -128,7 +125,6 @@ def create_grounding_test(session, SN, the_date=None, operator="", passed=True,
|
|
|
128
125
|
"""Create grounding test.
|
|
129
126
|
|
|
130
127
|
Args:
|
|
131
|
-
----
|
|
132
128
|
session: the DB session
|
|
133
129
|
SN: Serial Number
|
|
134
130
|
the_date: the date of the test
|
|
@@ -154,7 +150,6 @@ def create_metrology_test(session, SN, the_date=None, operator="", passed=True,
|
|
|
154
150
|
"""Metrology test.
|
|
155
151
|
|
|
156
152
|
Args:
|
|
157
|
-
----
|
|
158
153
|
session: the DB session
|
|
159
154
|
SN: Serial Number
|
|
160
155
|
the_date: the date of the test
|
|
@@ -316,7 +311,6 @@ def readFATfile(session, fnam, SN=None):
|
|
|
316
311
|
"""Read data from FAT excel file.
|
|
317
312
|
|
|
318
313
|
Args:
|
|
319
|
-
----
|
|
320
314
|
session: the DB session
|
|
321
315
|
fnam: File path
|
|
322
316
|
SN: COre serial number
|
|
@@ -463,7 +457,6 @@ def readProductionSheet(session, fnam, SN):
|
|
|
463
457
|
"""Read data fro AVS PS.
|
|
464
458
|
|
|
465
459
|
Args:
|
|
466
|
-
----
|
|
467
460
|
session: the DB session
|
|
468
461
|
fnam: path of input file
|
|
469
462
|
SN: The serial number
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: itkdb_gtk
|
|
3
|
-
Version: 0.0
|
|
3
|
+
Version: 0.9.0
|
|
4
4
|
Summary: A collection of Gtk based GUI to access ITkDB.
|
|
5
5
|
Author-email: Carlos Lacasta <carlos.lacasta@cern.ch>
|
|
6
6
|
Project-URL: Homepage, https://gitlab.cern.ch/atlas-itk/sw/db/itk-pdb-gtk-gui-utils
|
|
@@ -57,7 +57,7 @@ Find all shipments to be received at a given site and list them. It handles a
|
|
|
57
57
|
barcode reader that helps identifying the items actually received for the
|
|
58
58
|
reception. It will finally make the DB aware of the items receptioned.
|
|
59
59
|
|
|
60
|
-
##
|
|
60
|
+
## CreateShipments.py
|
|
61
61
|
Create a new shipment. Allows to add items with the QR reader as well as from a
|
|
62
62
|
GUI dialog. One can add comments and attachments to the shipment.
|
|
63
63
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
README.md
|
|
2
2
|
pyproject.toml
|
|
3
|
+
itkdb_gtk/CreateShipments.py
|
|
3
4
|
itkdb_gtk/GetShipments.py
|
|
4
5
|
itkdb_gtk/GlueWeight.py
|
|
5
6
|
itkdb_gtk/GroundVITests.py
|
|
@@ -7,7 +8,6 @@ itkdb_gtk/ITkDB.desktop
|
|
|
7
8
|
itkdb_gtk/ITkDB.svg
|
|
8
9
|
itkdb_gtk/ITkDBlogin.py
|
|
9
10
|
itkdb_gtk/ITkDButils.py
|
|
10
|
-
itkdb_gtk/SendShipments.py
|
|
11
11
|
itkdb_gtk/ShowAttachments.py
|
|
12
12
|
itkdb_gtk/ShowComments.py
|
|
13
13
|
itkdb_gtk/ShowDefects.py
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
[gui_scripts]
|
|
2
|
+
createShipments = itkdb_gtk:createShipments
|
|
2
3
|
getShipments = itkdb_gtk:getShipments
|
|
3
4
|
glueWeight = itkdb_gtk:glueWeight
|
|
4
5
|
groundVITests = itkdb_gtk:groundVITests
|
|
6
|
+
iploadPetalInformation = itkdb_gtk:uploadPetalInformation
|
|
5
7
|
itkdb_dashBoard = itkdb_gtk:dash_board
|
|
6
|
-
sendShipments = itkdb_gtk:sendShipments
|
|
7
8
|
uploadModuleIV = itkdb_gtk:uploadModuleIV
|
|
8
9
|
uploadMultipleTests = itkdb_gtk:uploadMultipleTests
|
|
9
10
|
uploadTest = itkdb_gtk:uploadTest
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "itkdb_gtk"
|
|
7
|
-
version = "0.0
|
|
7
|
+
version = "0.9.0"
|
|
8
8
|
authors = [
|
|
9
9
|
{ name="Carlos Lacasta", email="carlos.lacasta@cern.ch" },
|
|
10
10
|
]
|
|
@@ -31,11 +31,12 @@ itkdb_dashBoard = "itkdb_gtk:dash_board"
|
|
|
31
31
|
getShipments = "itkdb_gtk:getShipments"
|
|
32
32
|
glueWeight = "itkdb_gtk:glueWeight"
|
|
33
33
|
groundVITests = "itkdb_gtk:groundVITests"
|
|
34
|
-
|
|
34
|
+
createShipments = "itkdb_gtk:createShipments"
|
|
35
35
|
uploadTest = "itkdb_gtk:uploadTest"
|
|
36
36
|
uploadMultipleTests = "itkdb_gtk:uploadMultipleTests"
|
|
37
37
|
uploadModuleIV = "itkdb_gtk:uploadModuleIV"
|
|
38
38
|
wirebondTest = "itkdb_gtk:wirebondTest"
|
|
39
|
+
iploadPetalInformation = "itkdb_gtk:uploadPetalInformation"
|
|
39
40
|
|
|
40
41
|
[tool.setuptools]
|
|
41
42
|
include-package-data = true
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|