Skip to content

Commit c482afb

Browse files
author
Francisco Arrieta
committed
Multiple bug fixes with the save wizard
Most of bugs are due to the update
1 parent e78bdb4 commit c482afb

8 files changed

Lines changed: 129 additions & 75 deletions

File tree

ODMTools.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ def OnInit(self):
5757
kwargs['taskServer'] = self.taskserver
5858
kwargs['memdb']= self.memdb
5959
self.frame = frmODMToolsMain(**kwargs)
60+
self.frame.CenterOnScreen()
6061
self.frame.Show(True)
6162
app= self.frame
6263
return True

odmtools/controller/NewFlagValuesController.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def append_items_to_annotation(self, annotations):
2727
return
2828

2929
for item in annotations:
30-
self.annotation_combo.Append(str(item.AnnotationID))
30+
self.annotation_combo.Append(str(item.AnnotationCode + ":" + item.AnnotationText))
3131

3232
def on_cancel(self, event):
3333
self.MakeModal(False)

odmtools/controller/WizardMethodController.py

Lines changed: 55 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,17 @@ def __init__(self, parent, series_service):
1414
self.SetSizer(main_sizer)
1515

1616
self.series_service = series_service
17-
table_columns = ["Descriptions", "Link", "ID"]
17+
table_columns = ["ID", "Descriptions", "Link", "Code", "Type"]
18+
self.cv_types = []
1819
self.method_view.existing_method_table.set_columns(table_columns)
19-
self.method_view.method_type_combo.AppendItems(["ABC"])
2020
self.on_auto_radio(None)
2121

2222
self.method_view.auto_method_radio.Bind(wx.EVT_RADIOBUTTON, self.on_auto_radio)
2323
self.method_view.existing_method_radio.Bind(wx.EVT_RADIOBUTTON, self.on_existing_method_radio)
2424
self.method_view.create_method_radio.Bind(wx.EVT_RADIOBUTTON, self.on_create_method_radio)
2525

2626
self.__fetch_data()
27+
self.method_view.method_type_combo.AppendItems(self.cv_types)
2728

2829
def on_auto_radio(self, event):
2930
self.method_view.existing_method_table.Enable(False)
@@ -53,28 +54,61 @@ def __fetch_data(self):
5354
data = []
5455
for meth in methods:
5556
data.append([
56-
meth.MethodDescription,
57-
meth.MethodLink,
58-
meth.MethodID
57+
meth.MethodID, meth.MethodDescription,
58+
meth.MethodLink, meth.MethodCode,
59+
meth.MethodTypeCV
5960
])
6061

62+
if meth.MethodTypeCV not in self.cv_types:
63+
self.cv_types.append(meth.MethodTypeCV)
64+
6165
self.method_view.existing_method_table.set_table_content(data=data)
6266

6367
def getMethod(self):
64-
m = Method()
6568
if self.method_view.auto_method_radio.GetValue():
66-
description = "Values derived from ODM Tools Python"
67-
m = self.series_service.get_method_by_code(description)
68-
if m is None:
69-
m = Method()
70-
m.description = description
71-
elif self.method_view.existing_method_radio.GetValue():
72-
index = self.method_view.existing_method_table.GetFirstSelected()
73-
desc = self.method_view.existing_method_table.GetItem(index, 0).GetText()
74-
75-
m = self.series_service.get_method_by_code(desc)
76-
elif self.method_view.create_method_radio.GetValue():
77-
m.description = self.method_view.description_text_ctrl.GetValue()
78-
79-
80-
return m
69+
return self.__auto_generate_a_method()
70+
71+
if self.method_view.existing_method_radio.GetValue():
72+
return self.__select_existing_method()
73+
74+
if self.method_view.create_method_radio.GetValue():
75+
return self.__create_new_method()
76+
77+
return None
78+
79+
def __auto_generate_a_method(self):
80+
code = "odmtools"
81+
method = self.series_service.get_method_by_code(method_code=code)
82+
if method is None:
83+
method = Method()
84+
method.MethodCode = code
85+
method.MethodDescription = "Values derived from ODM Tools Python"
86+
return method
87+
88+
def __select_existing_method(self):
89+
index = self.method_view.existing_method_table.GetFirstSelected()
90+
desc = self.method_view.existing_method_table.GetItem(index, 1).GetText()
91+
link = self.method_view.existing_method_table.GetItem(index, 2).GetText()
92+
code = self.method_view.existing_method_table.GetItem(index, 3).GetText()
93+
94+
method = self.series_service.get_method_by_code(method_code=code)
95+
method.MethodLink = link
96+
method.MethodDescription = desc
97+
return method
98+
99+
def __create_new_method(self):
100+
code = self.method_view.method_code_text_ctrl.GetValue()
101+
name = self.method_view.method_name_text_ctrl.GetValue()
102+
typeCV = self.method_view.method_type_combo.GetValue()
103+
# organization = self.method_view.organization_combo.GetValue()
104+
link = self.method_view.method_link_text_ctrl.GetValue()
105+
description = self.method_view.description_text_ctrl.GetValue()
106+
107+
method = Method()
108+
method.MethodCode = code
109+
method.MethodName = name
110+
method.MethodTypeCV = typeCV
111+
method.MethodLink = link
112+
method.MethodDescription = description
113+
114+
return method

odmtools/controller/WizardProcessLevelController.py

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import wx
22
from odmtools.view.WizardProcessLevelView import WizardProcessLevelView
33
from wx.wizard import WizardPageSimple
4-
# from odmtools.odmdata import QualityControlLevel
5-
from odm2api.ODM2.models import ProcessingLevels as QualityControlLevel
4+
from odm2api.ODM2.models import ProcessingLevels
65

76

87
class WizardProcessLevelController(WizardPageSimple):
@@ -53,16 +52,29 @@ def __fetch_data(self):
5352

5453
self.processing_level_view.existing_process_table.set_table_content(data=data)
5554

56-
def getQCL(self):
57-
q = QualityControlLevel()
55+
def get_processing_level(self):
5856
if self.processing_level_view.create_process_level_radio.GetValue():
59-
q.code = self.processing_level_view.level_code_text_ctrl.GetValue()
60-
q.definition = self.processing_level_view.definition_text_ctrl.GetValue()
61-
q.explanation = self.processing_level_view.explanation_text_ctrl.GetValue()
57+
return self.__select_existing_processing_level()
6258

63-
elif self.processing_level_view.existing_process_radio.GetValue():
64-
selected_row = self.processing_level_view.existing_process_table.get_selected_row()
65-
code = selected_row[0]
66-
q = self.service_manager.get_series_service().get_processing_level_by_code(proc_level_code=code)
59+
if self.processing_level_view.existing_process_radio.GetValue():
60+
return self.__select_existing_processing_level()
6761

68-
return q
62+
return None
63+
64+
def __select_existing_processing_level(self):
65+
selected_row = self.processing_level_view.existing_process_table.get_selected_row()
66+
code = selected_row[0]
67+
proc_level = self.service_manager.get_series_service().get_processing_level_by_code(codes=code)
68+
return proc_level
69+
70+
def __create_processing_level(self):
71+
code = self.processing_level_view.level_code_text_ctrl.GetValue()
72+
definition = self.processing_level_view.definition_text_ctrl.GetValue()
73+
explanation = self.processing_level_view.explanation_text_ctrl.GetValue()
74+
75+
proc = ProcessingLevels()
76+
proc.ProcessingLevelCode = code
77+
proc.Definition = definition
78+
proc.Explanation = explanation
79+
80+
return proc

odmtools/controller/WizardVariableController.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,7 @@ def get_variable(self):
8383
v = self.service_manager.get_series_service().get_variable_by_code(code)
8484

8585
elif self.variable_view.create_variable_radio.GetValue():
86-
# v = self.createdVar
87-
v = self.get_new_variable()
86+
return self.get_new_variable()
8887

8988
return v
9089

odmtools/gui/wizSave.py

Lines changed: 32 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -182,34 +182,34 @@ def __init__(self, parent, title, series_service):
182182

183183

184184
def fill_summary(self):
185-
Site, Variable, Method, Source, QCL = self.parent.get_metadata()
185+
sampling_feature, variable, method, source, processing_level = self.parent.get_metadata()
186186

187187
## self.panel.treeSummary.SetItemText(self.panel.treeSummary.qc, "Code: "+ str(QCL.code))
188188

189189

190-
self.panel.treeSummary.SetItemText(self.panel.treeSummary.sc, 'Code: ' + str(Site.code))
191-
self.panel.treeSummary.SetItemText(self.panel.treeSummary.sn, 'Name: ' + str(Site.name))
190+
self.panel.treeSummary.SetItemText(self.panel.treeSummary.sc, 'Code: ' + str(sampling_feature.SamplingFeatureCode))
191+
self.panel.treeSummary.SetItemText(self.panel.treeSummary.sn, 'Name: ' + str(sampling_feature.SamplingFeatureName))
192192

193-
self.panel.treeSummary.SetItemText(self.panel.treeSummary.vc, 'Code: ' + str(Variable.code))
194-
self.panel.treeSummary.SetItemText(self.panel.treeSummary.vn, 'Name: ' + str(Variable.name))
195-
self.panel.treeSummary.SetItemText(self.panel.treeSummary.vu, 'Units: ' + str(Variable.variable_unit.name))
196-
self.panel.treeSummary.SetItemText(self.panel.treeSummary.vsm, 'Sample Medium: ' + str(Variable.sample_medium))
197-
self.panel.treeSummary.SetItemText(self.panel.treeSummary.vvt, 'Value Type: ' + str(Variable.value_type))
198-
self.panel.treeSummary.SetItemText(self.panel.treeSummary.vts, 'Time Support: ' + str(Variable.time_support))
199-
self.panel.treeSummary.SetItemText(self.panel.treeSummary.vtu, 'Time Units: ' + str(Variable.time_unit.name))
200-
self.panel.treeSummary.SetItemText(self.panel.treeSummary.vdt, 'Data Type: ' + str(Variable.data_type))
193+
self.panel.treeSummary.SetItemText(self.panel.treeSummary.vc, 'Code: ' + str(variable.VariableCode))
194+
self.panel.treeSummary.SetItemText(self.panel.treeSummary.vn, 'Name: ' + str(variable.VariableNameCV))
195+
self.panel.treeSummary.SetItemText(self.panel.treeSummary.vu, 'Units: ' + str(variable.variable_unit.name))
196+
self.panel.treeSummary.SetItemText(self.panel.treeSummary.vsm, 'Sample Medium: ' + str(variable.sample_medium))
197+
self.panel.treeSummary.SetItemText(self.panel.treeSummary.vvt, 'Value Type: ' + str(variable.value_type))
198+
self.panel.treeSummary.SetItemText(self.panel.treeSummary.vts, 'Time Support: ' + str(variable.time_support))
199+
self.panel.treeSummary.SetItemText(self.panel.treeSummary.vtu, 'Time Units: ' + str(variable.time_unit.name))
200+
self.panel.treeSummary.SetItemText(self.panel.treeSummary.vdt, 'Data Type: ' + str(variable.data_type))
201201
self.panel.treeSummary.SetItemText(self.panel.treeSummary.vgc,
202-
'General Category: ' + str(Variable.general_category))
202+
'General Category: ' + str(variable.general_category))
203203

204-
self.panel.treeSummary.SetItemText(self.panel.treeSummary.md, 'Description: ' + str(Method.description))
204+
self.panel.treeSummary.SetItemText(self.panel.treeSummary.md, 'Description: ' + str(method.description))
205205

206-
self.panel.treeSummary.SetItemText(self.panel.treeSummary.soo, 'Organization: ' + str(Source.organization))
207-
self.panel.treeSummary.SetItemText(self.panel.treeSummary.sod, 'Description: ' + str(Source.description))
208-
self.panel.treeSummary.SetItemText(self.panel.treeSummary.soc, 'Citation: ' + str(Source.citation))
206+
self.panel.treeSummary.SetItemText(self.panel.treeSummary.soo, 'Organization: ' + str(source.organization))
207+
self.panel.treeSummary.SetItemText(self.panel.treeSummary.sod, 'Description: ' + str(source.description))
208+
self.panel.treeSummary.SetItemText(self.panel.treeSummary.soc, 'Citation: ' + str(source.citation))
209209

210-
self.panel.treeSummary.SetItemText(self.panel.treeSummary.qc, 'Code: ' + str(QCL.code))
211-
self.panel.treeSummary.SetItemText(self.panel.treeSummary.qd, 'Definition: ' + str(QCL.definition))
212-
self.panel.treeSummary.SetItemText(self.panel.treeSummary.qe, 'Explanation: ' + str(QCL.explanation))
210+
self.panel.treeSummary.SetItemText(self.panel.treeSummary.qc, 'Code: ' + str(processing_level.code))
211+
self.panel.treeSummary.SetItemText(self.panel.treeSummary.qd, 'Definition: ' + str(processing_level.definition))
212+
self.panel.treeSummary.SetItemText(self.panel.treeSummary.qe, 'Explanation: ' + str(processing_level.explanation))
213213

214214
self.panel.treeSummary.ExpandAll()
215215

@@ -235,25 +235,29 @@ def _init_ctrls(self, prnt):
235235
self.Bind(wx.wizard.EVT_WIZARD_FINISHED, self.on_wizard_finished)
236236

237237
def get_metadata(self):
238+
method = None
239+
variable = None
240+
processing_level = None
241+
source = None
238242

239243
if self.pgIntro.pnlIntroduction.rbSaveAs.GetValue():
240244
logger.debug("SaveAs")
241245
method = self.pgMethod.getMethod()
242-
qcl = self.pgQCL.getQCL()
246+
processing_level = self.pgQCL.get_processing_level()
243247
variable = self.pgVariable.get_variable()
244248
elif self.pgIntro.pnlIntroduction.rbSave.GetValue():
245249
logger.debug("Save")
246-
method = self.currSeries.method
247-
qcl = self.currSeries.quality_control_level
250+
method = self.currSeries.FeatureActionObj.ActionObj.MethodObj
251+
processing_level = self.currSeries.quality_control_level
248252
variable = self.currSeries.variable
249253
elif self.pgIntro.pnlIntroduction.rbSaveExisting.GetValue():
250254
logger.debug("Existing")
251-
method, qcl, variable = self.pgExisting.getSeries()
252-
site = self.currSeries.site
253-
source = self.currSeries.source
254-
logger.debug("site: %s, variable: %s, method: %s, source: %s, qcl: %s" % (
255-
str(site), str(variable), str(method), str(source), str(qcl)))
256-
return site, variable, method, source, qcl
255+
method, processing_level, variable = self.pgExisting.getSeries()
256+
site = self.currSeries.FeatureActionObj.SamplingFeatureObj
257+
# source = self.currSeries.source
258+
logger.debug("site: %s, variable: %s, method: %s, source: %s, processing_level: %s" % (
259+
str(site), str(variable), str(method), str(source), str(processing_level)))
260+
return site, variable, method, source, processing_level
257261

258262
def __init__(self, parent, service_manager, record_service):
259263
self._init_ctrls(parent)

odmtools/odmservices/series_service.py

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -300,25 +300,24 @@ def get_all_processing_levels(self):
300300
# Series.data_values).filter(Series.id == series_id, DataValue.qualifier_id != None).distinct().subquery()
301301
# return self._edit_session.query(Qualifier).join(subquery).distinct().all()
302302
#
303-
# #QCL methods
304-
def get_all_qcls(self):
305-
return self.read.getProcessingLevels();
303+
# Processing Level methods
304+
def get_all_processing_level_(self):
305+
return self.read.getProcessingLevels()
306306
# return self._edit_session.query(QualityControlLevel).all()
307-
#
308-
def get_qcl_by_id(self, qcl_id):
307+
308+
def get_processing_level_by_id(self, qcl_id):
309309
try:
310310
return self.read.getProcessingLevels(ids = [qcl_id])[0]
311311
#return self._edit_session.query(QualityControlLevel).filter_by(id=qcl_id).first()
312312
except:
313313
return None
314314
#
315-
def get_qcl_by_code(self, qcl_code):
315+
def get_processing_level_by_code(self, codes):
316316
try:
317-
return self.read.getProcessingLevels(codes=[qcl_code])[0]
318-
#return self._edit_session.query(QualityControlLevel).filter_by(code=qcl_code).first()
317+
return self.read.getProcessingLevels(codes=[codes])[0]
319318
except:
320319
return None
321-
#
320+
322321
# # Method methods
323322
def get_all_methods(self):
324323
#return self._edit_session.query(Method).all()
@@ -332,8 +331,12 @@ def get_method_by_id(self, method_id):
332331
# result = None
333332
# return result
334333
#
335-
def get_method_by_description(self, method_code):
336-
return self.read.getMethods(codes=[method_code])[0]
334+
def get_method_by_code(self, method_code):
335+
try:
336+
self.read.getMethods(codes=[method_code])[0]
337+
except:
338+
return None
339+
337340
# try:
338341
# result = self._edit_session.query(Method).filter_by(description=method_code).first()
339342
# except:

odmtools/view/NewFlagValuesView.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ def __init__(self, parent):
4141
self.ok_button = wx.Button(bottom_panel, label="OK")
4242
self.cancel_button = wx.Button(bottom_panel, label="CANCEL")
4343
static_line = wx.StaticLine(bottom_panel)
44+
self.cancel_button.SetDefault()
4445

4546
bottom_panel_sizer = wx.BoxSizer(wx.VERTICAL)
4647
button_sizer = wx.BoxSizer(wx.HORIZONTAL)

0 commit comments

Comments
 (0)