From fddb3f48581903c7845b91bc90cfd7b3d98f5d7d Mon Sep 17 00:00:00 2001 From: Lan Zagar Date: Fri, 1 Jul 2016 11:11:07 +0200 Subject: [PATCH 1/2] owsql: Try to create missing extensions --- Orange/widgets/data/owsql.py | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/Orange/widgets/data/owsql.py b/Orange/widgets/data/owsql.py index 72d903daf75..00471f0cf99 100644 --- a/Orange/widgets/data/owsql.py +++ b/Orange/widgets/data/owsql.py @@ -15,6 +15,7 @@ MAX_DL_LIMIT = 1000000 +EXTENSIONS = ('tsm_system_time', 'quantile') class OWSql(widget.OWWidget): @@ -145,7 +146,6 @@ def error(self, id=0, text=""): else: self.databasetext.setStyleSheet('') - def connect(self): hostport = self.servertext.text().split(':') self.host = hostport[0] @@ -173,9 +173,9 @@ def connect(self): self.database_desc = self.data_desc_table = None self.tablecombo.clear() - def refresh_tables(self): self.tablecombo.clear() + self.error(1) if self._connection is None: self.data_desc_table = None return @@ -215,7 +215,25 @@ def select_table(self): self.database_desc["Table"] = "(None)" self.table = None + def create_extensions(self): + missing = [] + for ext in EXTENSIONS: + try: + cur = self._connection.cursor() + cur.execute("CREATE EXTENSION IF NOT EXISTS " + ext) + except psycopg2.OperationalError: + missing.append(ext) + finally: + self._connection.commit() + if missing: + self.error(1, 'Database missing extension{}: {}'.format( + 's' if len(missing) > 1 else '', + ', '.join(missing))) + else: + self.error(1) + def open_table(self): + self.create_extensions() table = self.get_table() self.data_desc_table = table self.send("Data", table) From 6c93cd4e5d09e864f65a0fa403857a22622ac287 Mon Sep 17 00:00:00 2001 From: Lan Zagar Date: Fri, 1 Jul 2016 11:11:38 +0200 Subject: [PATCH 2/2] owsql: Avoid repeating style string --- Orange/widgets/data/owsql.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Orange/widgets/data/owsql.py b/Orange/widgets/data/owsql.py index 00471f0cf99..c4616582724 100644 --- a/Orange/widgets/data/owsql.py +++ b/Orange/widgets/data/owsql.py @@ -133,16 +133,17 @@ def __init__(self): def error(self, id=0, text=""): super().error(id, text) + err_style = 'QLineEdit {border: 2px solid red;}' if 'server' in text or 'host' in text: - self.servertext.setStyleSheet('QLineEdit {border: 2px solid red;}') + self.servertext.setStyleSheet(err_style) else: self.servertext.setStyleSheet('') if 'role' in text: - self.usernametext.setStyleSheet('QLineEdit {border: 2px solid red;}') + self.usernametext.setStyleSheet(err_style) else: self.usernametext.setStyleSheet('') if 'database' in text: - self.databasetext.setStyleSheet('QLineEdit {border: 2px solid red;}') + self.databasetext.setStyleSheet(err_style) else: self.databasetext.setStyleSheet('')