diff options
| author | Christophe Simonis <chs@odoo.com> | 2018-11-16 19:30:20 +0100 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2018-11-16 19:30:20 +0100 |
| commit | 6faad524cf5e4db02855cb213277c40aee14c42a (patch) | |
| tree | 383c984dc1461a03481baa9fbdce8c156ca97e2e /odoo/cli/deploy.py | |
| parent | 3657dc77c2ddb4275f07d1271b93e7f25e09913a (diff) | |
| parent | bc744a1da46efda6f1eb5c341f2fa5df30c9c7ad (diff) | |
[MERGE] forward port branch 12.0 up to bc744a1da46
Diffstat (limited to 'odoo/cli/deploy.py')
| -rw-r--r-- | odoo/cli/deploy.py | 39 |
1 files changed, 14 insertions, 25 deletions
diff --git a/odoo/cli/deploy.py b/odoo/cli/deploy.py index 6e76cea7d45..29b969135dd 100644 --- a/odoo/cli/deploy.py +++ b/odoo/cli/deploy.py @@ -18,40 +18,29 @@ class Deploy(Command): def deploy_module(self, module_path, url, login, password, db='', force=False): url = url.rstrip('/') - csrf_token = self.authenticate(url, login, password, db) module_file = self.zip_module(module_path) try: - return self.upload_module(url, module_file, force=force, csrf_token=csrf_token) + return self.login_upload_module(module_file, url, login, password, db, force=force) finally: os.remove(module_file) - def upload_module(self, server, module_file, force=False, csrf_token=None): + def login_upload_module(self, module_file, url, login, password, db, force=False): print("Uploading module file...") - url = server + '/base_import_module/upload' - - post_data = {'force': '1' if force else ''} - if csrf_token: post_data['csrf_token'] = csrf_token - + endpoint = url + '/base_import_module/login_upload' + post_data = { + 'login': login, + 'password': password, + 'db': db, + 'force': '1' if force else '', + } with open(module_file, 'rb') as f: - res = self.session.post(url, files={'mod_file': f}, data=post_data) - res.raise_for_status() - - return res.text + res = self.session.post(endpoint, files={'mod_file': f}, data=post_data) - def authenticate(self, server, login, password, db=''): - print("Authenticating on server '%s' ..." % server) - - # Fixate session with a given db if any - self.session.get(server + '/web/login', params=dict(db=db)) - - args = dict(login=login, password=password, db=db) - res = self.session.post(server + '/base_import_module/login', args) if res.status_code == 404: - raise Exception("The server '%s' does not have the 'base_import_module' installed." % server) - elif res.status_code != 200: - raise Exception(res.text) - - return res.headers.get('x-csrf-token') + raise Exception( + "The server '%s' does not have the 'base_import_module' installed or is not up-to-date." % url) + res.raise_for_status() + return res.text def zip_module(self, path): path = os.path.abspath(path) |
