예제 #1
0
 def connect(self):
     try:
         server = self.omero_server_ctrl.GetValue()
         port = int(self.omero_port_ctrl.GetValue())
         user = self.omero_user_ctrl.GetValue()
     except:
         self.message_ctrl.Label = (
             "The port number must be an integer between 0 and 65535 (try 4064)"
         )
         self.message_ctrl.ForegroundColour = "red"
         self.message_ctrl.Refresh()
         return False
     try:
         self.session_id = bioformats.formatreader.set_omero_credentials(
             server, port, user, self.omero_password_ctrl.GetValue())
         self.message_ctrl.Label = "Connected"
         self.message_ctrl.ForegroundColour = "green"
         self.message_ctrl.Refresh()
         self.server = server
         self.port = port
         self.user = user
         set_omero_server(server)
         set_omero_port(port)
         set_omero_user(user)
         self.ok_button.Enable(True)
         return True
     except:
         self.message_ctrl.Label = "Failed to log onto server"
         self.message_ctrl.ForegroundColour = "red"
         self.message_ctrl.Refresh()
         return False
예제 #2
0
def set_omero_credentials_from_string(credentials_string):
    """Set the OMERO server / port / session ID

    credentials_string: a comma-separated key/value pair string (key=value)
                        that gives the credentials. Keys are
                        host - the DNS name or IP address of the OMERO server
                        port - the TCP port to use to connect
                        user - the user name
                        session-id - the session ID used for authentication
    """
    if re.match("([^=^,]+=[^=^,]+,)*([^=^,]+=[^=^,]+)",
                credentials_string) is None:
        logging.root.error(
            'The OMERO credentials string, "%s", is badly-formatted.' %
            credentials_string)

        logging.root.error(
            'It should have the form: "host=hostname.org,port=####,user=<user>,session-id=<session-id>\n'
        )

        raise ValueError("Invalid format for --omero-credentials")

    credentials = {}

    for k, v in [kv.split("=", 1) for kv in credentials_string.split(",")]:
        k = k.lower()

        credentials = {
            bioformats.formatreader.K_OMERO_SERVER: get_omero_server(),
            bioformats.formatreader.K_OMERO_PORT: get_omero_port(),
            bioformats.formatreader.K_OMERO_USER: get_omero_user(),
            bioformats.formatreader.K_OMERO_SESSION_ID: get_omero_session_id(),
        }

        if k == OMERO_CK_HOST:
            set_omero_server(v, globally=False)

            credentials[bioformats.formatreader.K_OMERO_SERVER] = v
        elif k == OMERO_CK_PORT:
            set_omero_port(v, globally=False)

            credentials[bioformats.formatreader.K_OMERO_PORT] = v
        elif k == OMERO_CK_SESSION_ID:
            credentials[bioformats.formatreader.K_OMERO_SESSION_ID] = v
        elif k == OMERO_CK_USER:
            set_omero_user(v, globally=False)

            credentials[bioformats.formatreader.K_OMERO_USER] = v
        elif k == OMERO_CK_PASSWORD:
            credentials[bioformats.formatreader.K_OMERO_PASSWORD] = v
        elif k == OMERO_CK_CONFIG_FILE:
            credentials[bioformats.formatreader.K_OMERO_CONFIG_FILE] = v

            if not os.path.isfile(v):
                msg = "Cannot find OMERO config file, %s" % v

                logging.root.error(msg)

                raise ValueError(msg)
        else:
            logging.root.error('Unknown --omero-credentials keyword: "%s"' % k)

            logging.root.error('Acceptable keywords are: "%s"' % '","'.join(
                [OMERO_CK_HOST, OMERO_CK_PORT, OMERO_CK_SESSION_ID]))

            raise ValueError("Invalid format for --omero-credentials")

    bioformats.formatreader.use_omero_credentials(credentials)