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 @@
+