connectors/__init__.py
branch#2476
changeset 2007 ef2d479f564f
parent 2006 c4ba142bf3fb
child 2182 eeca1aff0691
--- a/connectors/__init__.py	Wed May 09 15:09:54 2018 +0200
+++ b/connectors/__init__.py	Thu May 10 13:11:11 2018 +0200
@@ -36,6 +36,12 @@
 def _GetLocalConnectorClassFactory(name):
     return lambda: getattr(__import__(name, globals(), locals()), name + "_connector_factory")
 
+def _GetLocalConnectorClassDialog(name):
+    return lambda: getattr(__import__(name + '.dialog', globals(), locals(), fromlist=['dialog']), name + "_connector_dialog")
+
+def _GetLocalConnectorURITypes(name):
+    return lambda: getattr(__import__(name + '.dialog', globals(), locals(), fromlist=['dialog']), "URITypes", None)
+
 
 connectors = {name:
               _GetLocalConnectorClassFactory(name)
@@ -43,6 +49,12 @@
               if (path.isdir(path.join(_base_path, name)) and
                   not name.startswith("__"))}
 
+connectors_dialog = {name:
+                     {"function":_GetLocalConnectorClassDialog(name), "URITypes": _GetLocalConnectorURITypes(name)}
+                     for name in listdir(_base_path)
+                     if (path.isdir(path.join(_base_path, name)) and
+                         not name.startswith("__"))}
+
 
 def ConnectorFactory(uri, confnodesroot):
     """
@@ -68,3 +80,20 @@
     # import module according to uri type
     connectorclass = connectors[servicetype]()
     return connectorclass(uri, confnodesroot)
+
+def ConnectorDialog(conn_type, confnodesroot):
+    if conn_type not in connectors_dialog:
+        return None
+
+    connectorclass = connectors_dialog[conn_type]["function"]()
+    return connectorclass(confnodesroot)
+
+def GetConnectorFromURI(uri):
+    typeOfConnector = None
+    for conn_type in connectors_dialog:
+        connectorTypes = connectors_dialog[conn_type]["URITypes"]()
+        if connectorTypes and uri in connectorTypes:
+            typeOfConnector = conn_type
+            break
+
+    return typeOfConnector