Beispiel #1
0
    def dispatch(self, parsed_args, raw_args):
        from os import path
        from getpass import getpass

        from erppeek import Client

        from gronexctl.module_set import ModuleSet

        password = getpass()

        for yml in parsed_args.yml:
            client = Client(
                parsed_args.host_string,
                db=parsed_args.database,
                user=parsed_args.username,
                password=password,
            )

            ms = ModuleSet(
                path.join(
                    parsed_args.directory,
                    "{0}.yml".format(yml),
                ))

            ms.resolve()

            for l in ms.absolute_addon_dependencies:
                client.install(*l)
Beispiel #2
0
class OdooUI(object):
    def __init__(self, driver, config):
        self.driver = driver
        self.setup(config)

        self.url = util.parse_url(self.config["url"])

        if self.url is None:
            raise error.OdoleniumError("'{}' isn't valid URL".format(
                self.config["url"]))

        log.info("Setting up XML-RPC connection to {}".format(self.urlgen()))
        try:
            self.rpc = Client(self.url.geturl())
            log.info("Connection succeed")
        except:
            log.error("Connection failed")
            raise ConnectionRefusedError(
                "Can't connect to Odoo server")  # NoQA

        self.ver = self.rpc.db.server_version()
        log.info("Found version {} Odoo server".format(self.ver))

        if self.ver not in versions:
            raise error.OdoleniumError("Unsupported Odoo version '{}'".format(
                self.ver))

    def login(self, user, password, db):
        """
        Login to Odoo server using given user and password and database.
        """
        log.info("Trying to log in over XML-RPC")
        self.rpc_login(user, password, db)

        # get first page
        log.info("GET {}".format(self.url.geturl()))
        self.driver.get(self.url.geturl())

        # login from web UI
        login_w = widgets.LoginWidget(self.driver, self.ver)
        login_w.login(user, password, db)

    def setup(self, config):
        """
        Setup configration
        """
        self.config = loadconfig(config)

    def urlgen(self, path=""):
        """
        Generate URL.
        """
        return util.urlgen(self.url, path)

    def rpc_login(self, user, password, db):
        """
        Setup XML-RPC connection using given credentials
        """
        try:
            self.rpc.login(user, password, db)

        except Error as er:  # erppeek.Error
            log.critical("{}".format(er))
            raise error.OdoleniumError("{}".format(er))

        log.info("Logged in as '{}' to database '{}'".format(
            self.rpc.user, db))

        log.info("Searching for 'web_selenium' module")
        module_list = self.rpc.modules("web_selenium")

        if len(module_list) == 0:
            log.error(
                "Can't locate 'web_selenium' module in database '{}'".format(
                    db))
        else:
            if "web_selenium" in module_list.get("installed", []):
                log.info("Module 'web_selenium' is installed")
            else:
                log.info("Trying to install module 'web_selenium'")
                self.rpc.install("web_selenium")
                log.info("Done")

    def close(self):
        """"
        Close any open resources
        """
        # driver
        self.driver.quit()