diff --git a/tableaudocumentapi/connection.py b/tableaudocumentapi/connection.py index 3e64c1b..ab4dcbb 100644 --- a/tableaudocumentapi/connection.py +++ b/tableaudocumentapi/connection.py @@ -3,6 +3,7 @@ # Connection - A class for writing connections to Tableau files # ############################################################################### +from tableaudocumentapi.dbclass import is_valid_dbclass class Connection(object): @@ -111,3 +112,12 @@ def authentication(self): @property def dbclass(self): return self._class + + @dbclass.setter + def dbclass(self, value): + + if not is_valid_dbclass(value): + raise AttributeError("'{}' is not a valid database type".format(value)) + + self._class = value + self._connectionXML.set('dbclass', value) diff --git a/tableaudocumentapi/dbclass.py b/tableaudocumentapi/dbclass.py new file mode 100644 index 0000000..b466452 --- /dev/null +++ b/tableaudocumentapi/dbclass.py @@ -0,0 +1,60 @@ + + +KNOWN_DB_CLASSES = ('msaccess', + 'msolap', + 'bigquery', + 'asterncluster', + 'bigsql', + 'aurora', + 'awshadoophive', + 'dataengine', + 'DataStax', + 'db2', + 'essbase', + 'exasolution', + 'excel', + 'excel-direct', + 'excel-reader', + 'firebird', + 'powerpivot', + 'genericodbc', + 'google-analytics', + 'googlecloudsql', + 'google-sheets', + 'greenplum', + 'saphana', + 'hadoophive', + 'hortonworkshadoophive', + 'maprhadoophive', + 'marklogic', + 'memsql', + 'mysql', + 'netezza', + 'oracle', + 'paraccel', + 'postgres', + 'progressopenedge', + 'redshift', + 'snowflake', + 'spark', + 'splunk', + 'kognitio', + 'sqlserver', + 'salesforce', + 'sapbw', + 'sybasease', + 'sybaseiq', + 'tbio', + 'teradata', + 'vectorwise', + 'vertica', + 'denormalized-cube', + 'csv', + 'textscan', + 'webdata', + 'webdata-direct', + 'cubeextract') + + +def is_valid_dbclass(dbclass): + return dbclass in KNOWN_DB_CLASSES diff --git a/test/bvt.py b/test/bvt.py index 6a7cdf8..d26b91a 100644 --- a/test/bvt.py +++ b/test/bvt.py @@ -64,6 +64,13 @@ def test_can_write_attributes_to_connection(self): self.assertEqual(conn.username, 'bob') self.assertEqual(conn.server, 'mssql2014.test.tsi.lan') + def test_bad_dbclass_rasies_attribute_error(self): + conn = Connection(self.connection) + conn.dbclass = 'sqlserver' + self.assertEqual(conn.dbclass, 'sqlserver') + with self.assertRaises(AttributeError): + conn.dbclass = 'NotReal' + class DatasourceModelTests(unittest.TestCase): pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy