itkdb-gtk 0.10.7__py3-none-any.whl → 0.10.9__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.

Potentially problematic release.


This version of itkdb-gtk might be problematic. Click here for more details.

@@ -1,15 +1,16 @@
1
1
  #!/usr/bin/env python3
2
2
  """Test dashboard."""
3
- import json
4
3
  import sys
4
+ import copy
5
+ from pathlib import Path
5
6
 
6
7
  try:
7
8
  import itkdb_gtk
8
-
9
+
9
10
  except ImportError:
10
- from pathlib import Path
11
11
  cwd = Path(__file__).parent.parent
12
12
  sys.path.append(cwd.as_posix())
13
+ import itkdb_gtk
13
14
 
14
15
  from itkdb_gtk import dbGtkUtils, ITkDBlogin, ITkDButils
15
16
 
@@ -37,12 +38,12 @@ def find_children(W):
37
38
  class PetalReceptionTests(dbGtkUtils.ITkDBWindow):
38
39
  """Petl Reception Test GUI."""
39
40
 
40
- def __init__(self, session, help=None):
41
+ def __init__(self, session, help_link=None):
41
42
  """Initialization."""
42
43
  super().__init__(title="ITkDB Dashboard",
43
44
  session=session,
44
45
  show_search="Find object with given SN.",
45
- help=help)
46
+ help_link=help_link)
46
47
 
47
48
  # Members
48
49
  self.dbObject = None
@@ -66,7 +67,7 @@ class PetalReceptionTests(dbGtkUtils.ITkDBWindow):
66
67
 
67
68
  self.SN = itkdb_gtk.dbGtkUtils.TextEntry()
68
69
  self.SN.connect("text-changed", self.on_SN_changed)
69
-
70
+
70
71
  #self.SN = Gtk.Entry()
71
72
  #self.SN.connect("focus-in-event", self.on_sn_enter)
72
73
  #self.SN.connect("focus-out-event", self.on_sn_leave)
@@ -107,6 +108,8 @@ class PetalReceptionTests(dbGtkUtils.ITkDBWindow):
107
108
  self.create_test_box("Visual Inspection", "VISUAL_INSPECTION")
108
109
  self.create_test_box("Grounding", "GROUNDING_CHECK")
109
110
  self.create_test_box("Pipe bending", "BENDING120")
111
+ self.create_test_box("X-rays", "XRAYIMAGING")
112
+
110
113
 
111
114
  # The text view
112
115
  self.mainBox.pack_end(self.message_panel.frame, True, True, 5)
@@ -117,7 +120,7 @@ class PetalReceptionTests(dbGtkUtils.ITkDBWindow):
117
120
  """New SN given. Ask in PDB,"""
118
121
  if len(value) <= 0:
119
122
  return None
120
-
123
+
121
124
  self.query_db()
122
125
  current_location = self.dbObject["currentLocation"]["code"]
123
126
  dbGtkUtils.set_combo_iter(self.inst_cmb, current_location, 0)
@@ -134,7 +137,7 @@ class PetalReceptionTests(dbGtkUtils.ITkDBWindow):
134
137
  for i in range(npages):
135
138
  page = self.notebook.get_nth_page(i)
136
139
  page.dict_dialog.factory_reset()
137
-
140
+
138
141
 
139
142
  def create_test_box(self, label, test_name, institute="IFIC"):
140
143
  """Create and add to notebook a test dialog.
@@ -213,6 +216,27 @@ class PetalReceptionTests(dbGtkUtils.ITkDBWindow):
213
216
  page.dict_dialog.values["institution"] = self.institute
214
217
  page.dict_dialog.refresh()
215
218
 
219
+ def upload_this_test(self, values):
220
+ """Upload a single test."""
221
+ # print(json.dumps(values, indent=2))
222
+
223
+ attachments = []
224
+ if values["testType"] == "XRAYIMAGING":
225
+ fnam = values["results"]["IMAGELINK"]
226
+ if fnam is not None and len(fnam)>0:
227
+ P = Path(fnam).expanduser().resolve()
228
+ if P.exists():
229
+ A = ITkDButils.Attachment(path=P.as_posix(), title=P.name, desc="X-ray image")
230
+ values["results"]["IMAGELINK"] = P.name
231
+ attachments.append(A)
232
+
233
+ rc = ITkDButils.upload_test(self.session, values, attachments=attachments, check_runNumber=True)
234
+ if rc is not None:
235
+ dbGtkUtils.complain("Could not upload test", rc)
236
+
237
+ else:
238
+ self.write_message("Test uploaded. {} - {}\n".format(values["component"], values["testType"]))
239
+
216
240
  def upload_single_test(self, *args):
217
241
  """Upload the current test."""
218
242
  SN = self.SN.get_text()
@@ -225,16 +249,9 @@ class PetalReceptionTests(dbGtkUtils.ITkDBWindow):
225
249
  if dctD is None:
226
250
  return
227
251
 
228
- values = dctD.values
252
+ values = copy.deepcopy(dctD.values)
229
253
  values["component"] = SN
230
- # print(json.dumps(values, indent=2))
231
- rc = ITkDButils.upload_test(self.session, values)
232
- if rc is not None:
233
- dbGtkUtils.complain("Could not upload test", rc)
234
-
235
- else:
236
- dbGtkUtils.ask_for_confirmation("Test uploaded.",
237
- "{} - {}".format(values["component"], values["testType"]))
254
+ self.upload_this_test(values)
238
255
 
239
256
  def upload_tests(self, *args):
240
257
  """Upload the current test."""
@@ -251,14 +268,7 @@ class PetalReceptionTests(dbGtkUtils.ITkDBWindow):
251
268
 
252
269
  values = dctD.values
253
270
  values["component"] = SN
254
- # print(json.dumps(values, indent=2))
255
- rc = ITkDButils.upload_test(self.session, values)
256
- if rc is not None:
257
- dbGtkUtils.complain("Could not upload test", rc)
258
-
259
- else:
260
- self.write_message("Test uploaded. {} - {}\n".format(values["component"], values["testType"]))
261
-
271
+ self.upload_this_test(values)
262
272
 
263
273
  def main():
264
274
  """Main entry."""
itkdb_gtk/SensorUtils.py CHANGED
@@ -1,10 +1,8 @@
1
1
  #!/usr/bin/env python3
2
2
  """A collection of utilities for sensor data."""
3
- import io
4
3
  from pathlib import Path
5
- import numpy as np
6
4
  import warnings
7
- import tempfile
5
+ import numpy as np
8
6
  from itkdb_gtk import ITkDButils
9
7
 
10
8
  #
@@ -210,7 +208,7 @@ def LocateMicroDischarge(
210
208
  V_BDV_ind = V_BDV_ind[ind]
211
209
  if V_avg_BD.shape == (0,):
212
210
  return NO_BD_CONST
213
-
211
+
214
212
  return NO_BD_CONST
215
213
 
216
214
 
@@ -260,8 +258,12 @@ def sensor_data_to_json(session, mdata, mod_type, logger=None):
260
258
  passed = True
261
259
 
262
260
  # Find Current @ 500V
263
- indx = np.where(V == 500)[0]
264
- i_500 = I[indx][0] / area
261
+ try:
262
+ indx = np.where(V == 500)[0]
263
+ i_500 = I[indx][0] / area
264
+ except IndexError:
265
+ i_500 = 999
266
+
265
267
  if logger:
266
268
  logger.write_message("I @ 500V = {:.2f} nA/cm2\n".format(i_500))
267
269
 
@@ -296,7 +298,7 @@ def sensor_data_to_json(session, mdata, mod_type, logger=None):
296
298
  )
297
299
  if logger:
298
300
  logger.write_message("...{}. FAILED\n".format(txt))
299
-
301
+
300
302
  passed = False
301
303
  else:
302
304
  if MicroDischargeV == NO_BD_CONST:
@@ -388,7 +390,7 @@ def save_sensor_data(fnam, mdata, name=None):
388
390
  Args:
389
391
  fnam: file name or file object.
390
392
  mdata (dict): data as returned by :function:`read_sensor_file`
391
-
393
+
392
394
  """
393
395
  if hasattr(fnam, "write") and callable(fnam.write):
394
396
  data_out = fnam
@@ -396,17 +398,17 @@ def save_sensor_data(fnam, mdata, name=None):
396
398
  fnam = name
397
399
  else:
398
400
  fnam = build_file_name(mdata)
399
-
401
+
400
402
  else:
401
403
  data_out = open(fnam, 'w', encoding="utf-8")
402
404
  fnam = Path(fnam).name
403
-
405
+
404
406
  is_module = "Module_SN" in mdata
405
407
  if is_module:
406
408
  SN = mdata["Module_SN"]
407
409
  else:
408
410
  SN = mdata["Component"]
409
-
411
+
410
412
  if is_module:
411
413
  items = [
412
414
  "Type",
@@ -446,7 +448,7 @@ def save_sensor_data(fnam, mdata, name=None):
446
448
  "Humidity",
447
449
  "Comments",
448
450
  ]
449
-
451
+
450
452
  data_out.write("{}\n".format(fnam))
451
453
  for key in items:
452
454
  if key == "Module_SN" or key == "Component":
@@ -469,7 +471,7 @@ def save_sensor_data(fnam, mdata, name=None):
469
471
  V = np.abs(mdata["curve"]["V"])
470
472
  I = np.abs(mdata["curve"]["I"])
471
473
  S = np.abs(mdata["curve"]["S"])
472
-
474
+
473
475
  ndata = len(V)
474
476
  for i in range(ndata):
475
477
  data_out.write("{:10.2f}\t{:10.2f}\t{:10.2f}\n".format(V[i], I[i], S[i]))
@@ -487,4 +489,4 @@ def build_file_name(mdata):
487
489
  SN = mdata["Component"]
488
490
  fnam = "{}-W{}_IV_{}".format(mdata["Batch"], mdata["Wafer"], mdata["RunNumber"])
489
491
 
490
- return fnam
492
+ return fnam
@@ -232,7 +232,9 @@ class ShowAttachments(Gtk.Dialog):
232
232
  rc = dlg.run()
233
233
  if rc == Gtk.ResponseType.OK:
234
234
  path = Path(dlg.fC.get_filename())
235
- A = ITkDButils.Attachment(path, dlg.att_title.get_text().strip(), dlg.att_desc.get_text().strip())
235
+ A = ITkDButils.Attachment(path=path,
236
+ title=dlg.att_title.get_text().strip(),
237
+ desc=dlg.att_desc.get_text().strip())
236
238
  self.append_attachment_to_view(A)
237
239
  self.attachments.append(A)
238
240
 
@@ -16,7 +16,6 @@ import json
16
16
  import tempfile
17
17
  import copy
18
18
  from pathlib import Path
19
- import shutil
20
19
 
21
20
  from matplotlib.backends.backend_gtk3agg import FigureCanvasGTK3Agg as FigureCanvas
22
21
  from matplotlib.backends.backend_gtk3 import NavigationToolbar2GTK3 as NavigationToolbar
@@ -56,11 +55,12 @@ def remove_files(W, flist):
56
55
  class IVwindow(dbGtkUtils.ITkDBWindow):
57
56
  """GUI for IV file handling."""
58
57
 
59
- def __init__(self, session, title="IV window", options=None, help=None):
58
+ def __init__(self, session, title="IV window", options=None, help_link=None):
60
59
  """Initialization."""
61
- super().__init__(
62
- session=session, title=title, show_search=None, gtk_runs=gtk_runs, help=help
63
- )
60
+ super().__init__(session=session, title=title,
61
+ show_search=None, gtk_runs=gtk_runs,
62
+ help_link=help_link
63
+ )
64
64
  self.mdata = {}
65
65
  self.mod_type = {}
66
66
  self.mod_SN = {}
@@ -179,7 +179,7 @@ class IVwindow(dbGtkUtils.ITkDBWindow):
179
179
  js_out.write(json.dumps(test, indent=3, cls=dbGtkUtils.MyEncoder))
180
180
  js_out.close()
181
181
 
182
- attachment = ITkDButils.Attachment(data_out.name, "resultsFile", fnam)
182
+ attachment = ITkDButils.Attachment(path=data_out.name, title="resultsFile", desc=fnam)
183
183
  uploadW = UploadTest.UploadTest(self.session, js_out.name, attachment)
184
184
  uploadW.connect("destroy", remove_files, [data_out.name, js_out.name])
185
185
 
@@ -247,7 +247,7 @@ class IVwindow(dbGtkUtils.ITkDBWindow):
247
247
  rc = fc.run()
248
248
  if rc == Gtk.ResponseType.OK:
249
249
  SensorUtils.save_sensor_data(fc.get_filename(), mdata)
250
-
250
+
251
251
  fc.hide()
252
252
  fc.destroy()
253
253
 
@@ -256,7 +256,7 @@ class IVwindow(dbGtkUtils.ITkDBWindow):
256
256
 
257
257
  if do_both.get_active():
258
258
  self.upload_test(self.mdata["single"], self.mod_type["single"])
259
-
259
+
260
260
  dlg.destroy()
261
261
 
262
262
  def on_refresh(self, *args):
@@ -11,7 +11,6 @@ try:
11
11
  import itkdb_gtk
12
12
 
13
13
  except ImportError:
14
- from pathlib import Path
15
14
  cwd = Path(__file__).parent.parent
16
15
  sys.path.append(cwd.as_posix())
17
16
 
@@ -103,15 +102,17 @@ def check_data(data):
103
102
  class UploadMultipleTests(dbGtkUtils.ITkDBWindow):
104
103
  """Collects information to upload a test and its attachments."""
105
104
 
106
- def __init__(self, session, help=help):
105
+ def __init__(self, session, help_link=None):
107
106
  """Initialization.
108
107
 
109
108
  Args:
110
109
  session: ITkDB session
111
110
 
112
111
  """
113
- super().__init__(session=session, title="Upload Tests", gtk_runs=gtk_runs, help=help)
112
+ super().__init__(session=session, title="Upload Tests", gtk_runs=gtk_runs, help_link=help_link)
114
113
  self.tests = []
114
+ self.data = None
115
+ self.tree = None
115
116
 
116
117
  self.init_window()
117
118
 
@@ -224,12 +225,12 @@ class UploadMultipleTests(dbGtkUtils.ITkDBWindow):
224
225
  # double click shows attachments
225
226
  if event.button == 1 and event.type == Gdk.EventType.DOUBLE_BUTTON_PRESS:
226
227
  select = self.tree.get_selection()
227
- model, iter = select.get_selected()
228
- if not iter:
228
+ model, lv_iter = select.get_selected()
229
+ if not lv_iter:
229
230
  return
230
231
 
231
- self.on_show_json(None, (model, iter, model[iter]))
232
- # self.on_show_attachments(None, (model, iter, model[iter]))
232
+ self.on_show_json(None, (model, lv_iter, model[lv_iter]))
233
+ # self.on_show_attachments(None, (model, lv_iter, model[lv_iter]))
233
234
  return
234
235
 
235
236
  if event.button != 3:
@@ -237,44 +238,44 @@ class UploadMultipleTests(dbGtkUtils.ITkDBWindow):
237
238
 
238
239
  # Create popup menu
239
240
  select = self.tree.get_selection()
240
- model, iter = select.get_selected()
241
+ model, lv_iter = select.get_selected()
241
242
  values = None
242
- if iter:
243
- values = model[iter]
243
+ if lv_iter:
244
+ values = model[lv_iter]
244
245
 
245
- if not iter:
246
+ if not lv_iter:
246
247
  P = tree.get_path_at_pos(event.x, event.y)
247
248
  if P:
248
249
  print(P[0].to_string())
249
- iter = model.get_iter(P[0])
250
- values = model[iter]
250
+ lv_iter = model.get_iter(P[0])
251
+ values = model[lv_iter]
251
252
 
252
253
  if not values:
253
254
  return
254
255
 
255
256
  menu = Gtk.Menu()
256
257
  item_show = Gtk.MenuItem(label="Show JSOn")
257
- item_show.connect("activate", self.on_show_json, (model, iter, values))
258
+ item_show.connect("activate", self.on_show_json, (model, lv_iter, values))
258
259
  menu.append(item_show)
259
260
 
260
261
  item_set_stage = Gtk.MenuItem(label="Set Stage")
261
- item_set_stage.connect("activate", self.on_set_stage, (model, iter, values))
262
+ item_set_stage.connect("activate", self.on_set_stage, (model, lv_iter, values))
262
263
  menu.append(item_set_stage)
263
264
 
264
265
  item_show_att = Gtk.MenuItem(label="Edit Attachments")
265
- item_show_att.connect("activate", self.on_show_attachments, (model, iter, values))
266
+ item_show_att.connect("activate", self.on_show_attachments, (model, lv_iter, values))
266
267
  menu.append(item_show_att)
267
268
 
268
269
  item_show_com = Gtk.MenuItem(label="Edit Comments")
269
- item_show_com.connect("activate", self.on_show_comments, (model, iter, values))
270
+ item_show_com.connect("activate", self.on_show_comments, (model, lv_iter, values))
270
271
  menu.append(item_show_com)
271
272
 
272
273
  item_show_def = Gtk.MenuItem(label="Edit Defects")
273
- item_show_def.connect("activate", self.on_show_defects, (model, iter, values))
274
+ item_show_def.connect("activate", self.on_show_defects, (model, lv_iter, values))
274
275
  menu.append(item_show_def)
275
276
 
276
277
  item_del = Gtk.MenuItem(label="Delete")
277
- item_del.connect("activate", self.on_delete_tests, (model, iter, values))
278
+ item_del.connect("activate", self.on_delete_tests, (model, lv_iter, values))
278
279
  menu.append(item_del)
279
280
  menu.show_all()
280
281
 
@@ -282,17 +283,17 @@ class UploadMultipleTests(dbGtkUtils.ITkDBWindow):
282
283
 
283
284
  def on_show_json(self, item, data):
284
285
  """Test JSon."""
285
- model, iter, val = data
286
+ model, lv_iter, val = data
286
287
  payload = val[TestList.Json]
287
288
  value, dlg = create_json_data_editor(payload)
288
289
  rc = dlg.run()
289
290
  if rc == Gtk.ResponseType.OK:
290
291
  payload = value.values
291
- model.set_value(iter, TestList.Json, payload)
292
- model.set_value(iter, TestList.SN, payload["component"])
293
- model.set_value(iter, TestList.RunNumber, payload["runNumber"])
294
- model.set_value(iter, TestList.Date, handle_test_date(payload["date"]))
295
- model.set_value(iter, TestList.Institute, handle_test_date(payload["institution"]))
292
+ model.set_value(lv_iter, TestList.Json, payload)
293
+ model.set_value(lv_iter, TestList.SN, payload["component"])
294
+ model.set_value(lv_iter, TestList.RunNumber, payload["runNumber"])
295
+ model.set_value(lv_iter, TestList.Date, handle_test_date(payload["date"]))
296
+ model.set_value(lv_iter, TestList.Institute, handle_test_date(payload["institution"]))
296
297
 
297
298
 
298
299
  dlg.hide()
@@ -300,48 +301,48 @@ class UploadMultipleTests(dbGtkUtils.ITkDBWindow):
300
301
 
301
302
  def on_show_attachments(self, item, data):
302
303
  """Show the attachmetns."""
303
- model, iter, val = data
304
+ model, lv_iter, val = data
304
305
 
305
306
  SA = ShowAttachments("Test Attachments", self.session, val[TestList.Attachments], parent=self)
306
307
  response = SA.run()
307
308
  if response == Gtk.ResponseType.OK:
308
- model.set_value(iter, TestList.Attachments, SA.attachments)
309
- model.set_value(iter, TestList.Nattch, len(SA.attachments))
309
+ model.set_value(lv_iter, TestList.Attachments, SA.attachments)
310
+ model.set_value(lv_iter, TestList.Nattch, len(SA.attachments))
310
311
 
311
312
  SA.hide()
312
313
  SA.destroy()
313
314
 
314
315
  def on_show_comments(self, item, data):
315
316
  """Show comments"""
316
- model, iter, val = data
317
+ model, lv_iter, val = data
317
318
  SC = ShowComments("Test Comments", val[TestList.Comments], self)
318
319
  rc = SC.run()
319
320
  if rc == Gtk.ResponseType.OK:
320
- model.set_value(iter, TestList.Comments, SC.comments)
321
- model.set_value(iter, TestList.Ncomm, len(SC.comments))
321
+ model.set_value(lv_iter, TestList.Comments, SC.comments)
322
+ model.set_value(lv_iter, TestList.Ncomm, len(SC.comments))
322
323
 
323
324
  SC.hide()
324
325
  SC.destroy()
325
326
 
326
327
  def on_show_defects(self, item, data):
327
328
  """Show comments"""
328
- model, iter, val = data
329
+ model, lv_iter, val = data
329
330
  SD = ShowDefects("Test Defects", val[TestList.Defects], self)
330
331
  rc = SD.run()
331
332
  if rc == Gtk.ResponseType.OK:
332
- model.set_value(iter, TestList.Defects, SD.defects)
333
- model.set_value(iter, TestList.Ndef, len(SD.defects))
333
+ model.set_value(lv_iter, TestList.Defects, SD.defects)
334
+ model.set_value(lv_iter, TestList.Ndef, len(SD.defects))
334
335
 
335
336
  SD.hide()
336
337
  SD.destroy()
337
338
 
338
339
  def on_delete_tests(self, item, data):
339
340
  """Test edit."""
340
- model, iter, val = data
341
+ model, lv_iter, val = data
341
342
  rc = dbGtkUtils.ask_for_confirmation("Remove this test?",
342
343
  "{} - {}".format(val[TestList.SN], val[TestList.TestType]))
343
344
  if rc:
344
- model.remove(iter)
345
+ model.remove(lv_iter)
345
346
 
346
347
  def get_test_institute(self):
347
348
  """Select an institue."""
@@ -373,7 +374,7 @@ class UploadMultipleTests(dbGtkUtils.ITkDBWindow):
373
374
 
374
375
  def on_set_stage(self, item, data):
375
376
  """Set the test stage."""
376
- model, iter, val = data
377
+ model, lv_iter, val = data
377
378
  SN = val[TestList.SN]
378
379
  combo, currentStage = self.get_component_stages(SN)
379
380
 
@@ -392,9 +393,9 @@ class UploadMultipleTests(dbGtkUtils.ITkDBWindow):
392
393
  rc = dlg.run()
393
394
  if rc == Gtk.ResponseType.OK:
394
395
  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])
396
+ model[lv_iter][TestList.Stage] = new_stage
397
+ data = model[lv_iter][TestList.Json]
398
+ changed = (new_stage != model[lv_iter][TestList.currentStage])
398
399
  data["isRetroactive"] = changed
399
400
  if changed:
400
401
  data["stage"] = new_stage
@@ -402,7 +403,7 @@ class UploadMultipleTests(dbGtkUtils.ITkDBWindow):
402
403
  if "stage" in data:
403
404
  del data["stage"]
404
405
 
405
- model[iter][TestList.Json] = data
406
+ model[lv_iter][TestList.Json] = data
406
407
 
407
408
 
408
409
  dlg.hide()
@@ -437,9 +438,9 @@ class UploadMultipleTests(dbGtkUtils.ITkDBWindow):
437
438
  for ifile in files:
438
439
  try:
439
440
  has_errors = False
440
- data = json.loads(open(ifile).read())
441
+ data = json.loads(open(ifile, 'r', encoding="UTF-8").read())
441
442
  errors, missing = check_data(data)
442
- if len(missing):
443
+ if len(missing) > 0:
443
444
  self.write_message("{}\n".format(Path(ifile).name))
444
445
  self.write_message("Some keys are missing in the JSon file.\n")
445
446
  self.write_message("{}\n".format("\n".join(['\t'+line for line in missing])))
@@ -469,10 +470,12 @@ class UploadMultipleTests(dbGtkUtils.ITkDBWindow):
469
470
  if path.exists():
470
471
  path = path.expanduser().resolve()
471
472
  else:
472
- path = folder / path
473
+ path = folder / path.name
473
474
 
474
475
  if path.exists():
475
- attachments.append(ITkDButils.Attachment(path, att["title"], att["description"]))
476
+ attachments.append(ITkDButils.Attachment(path=path,
477
+ title=att["title"],
478
+ desc=att["description"]))
476
479
  else:
477
480
  self.write_message("Ignoring atachment {}".format(data["path"]))
478
481
 
@@ -596,15 +599,15 @@ class UploadMultipleTests(dbGtkUtils.ITkDBWindow):
596
599
  def upload_test(self):
597
600
  """Uploads tests and attachments."""
598
601
  model = self.tree.get_model()
599
- iter = model.get_iter_first()
600
- while iter:
602
+ lv_iter = model.get_iter_first()
603
+ while lv_iter:
601
604
  past_iter = None
602
- values = model[iter]
605
+ values = model[lv_iter]
603
606
  payload = values[TestList.Json]
604
607
  payload["comments"] = values[TestList.Comments]
605
608
  payload["defects"] = values[TestList.Defects]
606
609
 
607
- rc = ITkDButils.upload_test(self.session, payload, values[TestList.Attachments])
610
+ rc = ITkDButils.upload_test(self.session, payload, values[TestList.Attachments], check_runNumber=True)
608
611
  if rc:
609
612
  ipos = rc.find("The following details may help:")
610
613
  msg = rc[ipos:]
@@ -613,9 +616,9 @@ class UploadMultipleTests(dbGtkUtils.ITkDBWindow):
613
616
 
614
617
  else:
615
618
  self.write_message("Upload {}-{} successfull\n".format(payload["component"], payload["testType"]))
616
- past_iter = iter
619
+ past_iter = lv_iter
617
620
 
618
- iter = model.iter_next(iter)
621
+ lv_iter = model.iter_next(lv_iter)
619
622
  if past_iter:
620
623
  model.remove(past_iter)
621
624
 
@@ -16,7 +16,6 @@ try:
16
16
  import itkdb_gtk
17
17
 
18
18
  except ImportError:
19
- from pathlib import Path
20
19
  cwd = Path(__file__).parent.parent
21
20
  sys.path.append(cwd.as_posix())
22
21
 
@@ -124,11 +123,11 @@ class AVSPanel(dbGtkUtils.ITkDBWindow):
124
123
  grid.attach(Gtk.Label(label="Serial No."), 0, 0, 1, 1)
125
124
  grid.attach(self.SN, 1, 0, 1, 1)
126
125
  grid.attach(self.btn_state, 2, 0, 1, 1)
127
-
126
+
128
127
 
129
128
  grid.attach(Gtk.Label(label="Prod. Sheet"), 0, 1, 1, 1)
130
129
  grid.attach(self.btnPSF, 1, 1, 1, 1)
131
-
130
+
132
131
  btn = Gtk.Button(label="Reset")
133
132
  btn.connect("clicked", self.on_reset)
134
133
  grid.attach(btn, 2, 1, 1, 1)
@@ -209,7 +208,7 @@ class AVSPanel(dbGtkUtils.ITkDBWindow):
209
208
 
210
209
  btn = Gtk.Button(label="Upload Tests")
211
210
  btn.set_tooltip_text("Upload all tests")
212
-
211
+
213
212
  btn.connect("clicked", self.on_upload)
214
213
  btnBox.add(btn)
215
214
 
@@ -361,7 +360,7 @@ class AVSPanel(dbGtkUtils.ITkDBWindow):
361
360
 
362
361
  # Check if we need to assemble the module
363
362
  self.check_assembly(self.DESY_comp)
364
-
363
+
365
364
  self.check_components()
366
365
 
367
366
  def on_fat_set(self, *args):
@@ -394,7 +393,7 @@ class AVSPanel(dbGtkUtils.ITkDBWindow):
394
393
  self.update_scroll_window("delamination", j_del)
395
394
  self.update_scroll_window("grounding", j_gnd)
396
395
  self.update_scroll_window("metrology", j_mtr)
397
-
396
+
398
397
  self.check_tests(True)
399
398
 
400
399
  def read_avs_files(self, widgets):
@@ -473,7 +472,7 @@ class AVSPanel(dbGtkUtils.ITkDBWindow):
473
472
  def on_check_components(self, *args):
474
473
  """Button clicked."""
475
474
  self.check_components()
476
-
475
+
477
476
  def check_components(self):
478
477
  """Check that components are in DB."""
479
478
  for cmp, cmp_SN in self.DESY_comp.items():
@@ -558,7 +557,7 @@ class AVSPanel(dbGtkUtils.ITkDBWindow):
558
557
  if rc is None:
559
558
  print("Could not set final stage of {}".format(cSN))
560
559
 
561
- if len(error_txt):
560
+ if len(error_txt)>0:
562
561
  dbGtkUtils.complain("Assembly of {} could not be completeed:".format(this_petal),
563
562
  "\n".join(error_txt))
564
563
 
@@ -708,4 +707,4 @@ def main():
708
707
  sys.exit()
709
708
 
710
709
  if __name__ == "__main__":
711
- main()
710
+ main()