diff -r c4ba142bf3fb -r ef2d479f564f connectors/__init__.py --- 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