Beispiel #1
0
    def test_create(self):
        self.service.db.list.return_value = ['newdb']
        self.service.common.login.return_value = 1

        client = odooly.Client('http://127.0.0.1:8069', 'newdb', 'usr', 'pss')
        expected_calls = self.startup_calls + (
            call.common.login('newdb', 'usr', 'pss'),
            call.object.execute_kw('newdb', 1, 'pss', 'res.users',
                                   'context_get', ()),
        )
        url_xmlrpc = 'http://127.0.0.1:8069/xmlrpc'
        self.assertIsInstance(client, odooly.Client)
        self.assertCalls(*expected_calls)
        self.assertEqual(
            client.env._cache, {
                ('[1, {}]', 'newdb', url_xmlrpc):
                client.env(context={}),
                ('[1, {"lang": "en_US", "tz": "Europe/Zurich"}]', 'newdb', url_xmlrpc):
                client.env,
                ('auth', 'newdb', url_xmlrpc): {
                    1: (1, 'pss'),
                    'usr': (1, 'pss')
                },
                ('model_names', 'newdb', url_xmlrpc): {'res.users'}
            })
        self.assertOutput('')
Beispiel #2
0
    def test_service_openerp_client(self, server_version=11.0):
        server = 'http://127.0.0.1:8069/%s' % self.protocol
        return_values = [str(server_version), ['newdb'], 1, {}]
        if self.protocol == 'jsonrpc':
            return_values = [{'result': rv} for rv in return_values]
        self.service.side_effect = return_values
        client = odooly.Client(server, 'newdb', 'usr', 'pss')

        self.service.return_value = ANY
        self.assertIsInstance(client.db, odooly.Service)
        self.assertIsInstance(client.common, odooly.Service)
        self.assertIsInstance(client._object, odooly.Service)
        if server_version >= 11.0:
            self.assertIs(client._report, None)
            self.assertIs(client._wizard, None)
        elif server_version >= 7.0:
            self.assertIsInstance(client._report, odooly.Service)
            self.assertIs(client._wizard, None)
        else:
            self.assertIsInstance(client._report, odooly.Service)
            self.assertIsInstance(client._wizard, odooly.Service)

        self.assertIn('/%s|db' % self.protocol, str(client.db.create_database))
        self.assertIn('/%s|db' % self.protocol, str(client.db.db_exist))
        if server_version >= 8.0:
            self.assertRaises(AttributeError, getattr, client.db, 'create')
            self.assertRaises(AttributeError, getattr, client.db,
                              'get_progress')
        else:
            self.assertIn('/%s|db' % self.protocol, str(client.db.create))
            self.assertIn('/%s|db' % self.protocol,
                          str(client.db.get_progress))

        self.assertCalls(ANY, ANY, ANY, ANY)
        self.assertOutput('')
Beispiel #3
0
def duplicar_base():
    db = click.prompt('Base de datos a duplicar')
    db_duplicate = click.prompt('Nueva base de datos')
    if db == db_duplicate:
        click.echo(
            "Error al duplicar la base de datos, la nueva base debe tener otro nombre."
        )
        return
    servidor = click.prompt("Servidor Odoo o IP")
    try:
        servidor = 'http://' + servidor + ':8069'
        client = odooly.Client(servidor)
    except Exception as e:
        raise Warning("%s " % e)

    list_dbs = client.db.list()
    if not db in list_dbs:
        click.echo("La base de datos %s, no existe." % db)
        return

    click.echo("Bases de datos %s" % list_dbs)

    #user = click.prompt("Usuario Odoo")
    #password =  click.prompt("Contraseña Odoo")

    click.echo("Duplicando base %s a %s" % (db, db_duplicate))
Beispiel #4
0
 def odoo_connect(self):
     self.client = odooly.Client(
         server='http://localhost:%s' % self.xmlrpc_port,
         db=self.db,
         user=self.user,
         password=self.password,
     )
     time.sleep(5)
Beispiel #5
0
    def test_create_with_cache(self):
        self.service.db.list.return_value = ['database']
        self.assertFalse(odooly.Env._cache)
        url_xmlrpc = 'http://127.0.0.1:8069/xmlrpc'
        mock.patch.dict(odooly.Env._cache, {
            ('auth', 'database', url_xmlrpc): {
                'usr': (1, 'password')
            }
        }).start()

        client = odooly.Client('http://127.0.0.1:8069', 'database', 'usr')
        self.assertIsInstance(client, odooly.Client)
        self.assertCalls(*(self.startup_calls + (call.object.execute_kw(
            'database', 1, 'password', 'res.users', 'context_get', ()), )))
        self.assertOutput('')
Beispiel #6
0
    def setUp(self):
        self.maxDiff = 4096  # instead of 640
        self.addCleanup(mock.patch.stopall)
        self.stdout = mock.patch('sys.stdout', new=PseudoFile()).start()
        self.stderr = mock.patch('sys.stderr', new=PseudoFile()).start()

        # Clear the login cache
        mock.patch.dict('odooly.Env._cache', clear=True).start()

        # Avoid hanging on getpass
        mock.patch('getpass.getpass', side_effect=RuntimeError).start()

        self.service = self._patch_service()
        if self.server and self.database:
            # create the client
            self.client = odooly.Client(self.server, self.database, self.user,
                                        self.password)
            self.env = self.client.env
            # reset the mock
            self.service.reset_mock()
Beispiel #7
0
    def test_create_getpass(self):
        getpass = mock.patch('getpass.getpass',
                             return_value='password').start()
        self.service.db.list.return_value = ['database']
        expected_calls = self.startup_calls + (call.common.login(
            'database', 'usr', 'password'), )

        # A: Invalid login
        self.assertRaises(odooly.Error, odooly.Client, 'http://127.0.0.1:8069',
                          'database', 'usr')
        self.assertCalls(*expected_calls)
        self.assertEqual(getpass.call_count, 1)

        # B: Valid login
        self.service.common.login.return_value = 17
        getpass.reset_mock()
        expected_calls = expected_calls + (call.object.execute_kw(
            'database', 17, 'password', 'res.users', 'context_get', ()), )

        client = odooly.Client('http://127.0.0.1:8069', 'database', 'usr')
        self.assertIsInstance(client, odooly.Client)
        self.assertCalls(*expected_calls)
        self.assertEqual(getpass.call_count, 1)