diff --git a/addons/ospp_base/models/models.py b/addons/ospp_base/models/models.py index cbfeca2..e4eaadf 100644 --- a/addons/ospp_base/models/models.py +++ b/addons/ospp_base/models/models.py @@ -43,7 +43,7 @@ class OSPPInstance(models.Model): tracking=True) management_api = fields.Char('Management Api', required=True, tracking=True) management_key = fields.Char('Management Key', tracking=True) - management_secret = fields.Char('Management Secret', tracking=True) + management_secret = fields.Char('Management Secret') service_base_host = fields.Char('Service Base Host', tracking=True) service_scheme = fields.Selection( [('http', 'HTTP'), ('https', 'HTTPS'), ('ws', 'WS'), ('wss', 'WSS')], diff --git a/addons/ospp_base/views/views.xml b/addons/ospp_base/views/views.xml index 0585955..84e776d 100644 --- a/addons/ospp_base/views/views.xml +++ b/addons/ospp_base/views/views.xml @@ -37,7 +37,7 @@ - + diff --git a/addons/ospp_slide/models/models.py b/addons/ospp_slide/models/models.py index 9cde2a0..b346583 100644 --- a/addons/ospp_slide/models/models.py +++ b/addons/ospp_slide/models/models.py @@ -1,6 +1,8 @@ # -*- coding: utf-8 -*- import random +import requests +from urllib.parse import urlencode import uuid from odoo import models, fields, api, _ from odoo.exceptions import UserError, ValidationError @@ -157,6 +159,43 @@ class ChannelInstance(models.Model): demo_data = fields.Boolean('Demo Data', default=True) is_notified = fields.Boolean('Is Notified', default=False) + def action_generate_instance(self): + for rec in self: + if rec.instance_created: + return True + + url = f"{rec.instance_id.management_api}/web/database/create" + master_pwd = f"{rec.instance_id.management_secret}" + dbname = rec.service_name + login = rec.admin_account + password = rec.admin_password + phone = '' + lang = 'zh_CN' + country_code = 'cn' + demo = 1 if rec.demo_data else 0 + + headers = { + 'Content-Type': 'application/x-www-form-urlencoded', + 'Cookie': 'frontend_lang=en_US; session_id=645c41edf8f8c7e1e983ba0f5bd9e94d9a3bd4bc' + } + + payload = { + 'master_pwd': master_pwd, + 'name': dbname, + 'login': login, + 'password': password, + 'phone': phone, + 'lang': lang, + 'country_code': country_code, + 'demo': demo + } + + response = requests.request("POST", url, headers=headers, data=urlencode(payload)) + rec.message = response.text + if response.status_code == 200 and 'error' not in response.text: + rec.instance_created = True + return True + def name_get(self): # Prefetch the fields used by the `name_get`, so `browse` doesn't fetch other fields self.browse(self.ids).read(['name', 'code']) diff --git a/addons/ospp_slide/views/views.xml b/addons/ospp_slide/views/views.xml index 6d852f4..6d512a7 100644 --- a/addons/ospp_slide/views/views.xml +++ b/addons/ospp_slide/views/views.xml @@ -34,6 +34,9 @@ +