Skip to content

Commit a0de921

Browse files
author
stephanie
committed
merging
2 parents 61150f7 + cabe1ad commit a0de921

File tree

8 files changed

+184
-23
lines changed

8 files changed

+184
-23
lines changed

odmtools/common/icons/icons4addpoint.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,4 +240,3 @@
240240
"fyFkZ8W5EwnwX4WlCUrEwmMFZkmMQPAcCJtVkoD4EMZKSAS83/OIZpUkIGkyMR0zSkDa4aQd"
241241
"M1ogpsNJJKIFttbvuQ/ulVA1tikCBXDWEsImM5JQa894HkhCT0SFKtQK4I8S8HPlTrhEwEhE"
242242
"JgM+pRN1vhJAqemmBC4LChiWfQsq9brIX7OZ6v/BfANr87/zITFiXQAAAABJRU5ErkJggg==")
243-

odmtools/common/icons/img2py.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
from wx.tools import img2py
1111

12-
output = 'icons4addpoint.py'
12+
output = 'test_icons.py'
1313

1414
# get the list of BMP files
1515
#files = [f for f in os.listdir('.') if re.search(r'odm\d*x\d*\.png', f)]

odmtools/common/icons/plotToolbar.py

Lines changed: 75 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@
124124
"CsZqSyMGTTeLOYWm1zaUxPzXpURydi7x7fvSwtupGScWi13keX6xIsHszPP3bkmgmZX1RPJz"
125125
"KpFaSCefPpvcxjH6D2k3O6c42VTiAAAAAElFTkSuQmCC")
126126

127+
127128
#----------------------------------------------------------------------
128129
zoom_to_rect = PyEmbeddedImage(
129130
"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGOfPtRkwAAACBj"
@@ -176,17 +177,80 @@
176177
"t7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxSfNTws+7PbaOWo6fH"
177178
"XMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+tfa5zvMf"
178179
"fnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/"
179-
"6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAALEgAACxIB0t1+/AAAABp0RVh0U29m"
180-
"dHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAAB3ElEQVQ4T5WTbU/aUBTH+VjEfQPdZxDZ"
181-
"+/p68GZB4hIVNAV1T7plU5z4EETdEqYmGoeOvRgzQZ2FTJfJ1irIQ4XWIvx3z00g1qqZJ/kn"
182-
"t/9z7u+etvfYcCUMw8Dq+gZejr3mWmNr8u4KWzP5eWsbnn4fPiW+InWc5Yptf+HeJsvdFhyw"
183-
"Gd/C2PswJFnBr3wefwpFpJUT/kx6FZrmNTeFTdM09PoGcXiaQ8/TfkyEwiaRRznvgB9Uez1s"
184-
"sZVVxJPf8bdYgl98jtSPnyaRd3xWQPxbErGVNSsgEByBzDYXKhUEn43j6LdsEnlKqcwOKCIw"
185-
"PGoFiIFh5NRzlFh7L8bfIndWMom8/HkFp2UVIjvM8gpLHz5iZ28fZU3Hm3dT0C8Mk8ijXDK1"
186-
"i2VWawHIsgzfkAjNqN36ESnX5xsC1VoAtVoNkYUoItFFXNbrN2o+EoXD+QhiIIhGo2Fi8Hug"
187-
"qipm5+bhZ51IUhp1VlRnsIMDCf5BET3eXrS1PYDL5WJymyCtm1itVtlmCZOhKTzxeLloTZ6i"
188-
"KHB0OWG32+F2u/H4CqQFoE6oPV3XQTASrckjZbNZdDq6LBAT4K6huQ4RBAHT4Rn8N6DZIXUi"
189-
"CN1o73iIBBu8ewGaEPqdmUyGz8Y/d/qJcLWhfigAAAAASUVORK5CYII=")
180+
"6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAALEQAACxEBf2RfkQAAABp0RVh0U29m"
181+
"dHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAABpUlEQVQ4T52Q20oCURSGeyyxN6ieIbP7"
182+
"6Tq9CZWCTJPRzmnRQSsqzE5gKhSmVhdZYKcJOpDVWJqHEsvSv70HLMeZCrr4Nmuv9a9vD1MH"
183+
"QIR/cwsj9jGBAKlr57V8FdvhCHRGEzZ29xCL3wp4IztCL0hmlVwtwhEMhWGfmQPHJ3CdSuEu"
184+
"ncF54kG4U0ads6CZ6sUKwtFp6sXlYxL6LiOmnHMiaI/ODD1mEpUReH1+hKIHuM9kYWaHEDu9"
185+
"EEF78ac0QvtReH0BslMjsNr6wZPldD4P26ADVze8CNpLZHPkgQysfQNSAWvtQ/L5BdlCAcOO"
186+
"CSSfsiJoL/WSx2PuGSx5TCJYWVvH4fEJcoVXjE+68PpWFEF7dBaNHWGVZCUCnudhsrAoFN9/"
187+
"/Il01m2ySJYpwuFe8sDtWcZHqSTLotsDlboVrNVG4jICyvzCIszkSzjuHKVyGSWyeHbGwdzL"
188+
"Qm/ohFJZD41GQ9CSuIyAwnEcpp0udOgMArSuzFQtaigUCmi1WrRXSUSCv2hWtUgkssHfqEgY"
189+
"hiHXfwgoDNOGhsYmUv5T8A3qPgH1xhJNvEHJKAAAAABJRU5ErkJggg==")
190+
191+
192+
# PyEmbeddedImage(
193+
# "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGOfPtRkwAAACBj"
194+
# "SFJNAACHDwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3No"
195+
# "b3AgSUNDIHByb2ZpbGUAAEjHnZZ3VFTXFofPvXd6oc0wAlKG3rvAANJ7k15FYZgZYCgDDjM0"
196+
# "sSGiAhFFRJoiSFDEgNFQJFZEsRAUVLAHJAgoMRhFVCxvRtaLrqy89/Ly++Osb+2z97n77L3P"
197+
# "WhcAkqcvl5cGSwGQyhPwgzyc6RGRUXTsAIABHmCAKQBMVka6X7B7CBDJy82FniFyAl8EAfB6"
198+
# "WLwCcNPQM4BOB/+fpFnpfIHomAARm7M5GSwRF4g4JUuQLrbPipgalyxmGCVmvihBEcuJOWGR"
199+
# "DT77LLKjmNmpPLaIxTmns1PZYu4V8bZMIUfEiK+ICzO5nCwR3xKxRoowlSviN+LYVA4zAwAU"
200+
# "SWwXcFiJIjYRMYkfEuQi4uUA4EgJX3HcVyzgZAvEl3JJS8/hcxMSBXQdli7d1NqaQffkZKVw"
201+
# "BALDACYrmcln013SUtOZvBwAFu/8WTLi2tJFRbY0tba0NDQzMv2qUP91829K3NtFehn4uWcQ"
202+
# "rf+L7a/80hoAYMyJarPziy2uCoDOLQDI3fti0zgAgKSobx3Xv7oPTTwviQJBuo2xcVZWlhGX"
203+
# "wzISF/QP/U+Hv6GvvmckPu6P8tBdOfFMYYqALq4bKy0lTcinZ6QzWRy64Z+H+B8H/nUeBkGc"
204+
# "eA6fwxNFhImmjMtLELWbx+YKuGk8Opf3n5r4D8P+pMW5FonS+BFQY4yA1HUqQH7tBygKESDR"
205+
# "+8Vd/6NvvvgwIH554SqTi3P/7zf9Z8Gl4iWDm/A5ziUohM4S8jMX98TPEqABAUgCKpAHykAd"
206+
# "6ABDYAasgC1wBG7AG/iDEBAJVgMWSASpgA+yQB7YBApBMdgJ9oBqUAcaQTNoBcdBJzgFzoNL"
207+
# "4Bq4AW6D+2AUTIBnYBa8BgsQBGEhMkSB5CEVSBPSh8wgBmQPuUG+UBAUCcVCCRAPEkJ50Gao"
208+
# "GCqDqqF6qBn6HjoJnYeuQIPQXWgMmoZ+h97BCEyCqbASrAUbwwzYCfaBQ+BVcAK8Bs6FC+Ad"
209+
# "cCXcAB+FO+Dz8DX4NjwKP4PnEIAQERqiihgiDMQF8UeikHiEj6xHipAKpAFpRbqRPuQmMorM"
210+
# "IG9RGBQFRUcZomxRnqhQFAu1BrUeVYKqRh1GdaB6UTdRY6hZ1Ec0Ga2I1kfboL3QEegEdBa6"
211+
# "EF2BbkK3oy+ib6Mn0K8xGAwNo42xwnhiIjFJmLWYEsw+TBvmHGYQM46Zw2Kx8lh9rB3WH8vE"
212+
# "CrCF2CrsUexZ7BB2AvsGR8Sp4Mxw7rgoHA+Xj6vAHcGdwQ3hJnELeCm8Jt4G749n43PwpfhG"
213+
# "fDf+On4Cv0CQJmgT7AghhCTCJkIloZVwkfCA8JJIJKoRrYmBRC5xI7GSeIx4mThGfEuSIemR"
214+
# "XEjRJCFpB+kQ6RzpLuklmUzWIjuSo8gC8g5yM/kC+RH5jQRFwkjCS4ItsUGiRqJDYkjiuSRe"
215+
# "UlPSSXK1ZK5kheQJyeuSM1J4KS0pFymm1HqpGqmTUiNSc9IUaVNpf+lU6RLpI9JXpKdksDJa"
216+
# "Mm4ybJkCmYMyF2TGKQhFneJCYVE2UxopFykTVAxVm+pFTaIWU7+jDlBnZWVkl8mGyWbL1sie"
217+
# "lh2lITQtmhcthVZKO04bpr1borTEaQlnyfYlrUuGlszLLZVzlOPIFcm1yd2WeydPl3eTT5bf"
218+
# "Jd8p/1ABpaCnEKiQpbBf4aLCzFLqUtulrKVFS48vvacIK+opBimuVTyo2K84p6Ss5KGUrlSl"
219+
# "dEFpRpmm7KicpFyufEZ5WoWiYq/CVSlXOavylC5Ld6Kn0CvpvfRZVUVVT1Whar3qgOqCmrZa"
220+
# "qFq+WpvaQ3WCOkM9Xr1cvUd9VkNFw08jT6NF454mXpOhmai5V7NPc15LWytca6tWp9aUtpy2"
221+
# "l3audov2Ax2yjoPOGp0GnVu6GF2GbrLuPt0berCehV6iXo3edX1Y31Kfq79Pf9AAbWBtwDNo"
222+
# "MBgxJBk6GWYathiOGdGMfI3yjTqNnhtrGEcZ7zLuM/5oYmGSYtJoct9UxtTbNN+02/R3Mz0z"
223+
# "llmN2S1zsrm7+QbzLvMXy/SXcZbtX3bHgmLhZ7HVosfig6WVJd+y1XLaSsMq1qrWaoRBZQQw"
224+
# "ShiXrdHWztYbrE9Zv7WxtBHYHLf5zdbQNtn2iO3Ucu3lnOWNy8ft1OyYdvV2o/Z0+1j7A/aj"
225+
# "DqoOTIcGh8eO6o5sxybHSSddpySno07PnU2c+c7tzvMuNi7rXM65Iq4erkWuA24ybqFu1W6P"
226+
# "3NXcE9xb3Gc9LDzWepzzRHv6eO7yHPFS8mJ5NXvNelt5r/Pu9SH5BPtU+zz21fPl+3b7wX7e"
227+
# "frv9HqzQXMFb0ekP/L38d/s/DNAOWBPwYyAmMCCwJvBJkGlQXlBfMCU4JvhI8OsQ55DSkPuh"
228+
# "OqHC0J4wybDosOaw+XDX8LLw0QjjiHUR1yIVIrmRXVHYqLCopqi5lW4r96yciLaILoweXqW9"
229+
# "KnvVldUKq1NWn46RjGHGnIhFx4bHHol9z/RnNjDn4rziauNmWS6svaxnbEd2OXuaY8cp40zG"
230+
# "28WXxU8l2CXsTphOdEisSJzhunCruS+SPJPqkuaT/ZMPJX9KCU9pS8Wlxqae5Mnwknm9acpp"
231+
# "2WmD6frphemja2zW7Fkzy/fhN2VAGasyugRU0c9Uv1BHuEU4lmmfWZP5Jiss60S2dDYvuz9H"
232+
# "L2d7zmSue+63a1FrWWt78lTzNuWNrXNaV78eWh+3vmeD+oaCDRMbPTYe3kTYlLzpp3yT/LL8"
233+
# "V5vDN3cXKBVsLBjf4rGlpVCikF84stV2a9021DbutoHt5turtn8sYhddLTYprih+X8IqufqN"
234+
# "6TeV33zaEb9joNSydP9OzE7ezuFdDrsOl0mX5ZaN7/bb3VFOLy8qf7UnZs+VimUVdXsJe4V7"
235+
# "Ryt9K7uqNKp2Vr2vTqy+XeNc01arWLu9dn4fe9/Qfsf9rXVKdcV17w5wD9yp96jvaNBqqDiI"
236+
# "OZh58EljWGPft4xvm5sUmoqbPhziHRo9HHS4t9mqufmI4pHSFrhF2DJ9NProje9cv+tqNWyt"
237+
# "b6O1FR8Dx4THnn4f+/3wcZ/jPScYJ1p/0Pyhtp3SXtQBdeR0zHYmdo52RXYNnvQ+2dNt293+"
238+
# "o9GPh06pnqo5LXu69AzhTMGZT2dzz86dSz83cz7h/HhPTM/9CxEXbvUG9g5c9Ll4+ZL7pQt9"
239+
# "Tn1nL9tdPnXF5srJq4yrndcsr3X0W/S3/2TxU/uA5UDHdavrXTesb3QPLh88M+QwdP6m681L"
240+
# "t7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxSfNTws+7PbaOWo6fH"
241+
# "XMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+tfa5zvMf"
242+
# "fnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/"
243+
# "6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAALEgAACxIB0t1+/AAAABp0RVh0U29m"
244+
# "dHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAAB3ElEQVQ4T5WTbU/aUBTH+VjEfQPdZxDZ"
245+
# "+/p68GZB4hIVNAV1T7plU5z4EETdEqYmGoeOvRgzQZ2FTJfJ1irIQ4XWIvx3z00g1qqZJ/kn"
246+
# "t/9z7u+etvfYcCUMw8Dq+gZejr3mWmNr8u4KWzP5eWsbnn4fPiW+InWc5Yptf+HeJsvdFhyw"
247+
# "Gd/C2PswJFnBr3wefwpFpJUT/kx6FZrmNTeFTdM09PoGcXiaQ8/TfkyEwiaRRznvgB9Uez1s"
248+
# "sZVVxJPf8bdYgl98jtSPnyaRd3xWQPxbErGVNSsgEByBzDYXKhUEn43j6LdsEnlKqcwOKCIw"
249+
# "PGoFiIFh5NRzlFh7L8bfIndWMom8/HkFp2UVIjvM8gpLHz5iZ28fZU3Hm3dT0C8Mk8ijXDK1"
250+
# "i2VWawHIsgzfkAjNqN36ESnX5xsC1VoAtVoNkYUoItFFXNbrN2o+EoXD+QhiIIhGo2Fi8Hug"
251+
# "qipm5+bhZ51IUhp1VlRnsIMDCf5BET3eXrS1PYDL5WJymyCtm1itVtlmCZOhKTzxeLloTZ6i"
252+
# "KHB0OWG32+F2u/H4CqQFoE6oPV3XQTASrckjZbNZdDq6LBAT4K6huQ4RBAHT4Rn8N6DZIXUi"
253+
# "CN1o73iIBBu8ewGaEPqdmUyGz8Y/d/qJcLWhfigAAAAASUVORK5CYII=")
190254

191255
#----------------------------------------------------------------------
192256
scroll_left = PyEmbeddedImage(

odmtools/gui/mnuPlotToolbar.py

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ def __init__(self, plotCanvas, multPlots=False, allowselect=False):
149149

150150
self.msg = wx.StaticText(self, -1, "")
151151
self.AddControl(self.msg)
152-
152+
self.canvas.mpl_connect('scroll_event', self.on_scroll_zoom)
153153
self.Realize()
154154

155155
def editSeries(self, xys, edit):
@@ -344,3 +344,37 @@ def forward(self, event):
344344
def home(self, event):
345345
super(self.__class__, self).home(event)
346346
self.canvas.draw()
347+
348+
349+
350+
351+
def on_scroll_zoom(self, event):
352+
axes = self.canvas.figure.axes[0]
353+
base_scale = 1.2
354+
# get the current x and y limits
355+
cur_xlim = axes.get_xlim()
356+
cur_ylim = axes.get_ylim()
357+
cur_xrange = (cur_xlim[1] - cur_xlim[0])*.5
358+
cur_yrange = (cur_ylim[1] - cur_ylim[0])*.5
359+
xdata = event.xdata # get event x location
360+
ydata = event.ydata # get event y location
361+
if event.button == 'up':
362+
# deal with zoom in
363+
scale_factor = 1/base_scale
364+
elif event.button == 'down':
365+
# deal with zoom out
366+
scale_factor = base_scale
367+
else:
368+
# deal with something that should never happen
369+
scale_factor = 1
370+
print event.button
371+
# set new limits
372+
axes.set_xlim([xdata - cur_xrange*scale_factor,
373+
xdata + cur_xrange*scale_factor])
374+
axes.set_ylim([ydata - cur_yrange*scale_factor,
375+
ydata + cur_yrange*scale_factor])
376+
self.canvas.draw() # force re-draw
377+
378+
# fig = ax.get_figure() # get the figure of interest
379+
# attach the call back
380+

odmtools/gui/pageMethod.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ def _init_ctrls(self, prnt):
5454
self.lstMethods = wx.ListCtrl(id=wxID_PNLMETHODSLISTCTRL1,
5555
name='lstMethods', parent=self, pos=wx.Point(16, 48),
5656
size=wx.Size(392, 152), style=wx.LC_REPORT|wx.LC_SINGLE_SEL)
57+
self.lstMethods.Bind(wx.EVT_SET_FOCUS, self.OnLstMethodSetFocus)
5758

5859

5960
self.lstMethods.InsertColumn(0, 'Description')
@@ -62,7 +63,7 @@ def _init_ctrls(self, prnt):
6263
self.lstMethods.SetColumnWidth(0, 200)
6364
self.lstMethods.SetColumnWidth(1, 153)
6465
self.lstMethods.SetColumnWidth(2,0)
65-
self.lstMethods.Enable(False)
66+
# self.lstMethods.Enable(False)
6667

6768

6869

@@ -72,8 +73,11 @@ def __init__(self, parent, id, pos, size, style, name, sm, method):
7273
self.prev_val = method
7374
self._init_ctrls(parent)
7475

76+
def OnLstMethodSetFocus(self, event):
77+
self.rbSelect.SetValue(True)
78+
7579
def OnRbGenerateRadiobutton(self, event):
76-
self.lstMethods.Enable(False)
80+
# self.lstMethods.Enable(False)
7781
self.txtMethodDescrip.Enable(False)
7882

7983
event.Skip()

odmtools/gui/plotTimeSeries.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,9 @@ def drawEditPlot(self, oneSeries):
245245
curraxis.set_xlabel('Date')
246246

247247
convertedDates = matplotlib.dates.date2num(dates)
248+
249+
scale = 1.5
250+
f = zoom_factory(curraxis , base_scale = scale)
248251
self.xys = zip(convertedDates, oneSeries.dataTable['DataValue'])
249252
self.toolbar.editSeries(self.xys, self.editCurve)
250253
# self.pointPick = self.canvas.mpl_connect('pick_event', self._onPick)
@@ -662,3 +665,6 @@ def __call__(self, event):
662665
self.toolbar.msg.SetLabelText("X= %s, Y= %.4f (%s)" % (xValue, y, self.name))
663666
self.toolbar.msg.SetForegroundColour((66, 66, 66))
664667
#logger.debug('{n}: ({x}, {y:0.2f})'.format(n=self.name, x=xValue.strftime("%Y-%m-%d %H:%M:%S"), y=y))
668+
669+
670+

odmtools/gui/pnlScript.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ def runCommand(self, text):
165165
# get ahold of record service and turn it off do i need a publisher command?
166166

167167
self.parent.record_service.toggle_record(False)
168-
for line in text.split("\n"):
168+
for line in text.splitlines():#("\n"):
169169
self.console.shell.run(line)
170170
#self.console.shell.run("\n")
171171
self.parent.record_service.toggle_record(True)
@@ -174,8 +174,18 @@ def runCommand(self, text):
174174
def OnExecute(self, e):
175175
self.runCommand(self.control.GetText())
176176

177+
# l1 = len(self.control.GetText().split('\n'))
178+
# l2 = len(self.control.GetText().split('\r'))
179+
#
180+
# print("length by '\\n': %s \n length by '\\r': %s"%(l1,l2))
181+
# for l in self.control.GetText().split('\n'):
182+
# self.runCommand(l)
183+
184+
177185
def OnExecuteSelection(self, e):
178186
self.runCommand(self.control.GetSelectedTextRaw())
187+
# for l in self.control.GetSelectedTextRaw().split('\n'):
188+
# self.runCommand(l)
179189

180190
def OnExecuteLine(self, e):
181191
text = self.control.GetSelectedTextRaw()

odmtools/odmservices/service_manager.py

Lines changed: 50 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -186,25 +186,69 @@ def _get_file(self, mode):
186186
return config_file
187187

188188
def _build_connection_string(self, conn_dict):
189-
driver = ""
190-
connformat= self._connection_format
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
211+
# driver = ""
212+
# print "****", conn_dict
191213
if conn_dict['engine'] == 'mssql' and sys.platform != 'win32':
192214
driver = "pyodbc"
193-
quoted = urllib.quote_plus('DRIVER={FreeTDS};DSN=%s;UID=%s;PWD=%s;' % (conn_dict['address'], conn_dict['user'], conn_dict['password']))
215+
quoted = urllib.quote_plus('DRIVER={FreeTDS};DSN=%s;UID=%s;PWD=%s;' % (conn_dict['address'], conn_dict['user'],
216+
conn_dict['password']))
217+
# quoted = urllib.quote_plus('DRIVER={FreeTDS};DSN=%s;UID=%s;PWD=%s;DATABASE=%s' %
218+
# (conn_dict['address'], conn_dict['user'], conn_dict['password'],conn_dict['db'],
219+
# ))
194220
conn_string = 'mssql+pyodbc:///?odbc_connect={}'.format(quoted)
195-
196221
else:
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+
conn = "%s+%s://%s:%s@%s/%s?driver=SQL+Server"
225+
if "sqlncli11.dll" in os.listdir("C:\\Windows\\System32"):
226+
conn = "%s+%s://%s:%s@%s/%s?driver=SQL+Server+Native+Client+11.0"
227+
self._connection_format = conn
228+
conn_string = self._connection_format % (
229+
conn_dict['engine'], driver, conn_dict['user'], conn_dict['password'], conn_dict['address'],
230+
conn_dict['db'])
200231
elif conn_dict['engine'] == 'mysql':
201232
driver = "pymysql"
233+
conn_string = self.constringBuilder(conn_dict, driver)
202234
elif conn_dict['engine'] == 'postgresql':
203235
driver = "psycopg2"
236+
conn_string = self.constringBuilder(conn_dict, driver)
204237
else:
205238
driver = "None"
239+
conn_string = self.constringBuilder(conn_dict, driver)
240+
241+
242+
# print "******", conn_string
243+
return conn_string
206244

207-
conn_string = connformat % (
245+
def constringBuilder(self, conn_dict, driver):
246+
if conn_dict['password'] is None or not conn_dict['password']:
247+
conn_string = self._connection_format_nopassword % (
248+
conn_dict['engine'], driver, conn_dict['user'], conn_dict['address'],
249+
conn_dict['db'])
250+
else:
251+
conn_string = self._connection_format % (
208252
conn_dict['engine'], driver, conn_dict['user'], conn_dict['password'], conn_dict['address'],
209253
conn_dict['db'])
210254
return conn_string

0 commit comments

Comments
 (0)