Skip to content

Commit 5ce5e4b

Browse files
author
Stephanie Reeder
committed
Merge pull request #268 from ODM2/fix_editing
Fix editing
2 parents 1612e80 + 19c2cbe commit 5ce5e4b

File tree

9 files changed

+107
-39
lines changed

9 files changed

+107
-39
lines changed

odmtools/controller/frmSeriesSelector.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,10 @@ def refreshTableSeries(self, db):
8484
8585
:return:
8686
"""
87+
88+
chcklist= self.tblSeries.GetCheckedObjects()
89+
90+
8791
self.memDB.set_series_service(db)
8892
object = self.series_service.get_all_series()
8993
#checkedObjs = self.tblSeries.GetCheckedObjects()
@@ -93,6 +97,10 @@ def refreshTableSeries(self, db):
9397
if x.id not in idList:
9498
self.tblSeries.AddObject(x)
9599

100+
101+
for c in chcklist:
102+
self.tblSeries.SetCheckState(c, True)
103+
96104
#for x in checkedObjs:
97105
# super(FastObjectListView, self.tblSeries).SetCheckState(x, True)
98106

@@ -101,10 +109,18 @@ def refreshSeries(self):
101109
102110
:return:
103111
"""
112+
chcklist= self.tblSeries.GetCheckedObjects()
104113
self.series_service = None
114+
105115
self.series_service = self.parent.Parent.createService()
106116
#self.refreshTableSeries(self.dbservice)
107117
self.resetDB(self.series_service)
118+
for c in chcklist:
119+
for val in self.tblSeries.GetObjects():
120+
if c == val:
121+
self.tblSeries.SetCheckState(val, True)
122+
break
123+
108124
logger.debug("Repopulate Series Selector")
109125

110126
def initSVBoxes(self):
@@ -558,9 +574,14 @@ def stopEdit(self):
558574
559575
:return:
560576
"""
577+
561578
self.isEditing = False
579+
chcklist= self.tblSeries.GetCheckedObjects()
580+
562581
self.tblSeries.RefreshObject(self.tblSeries.editingObject)
563-
self.tblSeries.editingObject = None
582+
for c in chcklist:
583+
self.tblSeries.SetCheckState(c, True)
584+
564585
self.memDB.stopEdit()
565586

566587
def isEditing(self):

odmtools/controller/logicPlotOptions.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -125,11 +125,20 @@ def getEditSeriesID(self):
125125
else:
126126
return None
127127

128+
129+
130+
131+
def updateEditSeries(self):
132+
#update values
133+
if self.editID in self._seriesInfos:
134+
# self._seriesInfos[self.editID].dataTable = self.memDB.getEditDataValuesforGraph()
135+
data =self.memDB.getEditDataValuesforGraph()
136+
self._seriesInfos[self.editID].dataTable = data
137+
128138
def setEditSeries(self, seriesID):
129139

130140
self.editID = int(seriesID)
131141
# self.memDB.initEditValues(self.editID)
132-
133142
if self.editID not in self._seriesInfos:
134143
self.update(self.editID, True)
135144
# self.getSeriesInfo(self.editID)
@@ -144,15 +153,6 @@ def setEditSeries(self, seriesID):
144153
self._seriesInfos[self.editID].plotcolor = self._seriesInfos[self.editID].color
145154
self._seriesInfos[self.editID].color = "Black"
146155

147-
148-
def updateEditSeries(self):
149-
#update values
150-
if self.editID in self._seriesInfos:
151-
# self._seriesInfos[self.editID].dataTable = self.memDB.getEditDataValuesforGraph()
152-
data =self.memDB.getEditDataValuesforGraph()
153-
self._seriesInfos[self.editID].dataTable = data
154-
155-
156156
def stopEditSeries(self):
157157
if self.editID in self._seriesInfos:
158158
data = self.memDB.getDataValuesforGraph(

odmtools/gui/frmODMTools.py

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ class frmODMToolsMain(wx.Frame):
3838

3939
def __init__(self, **kwargs):
4040
"""
41-
4241
"""
4342

4443
self.taskserver = kwargs.pop('taskServer')
@@ -438,12 +437,18 @@ def addEdit(self, event):
438437

439438
def stopEdit(self, event):
440439

441-
self.pnlSelector.stopEdit()
442-
self.dataTable.stopEdit()
443-
self.pnlPlot.stopEdit()
444-
Publisher.sendMessage("toggleEdit", checked=False)
445-
self.record_service = None
446-
self._ribbon.toggleEditButtons(False)
440+
val = wx.MessageBox( "Are you sure you want to stop editing",
441+
'Stop Editing?', wx.YES_NO | wx.ICON_QUESTION, parent=self)
442+
if val == 2: #_YES
443+
444+
self.pnlSelector.stopEdit()
445+
446+
self.dataTable.stopEdit()
447+
self.pnlPlot.stopEdit()
448+
Publisher.sendMessage("toggleEdit", checked=False)
449+
self.memDB.reset_edit()
450+
self.record_service = None
451+
self._ribbon.toggleEditButtons(False)
447452

448453

449454
def getRecordService(self):

odmtools/gui/mnuPlotToolbar.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,8 +149,11 @@ def stopEdit(self):
149149
self.xys = None
150150
self.editCurve = None
151151
self.lassoAction = None
152+
# untoggle select button
153+
self.ToggleTool(self.select_tool.Id, False)
152154
# disable select button
153155
self.select_tool.Enable(False)
156+
154157
self.zoom_to_data.Enable(False)
155158
self.Realize()
156159
#untoggle lasso button

odmtools/gui/plotTimeSeries.py

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,6 @@ def changePlotSelection(self, filtered_datetime):
176176
def lassoChangeSelection(self, filtered_datetime):
177177
self.parent.record_service.select_points(dataframe=filtered_datetime)
178178

179-
180179
def onShowLegend(self, isVisible):
181180
if isVisible:
182181
self.isShowLegendEnabled = True
@@ -304,10 +303,6 @@ def Plot(self, seriesPlotInfo):
304303
self.toolbar.update()
305304
self.toolbar.push_current()
306305

307-
#self._views.home()
308-
#self._positions.home()
309-
#self.set_history_buttons()
310-
311306
#clear plot
312307
def clear(self):
313308
"""
@@ -319,12 +314,7 @@ def clear(self):
319314
for key, ax in self.axislist.items():
320315
ax.clear()
321316
self.axislist = {}
322-
#self.canvas.draw()
323-
# self.stopEdit()
324-
#print "TimeSeries: ", dir(self.timeSeries), type(self.timeSeries)
325-
#plt.cla()
326-
#plt.clf()
327-
#self.timeSeries.plot([], [], picker=5)
317+
328318

329319

330320
def setUpYAxis(self):

odmtools/odmdata/series.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,22 @@ class Series(Base):
9696
def __repr__(self):
9797
return "<Series('%s', '%s', '%s', '%s')>" % (self.id, self.site_name, self.variable_code, self.variable_name)
9898

99+
def __eq__(self, other) :
100+
# return self.__dict__ == other.__dict__
101+
return [self.id, self.site_id, self.site_code, self.site_name, self.variable_id, self.variable_code,
102+
self.variable_name, self.speciation, self.variable_units_id, self.variable_units_name,
103+
self.sample_medium, self.value_type, self.time_support, self.time_units_id, self.time_units_name,
104+
self.data_type, self.general_category, self.method_id, self.method_description,
105+
self.source_id, self.source_description, self.organization, self.citation,
106+
self.quality_control_level_id, self.quality_control_level_code, self.begin_date_time,
107+
self.end_date_time, self.begin_date_time_utc, self.end_date_time_utc, self.value_count] ==\
108+
[other.id, other.site_id, other.site_code, other.site_name, other.variable_id, other.variable_code,
109+
other.variable_name, other.speciation, other.variable_units_id, other.variable_units_name,
110+
other.sample_medium, other.value_type, other.time_support, other.time_units_id, other.time_units_name,
111+
other.data_type, other.general_category, other.method_id, other.method_description,
112+
other.source_id, other.source_description, other.organization, other.citation,
113+
other.quality_control_level_id, other.quality_control_level_code, other.begin_date_time,
114+
other.end_date_time, other.begin_date_time_utc, other.end_date_time_utc, other.value_count]
99115

100116
def get_table_columns(self):
101117
return self.__table__.columns.keys()

odmtools/odmservices/service_manager.py

Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ def __init__(self, debug=False):
2626
f = self._get_file('r')
2727
self._conn_dicts = []
2828
self.version = 0
29-
self._connection_format = "%s+%s://%s:%s@%s/%s"
29+
3030

3131
# Read all lines (connections) in the connection.cfg file
3232
while True:
@@ -185,30 +185,62 @@ def _get_file(self, mode):
185185

186186
return config_file
187187

188+
# def _build_connection_string(self, conn_dict):
189+
# driver = ""
190+
# connformat= self._connection_format
191+
# if conn_dict['engine'] == 'mssql' and sys.platform != 'win32':
192+
# driver = "pyodbc"
193+
# quoted = urllib.quote_plus('DRIVER={FreeTDS};DSN=%s;UID=%s;PWD=%s;' % (conn_dict['address'], conn_dict['user'], conn_dict['password']))
194+
# conn_string = 'mssql+pyodbc:///?odbc_connect={}'.format(quoted)
195+
#
196+
# else:
197+
# if conn_dict['engine'] == 'mssql':
198+
# driver = "pyodbc"
199+
# connformat=self._connection_format = "%s+%s://%s:%s@%s/%s?driver=SQL+Server+Native+Client+10.0"
200+
# elif conn_dict['engine'] == 'mysql':
201+
# driver = "pymysql"
202+
# elif conn_dict['engine'] == 'postgresql':
203+
# driver = "psycopg2"
204+
# else:
205+
# driver = "None"
206+
#
207+
# conn_string = connformat % (
208+
# conn_dict['engine'], driver, conn_dict['user'], conn_dict['password'], conn_dict['address'],
209+
# conn_dict['db'])
210+
# return conn_string
188211
def _build_connection_string(self, conn_dict):
189-
driver = ""
190-
connformat= self._connection_format
212+
# driver = ""
213+
# print "****", conn_dict
214+
191215
if conn_dict['engine'] == 'mssql' and sys.platform != 'win32':
192216
driver = "pyodbc"
217+
#'DRIVER={FreeTDS};DSN=%s;UID=%s;PWD=%s;' % (conn_dict['address'], conn_dict['user'], conn_dict['password'])
193218
quoted = urllib.quote_plus('DRIVER={FreeTDS};DSN=%s;UID=%s;PWD=%s;' % (conn_dict['address'], conn_dict['user'], conn_dict['password']))
194219
conn_string = 'mssql+pyodbc:///?odbc_connect={}'.format(quoted)
195-
196220
else:
221+
self._connection_format = "%s+%s://%s:%s@%s/%s"
197222
if conn_dict['engine'] == 'mssql':
198223
driver = "pyodbc"
199-
connformat=self._connection_format = "%s+%s://%s:%s@%s/%s?driver=SQL+Server+Native+Client+10.0"
224+
#self._connection_format = "%s+%s://%s:%s@%s/%s?driver=SQL+Server+Native+Client+10.0"
225+
conn = "%s+%s://%s:%s@%s/%s?driver=SQL+Server"
226+
if "sqlncli11.dll" in os.listdir("C:\\Windows\\System32"):
227+
conn = "%s+%s://%s:%s@%s/%s?driver=SQL+Server+Native+Client+11.0"
228+
self._connection_format = conn
200229
elif conn_dict['engine'] == 'mysql':
201230
driver = "pymysql"
202231
elif conn_dict['engine'] == 'postgresql':
203232
driver = "psycopg2"
204233
else:
205234
driver = "None"
206235

207-
conn_string = connformat % (
236+
conn_string = self._connection_format % (
208237
conn_dict['engine'], driver, conn_dict['user'], conn_dict['password'], conn_dict['address'],
209238
conn_dict['db'])
239+
240+
# print "******", conn_string
210241
return conn_string
211242

243+
212244
def _save_connections(self):
213245
f = self._get_file('w')
214246
for conn in self._conn_dicts:

requirements.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
__author__ = 'stephanie'
1+
22
pyodbc
33
pymysql
44
numpy
@@ -8,4 +8,5 @@ sqlalchemy
88
matplotlib
99
pandas
1010
geoalchemy2
11-
wxpython
11+
#wxpython
12+

setup/version.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,10 @@ VSVersionInfo(
3131
u'040904b0',
3232
[StringStruct(u'CompanyName', u'Utah Water Research Laboratory'),
3333
StringStruct(u'ProductName', u'ODMTools'),
34-
StringStruct(u'ProductVersion', u'1.2.2 beta'),
34+
StringStruct(u'ProductVersion', u'1.2.3 beta'),
3535
StringStruct(u'InternalName', u'ODMTools'),
3636
StringStruct(u'OriginalFilename', u'ODMTools.exe'),
37-
StringStruct(u'FileVersion', u'1.2.2 beta'),
37+
StringStruct(u'FileVersion', u'1.2.3 beta'),
3838
StringStruct(u'FileDescription', u'ODMTools is a python application for managing observational data using the Observations Data Model. ODMTools allows you to query, visualize, and edit data stored in an Observations Data Model (ODM) database.ODMTools was originally developed as part of the CUAHSI Hydrologic Information System.'),
3939
StringStruct(u'LegalCopyright', u'Copyright (c) 2013, Utah State University. All rights reserved.'),
4040
StringStruct(u'LegalTrademarks', u'N/A'),])

0 commit comments

Comments
 (0)