Skip to content

Commit dc164f1

Browse files
author
sreeder
committed
merging
2 parents 92104cb + ef4b09c commit dc164f1

15 files changed

Lines changed: 314 additions & 311 deletions

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: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,25 +9,25 @@ def __init__(self, parent, series_service, qualifier_choice, record_service):
99
self.series_service = series_service
1010
self.qualifer_choice = qualifier_choice
1111
self.record_service = record_service
12-
self.__new_annotation = "[New Annontation]"
12+
self.__new_annotation = "New Annontation"
1313

1414
annotations = self.series_service.get_all_annotations()
1515
self.append_items_to_annotation(annotations)
1616
self.annotation_combo.SetSelection(0)
17+
self.annotation_combo.Append(self.__new_annotation)
1718

1819
self.cancel_button.Bind(wx.EVT_BUTTON, self.on_cancel)
1920
self.Bind(wx.EVT_CLOSE, self.on_cancel)
2021
self.ok_button.Bind(wx.EVT_BUTTON, self.on_ok)
2122
self.MakeModal(True)
2223

2324
def append_items_to_annotation(self, annotations):
24-
self.annotation_combo.Append(self.__new_annotation)
2525
if not isinstance(annotations, list):
2626
print "type(annotations) must be list of 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)
@@ -41,6 +41,16 @@ def on_ok(self, event):
4141
text = self.text_textbox.GetValue()
4242

4343
annotation = self.series_service.create_annotation(code, text)
44-
self.record_service.flag(annotation.AnnotationID)
44+
else:
45+
code = selection.split(':')[0]
46+
annotation = self.series_service.get_annotation_by_code(code)
47+
self.record_service.flag(annotation.AnnotationID)
4548

4649
self.on_cancel(event)
50+
51+
if __name__ == '__main__':
52+
app = wx.App(False)
53+
controller = NewFlagValuesController(None, None, None, None)
54+
controller.Show()
55+
app.MainLoop()
56+

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: 34 additions & 30 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)
@@ -352,7 +356,7 @@ def on_wizard_finished(self, event):
352356
wx.YES_NO | wx.ICON_QUESTION)
353357
if val == 2:
354358
logger.info("User selected yes to save a level 0 dataset")
355-
val_2 = wx.MessageBox("This action cannot be undone.\nAre you sure you are sure?\n",
359+
val_2 = wx.MessageBox("This interactive_item cannot be undone.\nAre you sure you are sure?\n",
356360
'Are you REALLY sure?',
357361
wx.YES_NO | wx.ICON_QUESTION)
358362
if val_2 == 2:
@@ -364,7 +368,7 @@ def on_wizard_finished(self, event):
364368
if self.pgExisting.pnlExisting.rbAppend.GetValue():
365369
keyword = "append to"
366370

367-
message = "You are about to " + keyword + " an existing series_service,\nthis action cannot be undone.\nWould you like to continue?\n"
371+
message = "You are about to " + keyword + " an existing series_service,\nthis interactive_item cannot be undone.\nWould you like to continue?\n"
368372
cont = wx.MessageBox(message, 'Are you sure?', wx.YES_NO | wx.ICON_QUESTION)
369373
if cont == 2:
370374
closeSuccessful = True

odmtools/lib/ObjectListView/ListCtrlPrinter.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@
7676
particular, it configures the printing DC so that its origin and scale are correct. This
7777
enables the ``ReportEngine`` to simply render the report without knowing the
7878
characteristics of the underlying printer DPI, unprintable region, or the scale of a print
79-
preview. When The ``ListCtrlPrintout`` encounters some action that is cannot perform (like
79+
preview. When The ``ListCtrlPrintout`` encounters some interactive_item that is cannot perform (like
8080
actually rendering a page) it calls back into ``ListCtrlPrinter`` (which simply forwards
8181
to the ``ReportEngine``).
8282
@@ -1879,7 +1879,7 @@ def CalculateSlices(self, maxWidth, columnWidths):
18791879
"""
18801880
firstColumn = 0
18811881

1882-
# If a GroupListView has a column just for the expand/collapse, don't include it
1882+
# If a GroupListView has a column just for the is_expanded/collapse, don't include it
18831883
if hasattr(self.lv, "useExpansionColumn") and self.lv.useExpansionColumn:
18841884
firstColumn = 1
18851885

odmtools/lib/ObjectListView/OLVEvent.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -229,10 +229,10 @@ def __init__(self, objectListView, groups):
229229

230230
class ExpandCollapseEvent(VetoableEvent):
231231
"""
232-
The user wants to expand or collapse one or more groups, or has just done so.
232+
The user wants to is_expanded or collapse one or more groups, or has just done so.
233233
234234
If the handler calls Veto() for a Expanding or Collapsing event,
235-
the expand/collapse action will be cancelled.
235+
the is_expanded/collapse interactive_item will be cancelled.
236236
237237
Calling Veto() has no effect on a Expanded or Collapsed event
238238
"""

0 commit comments

Comments
 (0)