Skip to content

Commit 00aa734

Browse files
author
stephanie
committed
fix qualifier issue:
1 parent 9ca6813 commit 00aa734

File tree

6 files changed

+54
-87
lines changed

6 files changed

+54
-87
lines changed

odmtools/controller/frmAddPoints.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,9 @@ def parseTable(self):
239239
if i.offSetType != "NULL":
240240
row[6] = i.offSetType
241241
if i.qualifierCode != "NULL":
242-
row[8] = i.qualifierCode
242+
code = i.qualifierCode.split(':')[0]
243+
q=self.recordService._edit_service.memDB.series_service.get_qualifier_by_code(code=code)
244+
row[8] = q.id
243245
if i.labSampleCode != "NULL":
244246
row[9] = i.labSampleCode
245247

odmtools/controller/logicCellEdit.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ def __init__(self, parent, serviceManager, recordService):
3434
self.censorCodeChoices = [NULL] + [x.term for x in self.cv_service.get_censor_code_cvs()]
3535
self.labSampleChoices = [NULL] + labChoices.keys()
3636

37-
self.qualifierChoices = OrderedDict((x.code + '-' + x.description, x.id)
37+
self.qualifierChoices = OrderedDict((x.code + ':' + x.description, x.id)
3838
for x in self.series_service.get_all_qualifiers() if x.code and x.description)
3939
self.qualifierCodeChoices = [NULL] + self.qualifierChoices.keys() + [NEW]
4040

@@ -375,7 +375,7 @@ def cbHandler(event):
375375
#dlg.Destroy()
376376

377377
try:
378-
self.qualifierChoices = OrderedDict((x.code + '-' + x.description, x.id)
378+
self.qualifierChoices = OrderedDict((x.code + ':' + x.description, x.id)
379379
for x in self.cv_service.get_all_qualifiers() if x.code and x.description)
380380
self.qualifierCodeChoices = [NULL] + self.qualifierChoices.keys() + [NEW]
381381
except:

odmtools/odmservices/cv_service.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,6 @@ def get_samples(self):
3636
result = self._edit_session.query(Sample).order_by(Sample.lab_sample_code).all()
3737
return result
3838

39-
40-
4139
def get_site_type_cvs(self):
4240
result = self._edit_session.query(SiteTypeCV).order_by(SiteTypeCV.term).all()
4341
return result

odmtools/odmservices/series_service.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,14 @@ def get_all_qualifiers(self):
191191
result = self._edit_session.query(Qualifier).order_by(Qualifier.code).all()
192192
return result
193193

194+
def get_qualifier_by_code(self, code):
195+
"""
196+
197+
:return: Qualifiers
198+
"""
199+
result = self._edit_session.query(Qualifier).filter(Qualifier.code==code).first()
200+
return result
201+
194202
def get_qualifiers_by_series_id(self, series_id):
195203
"""
196204

odmtools/odmservices/service_manager.py

Lines changed: 30 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -21,31 +21,34 @@
2121

2222

2323
class ServiceManager():
24-
def __init__(self, debug=False):
24+
def __init__(self, debug=False, conn_dict = None):
2525
self.debug = debug
2626
f = self._get_file('r')
2727
self._conn_dicts = []
2828
self.version = 0
2929
self._connection_format = "%s+%s://%s:%s@%s/%s"
3030

3131
# Read all lines (connections) in the connection.cfg file
32-
while True:
33-
line = f.readline()
34-
if not line:
35-
break
36-
else:
37-
line = line.split()
38-
#logger.debug(line)
39-
40-
if len(line) >= 5:
41-
line_dict = {}
42-
43-
line_dict['engine'] = line[0]
44-
line_dict['user'] = line[1]
45-
line_dict['password'] = line[2]
46-
line_dict['address'] = line[3]
47-
line_dict['db'] = line[4]
48-
self._conn_dicts.append(line_dict)
32+
if conn_dict is None:
33+
while True:
34+
line = f.readline()
35+
if not line:
36+
break
37+
else:
38+
line = line.split()
39+
#logger.debug(line)
40+
41+
if len(line) >= 5:
42+
line_dict = {}
43+
44+
line_dict['engine'] = line[0]
45+
line_dict['user'] = line[1]
46+
line_dict['password'] = line[2]
47+
line_dict['address'] = line[3]
48+
line_dict['db'] = line[4]
49+
self._conn_dicts.append(line_dict)
50+
else:
51+
self._conn_dicts.append(conn_dict)
4952

5053
if len(self._conn_dicts) is not 0:
5154
# The current connection defaults to the most recent (i.e. the last written to the file)
@@ -152,7 +155,7 @@ def get_cv_service(self):
152155
return CVService(conn_string, self.debug)
153156

154157
def get_edit_service(self, series_id, connection):
155-
158+
156159
return EditService(series_id, connection=connection, debug=self.debug)
157160

158161
def get_record_service(self, script, series_id, connection):
@@ -186,81 +189,27 @@ def _get_file(self, mode):
186189
return config_file
187190

188191
def _build_connection_string(self, conn_dict):
189-
<<<<<<< Updated upstream
190-
# driver = ""
191-
# connformat= self._connection_format
192-
# if conn_dict['engine'] == 'mssql' and sys.platform != 'win32':
193-
# driver = "pyodbc"
194-
# quoted = urllib.quote_plus('DRIVER={FreeTDS};DSN=%s;UID=%s;PWD=%s;' % (conn_dict['address'], conn_dict['user'], conn_dict['password']))
195-
# conn_string = 'mssql+pyodbc:///?odbc_connect={}'.format(quoted)
196-
#
197-
# else:
198-
# if conn_dict['engine'] == 'mssql':
199-
# driver = "pyodbc"
200-
# connformat=self._connection_format = "%s+%s://%s:%s@%s/%s?driver=SQL+Server+Native+Client+10.0"
201-
# elif conn_dict['engine'] == 'mysql':
202-
# driver = "pymysql"
203-
# elif conn_dict['engine'] == 'postgresql':
204-
# driver = "psycopg2"
205-
# else:
206-
# driver = "None"
207-
#
208-
# conn_string = connformat % (
209-
# conn_dict['engine'], driver, conn_dict['user'], conn_dict['password'], conn_dict['address'],
210-
# conn_dict['db'])
211-
# return conn_string
212-
# driver = ""
213-
# print "****", conn_dict
214-
=======
215-
self._connection_format = "%s+%s://%s:%s@%s/%s"
216-
>>>>>>> Stashed changes
192+
driver = ""
193+
connformat= self._connection_format
217194
if conn_dict['engine'] == 'mssql' and sys.platform != 'win32':
218195
driver = "pyodbc"
219-
quoted = urllib.quote_plus('DRIVER={FreeTDS};DSN=%s;UID=%s;PWD=%s;' % (conn_dict['address'], conn_dict['user'],
220-
conn_dict['password']))
221-
# quoted = urllib.quote_plus('DRIVER={FreeTDS};DSN=%s;UID=%s;PWD=%s;DATABASE=%s' %
222-
# (conn_dict['address'], conn_dict['user'], conn_dict['password'],conn_dict['db'],
223-
# ))
196+
quoted = urllib.quote_plus('DRIVER={FreeTDS};DSN=%s;UID=%s;PWD=%s;' % (conn_dict['address'], conn_dict['user'], conn_dict['password']))
224197
conn_string = 'mssql+pyodbc:///?odbc_connect={}'.format(quoted)
198+
elif conn_dict['engine']=='sqlite':
199+
connformat = "%s:///%s"
200+
conn_string = connformat%(conn_dict['engine'], conn_dict['address'])
225201
else:
226202
if conn_dict['engine'] == 'mssql':
227203
driver = "pyodbc"
228-
conn = "%s+%s://%s:%s@%s/%s?driver=SQL+Server"
229-
if "sqlncli11.dll" in os.listdir("C:\\Windows\\System32"):
230-
conn = "%s+%s://%s:%s@%s/%s?driver=SQL+Server+Native+Client+11.0"
231-
self._connection_format = conn
232-
conn_string = self._connection_format % (
233-
conn_dict['engine'], driver, conn_dict['user'], conn_dict['password'], conn_dict['address'],
234-
conn_dict['db'])
204+
connformat=self._connection_format = "%s+%s://%s:%s@%s/%s?driver=SQL+Server+Native+Client+10.0"
235205
elif conn_dict['engine'] == 'mysql':
236206
driver = "pymysql"
237-
conn_string = self.constringBuilder(conn_dict, driver)
238207
elif conn_dict['engine'] == 'postgresql':
239208
driver = "psycopg2"
240-
conn_string = self.constringBuilder(conn_dict, driver)
241209
else:
242210
driver = "None"
243-
conn_string = self.constringBuilder(conn_dict, driver)
244-
<<<<<<< Updated upstream
245-
246211

247-
# print "******", conn_string
248-
return conn_string
249-
250-
=======
251-
252-
253-
# print "******", conn_string
254-
return conn_string
255-
256-
>>>>>>> Stashed changes
257-
def constringBuilder(self, conn_dict, driver):
258-
if conn_dict['password'] is None or not conn_dict['password']:
259-
conn_string = self._connection_format_nopassword % (
260-
conn_dict['engine'], driver, conn_dict['user'], conn_dict['address'],
261-
conn_dict['db'])
262-
else:
263-
conn_string = self._connection_format % (
212+
conn_string = connformat % (
264213
conn_dict['engine'], driver, conn_dict['user'], conn_dict['password'], conn_dict['address'],
265214
conn_dict['db'])
266215
return conn_string

tests/test_odmservices/test_series_service.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,15 @@ def test_create_qualifier(self):
7070

7171
assert qual.id is not None
7272

73+
def test_get_qualifier_by_code(self):
74+
assert self.series_service.get_all_qualifiers() == []
75+
76+
qual= self.series_service.create_qualifier("ABC123","This is a test")
77+
78+
db_qual = self.series_service.get_qualifier_by_code("ABC123")
79+
80+
assert qual.id == db_qual.id
81+
7382
def test_get_qualifiers(self):
7483
assert self.series_service.get_all_qualifiers() == []
7584

@@ -383,4 +392,5 @@ def test_variable_exists(self):
383392
assert self.series_service.variable_exists(variable)
384393
variable.code = "00000"
385394
variable.name = "A new name"
386-
assert not self.series_service.variable_exists(variable)
395+
assert not self.series_service.variable_exists(variable)
396+

0 commit comments

Comments
 (0)