Skip to content

Commit f514911

Browse files
authored
Merge pull request #328 from ODM2/odm1_development
Odm1 development
2 parents b627a07 + 4c00326 commit f514911

20 files changed

+3218
-70
lines changed

doc/wxFormBuilder/frmCreateSource.fbp

Lines changed: 2548 additions & 0 deletions
Large diffs are not rendered by default.

odmtools/controller/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@
44
from odmtools.controller.logicPlotOptions import *
55
from odmtools.controller.odmHighlightSTC import highlightSTC
66
from odmtools.controller.olvSeriesSelector import clsSeriesTable
7-
7+
# from odmtools.controller.pageSource import pageSource
88

99

1010
__all__ = [
1111
'EditTools',
1212
'OneSeriesPlotInfo',
1313
'highlightSTC',
1414
'clsSeriesTable',
15-
'SeriesPlotInfo'
16-
15+
'SeriesPlotInfo',
16+
# 'pageSource'
1717
]
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
"""Subclass of clsSource, which is generated by wxFormBuilder."""
2+
3+
import wx
4+
from odmtools.view.clsCreateSource import clsSource
5+
from odmtools.odmdata import Source
6+
7+
8+
# Implementing clsSource
9+
class frmCreateSource(clsSource):
10+
def __init__(self, parent, service_man, prev_src):
11+
clsSource.__init__(self, parent)
12+
self.service_man = service_man
13+
self.prev = prev_src
14+
self.source = None
15+
self.series_service = self.service_man.get_series_service()
16+
self.populate_meta()
17+
18+
def populate_meta(self):
19+
self.meta_list = {}
20+
metas = self.series_service.get_iso_metadata()
21+
if metas is not None:
22+
self.meta_list = {(x.title, x.id) for x in metas}
23+
# {(key, value) for (key, value) in zip(key_list, value_list)}
24+
self.meta_list["None"] = 0
25+
self.chMeta.AppendItems(self.meta_list.keys())
26+
self.chMeta.SetSelection(0)
27+
28+
def getSource(self):
29+
return self.source
30+
31+
# Handlers for dlgCreateSource events.
32+
def onOkClick(self, event):
33+
self.source = self.createSource()
34+
35+
if self.all_fields_full():
36+
self.EndModal(wx.ID_OK)
37+
else:
38+
wx.MessageDialog(None, "All required source fields must be completed.", " ", wx.OK).ShowModal()
39+
40+
def all_fields_full(self):
41+
return (self.txtOrg.GetValue() != '') and \
42+
(self.txtDescrip.GetValue() != '') and \
43+
(self.txtName.GetValue() != '') and \
44+
(self.txtPhone.GetValue() != '') and \
45+
(self.txtEmail.GetValue() != '') and \
46+
(self.txtAddress.GetValue() != '') and \
47+
(self.txtCity.GetValue() != '') and \
48+
(self.txtState.GetValue() != '') and \
49+
(self.txtZip.GetValue() != '') and \
50+
(self.txtCitation.GetValue() != '')
51+
52+
def createSource(self):
53+
s = Source()
54+
55+
s.organization = self.txtOrg.GetValue() if self.txtOrg.GetValue() != u'' else None
56+
s.description = self.txtDescrip.GetValue() if self.txtDescrip.GetValue() != u'' else None
57+
s.link = self.txtLink.GetValue() if self.txtLink.GetValue() != u'' else None
58+
59+
s.contact_name = self.txtName.GetValue() if self.txtName.GetValue() != u'' else None
60+
s.phone = self.txtPhone.GetValue() if self.txtPhone.GetValue() != u'' else None
61+
s.email = self.txtEmail.GetValue() if self.txtEmail.GetValue() != u'' else None
62+
63+
s.address = self.txtAddress.GetValue() if self.txtAddress.GetValue() != u'' else None
64+
s.city = self.txtCity.GetValue() if self.txtCity.GetValue() != u'' else None
65+
s.state = self.txtState.GetValue() if self.txtState.GetValue() != u'' else None
66+
s.zip_code = self.txtZip.GetValue() if self.txtZip.GetValue() != u'' else None
67+
68+
s.citation = self.txtCitation.GetValue() if self.txtCitation.GetValue() != u'' else None
69+
s.iso_metadata_id = self.meta_list[self.chMeta.GetItems()[self.chMeta.GetSelection()]]
70+
# s.iso_metadata_id = 0
71+
return s
72+
73+
def onCancelClick(self, event):
74+
# TODO: Implement onCancelClick
75+
self.EndModal(wx.ID_CANCEL)

odmtools/controller/frmCreateVariable.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -65,16 +65,16 @@ def getVariable(self):
6565

6666
def all_fields_full(self):
6767
return (self.cbVarName.GetValue() is not None) and \
68-
(self.txtVarCode.GetValue() <> '') and \
68+
(self.txtVarCode.GetValue() != '') and \
6969
(self.cbVarUnits.GetValue() is not None)and \
7070
(self.cbTSUnits.GetValue() is not None) and \
7171
(self.cbSampleMedium.GetValue() is not None) and \
7272
(self.cbSpeciation.GetValue() is not None) and \
7373
(self.cbValueType.GetValue() is not None) and \
7474
(self.cbDataType.GetValue() is not None) and \
75-
(self.txtNoDV.GetValue() <> '') and \
75+
(self.txtNoDV.GetValue() != '') and \
7676
(self.cbGenCat.GetValue() is not None) and \
77-
(self.txtTSValue.GetValue() <> '')
77+
(self.txtTSValue.GetValue() != '')
7878

7979

8080
def OnBtnCreateButton(self, event):
@@ -89,24 +89,24 @@ def OnBtnCreateButton(self, event):
8989
def createVariable(self):
9090
v = Variable()
9191

92-
v.code = self.txtVarCode.GetValue() if self.txtVarCode.GetValue() <> u'' else None
93-
v.name = self.cbVarName.GetValue() if self.cbVarName.GetValue() <> u'' else None
94-
v.speciation = self.cbSpeciation.GetValue() if self.cbSpeciation.GetValue() <> u'' else None
92+
v.code = self.txtVarCode.GetValue() if self.txtVarCode.GetValue() != u'' else None
93+
v.name = self.cbVarName.GetValue() if self.cbVarName.GetValue() != u'' else None
94+
v.speciation = self.cbSpeciation.GetValue() if self.cbSpeciation.GetValue() != u'' else None
9595

9696
v.variable_unit = self.series_service.get_unit_by_name( self.cbVarUnits.GetValue())
9797
v.variable_unit_id = v.variable_unit.id
9898

99-
v.sample_medium = self.cbSampleMedium.GetValue() if self.cbSampleMedium.GetValue() <> u'' else None
100-
v.value_type = self.cbValueType.GetValue() if self.cbValueType.GetValue() <> u'' else None
101-
v.is_regular = self.cbIsRegular.GetValue() if self.cbIsRegular.GetValue() <> u'' else None
102-
v.time_support = self.txtTSValue.GetValue() if self.txtTSValue.GetValue() <> u'' else None
99+
v.sample_medium = self.cbSampleMedium.GetValue() if self.cbSampleMedium.GetValue() != u'' else None
100+
v.value_type = self.cbValueType.GetValue() if self.cbValueType.GetValue() != u'' else None
101+
v.is_regular = self.cbIsRegular.GetValue() if self.cbIsRegular.GetValue() != u'' else None
102+
v.time_support = self.txtTSValue.GetValue() if self.txtTSValue.GetValue() != u'' else None
103103

104104
v.time_unit = self.series_service.get_unit_by_name(self.cbTSUnits.GetValue())
105105
v.time_unit_id = v.time_unit.id
106106

107-
v.data_type = self.cbDataType.GetValue() if self.cbDataType.GetValue() <> u'' else None
108-
v.general_category = self.cbGenCat.GetValue() if self.cbGenCat.GetValue() <> u'' else None
109-
v.no_data_value = self.txtNoDV.GetValue() if self.txtNoDV.GetValue() <> u'' else None
107+
v.data_type = self.cbDataType.GetValue() if self.cbDataType.GetValue() != u'' else None
108+
v.general_category = self.cbGenCat.GetValue() if self.cbGenCat.GetValue() != u'' else None
109+
v.no_data_value = self.txtNoDV.GetValue() if self.txtNoDV.GetValue() != u'' else None
110110
return v
111111

112112
def OnBtnCancelButton(self, event):

odmtools/controller/frmDBConfig.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@ def OnBtnTest(self, event):
6868

6969

7070
def OnBtnSave(self, event):
71-
7271
self.parent.EndModal(wx.ID_OK)
7372

7473

odmtools/controller/logicEditTools.py

Lines changed: 30 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ def restore(self):
234234
self._script("edit_service.restore()\n", 'black')
235235
Publisher.sendMessage("scroll")
236236

237-
def saveFactory(self, var=None, method=None, qcl=None):
237+
def saveFactory(self, var=None, method=None, qcl=None, source = None):
238238
"""
239239
240240
:param var:
@@ -247,17 +247,15 @@ def saveFactory(self, var=None, method=None, qcl=None):
247247
values['var'] = ("new_variable" if var else None)
248248
values['method'] = ("new_method" if method else None)
249249
values['qcl'] = ("new_qcl" if qcl else None)
250+
values['source'] = ("new_source" if source else None)
250251
#values['override'] = override
251-
return values['var'], values['method'], values['qcl']#, values['isSave']
252+
return values['var'], values['method'], values['qcl'], values['source']#, values['isSave']
252253

253254

254-
def save(self, var=None, method=None, qcl=None):
255+
def save(self ):
255256
"""
256257
257-
:param var:
258-
:param method:
259-
:param qcl:
260-
:param override:
258+
261259
:return:
262260
"""
263261
result = self._edit_service.save()
@@ -269,25 +267,26 @@ def save(self, var=None, method=None, qcl=None):
269267
Publisher.sendMessage("scroll")
270268
return result
271269

272-
def save_as(self, var=None, method=None, qcl=None):
270+
def save_as(self, var=None, method=None, qcl=None, source = None):
273271
"""
274272
275273
:param var:
276274
:param method:
277275
:param qcl:
276+
:param source:
278277
:param override:
279278
:return:
280279
"""
281-
result = self._edit_service.save_as(var=var, method=method, qcl=qcl)
280+
result = self._edit_service.save_as(var=var, method=method, qcl=qcl, source = source)
282281
if self._record:
283282
self._script(
284-
"edit_service.save_as(%s, %s, %s)\n" % (self.saveFactory(var, method, qcl)),
283+
"edit_service.save_as(%s, %s, %s, %s)\n" % (self.saveFactory(var, method, qcl, source)),
285284
'black')
286285
#self._script("edit_service.save(%s, %s, %s, saveAs=%s)\n" % (var, method, qcl, isSave), 'black')
287286
Publisher.sendMessage("scroll")
288287
return result
289288

290-
def save_appending(self, var = None, method =None, qcl = None, overwrite = False):
289+
def save_appending(self, var = None, method =None, qcl = None, source = None, overwrite = False):
291290
"""
292291
293292
:param var:
@@ -296,14 +295,14 @@ def save_appending(self, var = None, method =None, qcl = None, overwrite = False
296295
:param override:
297296
:return:
298297
"""
299-
result = self._edit_service.save_appending(var=var, method=method, qcl=qcl, overwrite= overwrite)
298+
result = self._edit_service.save_appending(var=var, method=method, qcl=qcl, source = source, overwrite= overwrite)
300299
if result:
301300
print "Save worked!"
302301

303302
if self._record:
304303

305304
self._script(
306-
"edit_service.save_appending(%s, %s, %s, " % self.saveFactory(var, method, qcl)+str(overwrite )+")\n",
305+
"edit_service.save_appending(%s, %s, %s, %s " % self.saveFactory(var, method, qcl, source)+str(overwrite )+")\n",
307306
'black')
308307
#self._script("edit_service.save(%s, %s, %s, saveAs=%s)\n" % (var, method, qcl, isSave), 'black')
309308
Publisher.sendMessage("scroll")
@@ -314,7 +313,7 @@ def save_appending(self, var = None, method =None, qcl = None, overwrite = False
314313
return result
315314

316315

317-
def save_existing(self, var=None, method=None, qcl=None):
316+
def save_existing(self, var=None, method=None, qcl=None, source =None):
318317
"""
319318
320319
:param var:
@@ -323,14 +322,14 @@ def save_existing(self, var=None, method=None, qcl=None):
323322
:param override:
324323
:return:
325324
"""
326-
result = self._edit_service.save_existing(var=var, method=method, qcl=qcl)
325+
result = self._edit_service.save_existing(var=var, method=method, qcl=qcl, source = source)
327326
if result:
328327
print "Save worked!"
329328

330329
if self._record:
331330

332331
self._script(
333-
"edit_service.save_existing(%s, %s, %s)\n" % (self.saveFactory(var, method, qcl)),
332+
"edit_service.save_existing(%s, %s, %s, %s)\n" % (self.saveFactory(var, method, qcl, source)),
334333
'black')
335334
#self._script("edit_service.save(%s, %s, %s, saveAs=%s)\n" % (var, method, qcl, isSave), 'black')
336335
Publisher.sendMessage("scroll")
@@ -369,6 +368,13 @@ def get_qcl(self, q):
369368
Publisher.sendMessage("scroll")
370369

371370
return qcl
371+
def get_source(self, s):
372+
src = self._edit_service.get_source(s.id)
373+
if self._record:
374+
self._script('new_src = series_service.get_src_by_id(%s)\n' % (src.id))
375+
Publisher.sendMessage("scroll")
376+
377+
return src
372378

373379
def get_method(self, m):
374380
method = self._edit_service.get_method(m.id)
@@ -434,6 +440,14 @@ def create_variable(self, v):
434440

435441
return var
436442

443+
def create_source(self, src):
444+
src = self._edit_service.create_source(src)
445+
if self._record:
446+
self._script('new_variable = series_service.get_soource(%s)\n' % (src))
447+
Publisher.sendMessage("scroll")
448+
449+
return src
450+
437451
def write_header(self):
438452
self._script("#Uncomment the following commands when running outside ODMTools\n", 'black')
439453
self._script("#from odmtools.odmservices import EditService, SeriesService\n", 'black')

odmtools/controller/logicPlotOptions.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -483,7 +483,9 @@ def calculateIntervalsOnGroups(self, interval):
483483
data_median = np.median(datavalue)
484484
data_std = math.sqrt(np.var(datavalue))
485485
data_sqrt = math.sqrt(len(interval))
486-
data_deviation = data_std / data_sqrt
486+
if data_sqrt != 0:
487+
data_deviation = data_std / data_sqrt
488+
else: data_deviation = 1
487489

488490
ci = stats.norm.interval(.95, data_mean, scale=10*data_deviation)
489491
cl = stats.norm.interval(.95, data_median, scale=data_deviation)

odmtools/controller/pageExisting.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ def enableButtons(self, isEnabled):
6767

6868
def getSeries(self):
6969
selectedObject = self.pnlExisting.olvSeriesList.GetSelectedObject()
70-
return selectedObject.method, selectedObject.quality_control_level, selectedObject.variable
70+
return selectedObject.method, selectedObject.quality_control_level, selectedObject.variable, selectedObject.source
7171

7272
def initTable(self, dbservice, site_id):
7373
"""Set up columns and objects to be used in the objectlistview to be visible in the series selector"""

0 commit comments

Comments
 (0)