diff --git a/addons/ospp_slide/models/models.py b/addons/ospp_slide/models/models.py
index 7872d15..2277b1b 100644
--- a/addons/ospp_slide/models/models.py
+++ b/addons/ospp_slide/models/models.py
@@ -31,13 +31,13 @@ class SlideChannel(models.Model):
channel_ids = channel_obj.search([('instance_arrangement', 'not in', ['no_need']), ('instance_base', '!=', False)])
for channel_id in channel_ids:
- channel_id.action_generate_instance()
+ channel_id.action_create_instance()
self.env.cr.commit()
instance_ids = instance_obj.search([('instance_created', '!=', True)])
for instance_id in instance_ids:
- instance_id.action_generate_instance()
+ instance_id.action_create_instance()
self.env.cr.commit()
@@ -47,7 +47,7 @@ class SlideChannel(models.Model):
return True
- def action_generate_instance(self):
+ def action_create_instance(self):
instance_obj = self.env['channel.instance'].sudo()
partner_obj = self.env['slide.channel.partner'].sudo()
for rec in self:
@@ -217,7 +217,7 @@ class ChannelInstance(models.Model):
rec.is_notified = True
return True
- def action_generate_instance(self):
+ def action_create_instance(self):
for rec in self:
if rec.instance_created:
return True
@@ -254,6 +254,31 @@ class ChannelInstance(models.Model):
rec.instance_created = True
return True
+ def action_drop_instance(self):
+ for rec in self:
+ if not rec.instance_created:
+ return True
+
+ url = f"{rec.instance_id.management_api}/web/database/drop"
+ master_pwd = f"{rec.instance_id.management_secret}"
+ dbname = rec.service_name
+
+ headers = {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ 'Cookie': 'frontend_lang=en_US; session_id=645c41edf8f8c7e1e983ba0f5bd9e94d9a3bd4bc'
+ }
+
+ payload = {
+ 'master_pwd': master_pwd,
+ 'name': dbname,
+ }
+
+ response = requests.request("POST", url, headers=headers, data=urlencode(payload), verify=False)
+ rec.message = response.text
+ if response.status_code == 200 and 'error' not in response.text:
+ rec.instance_created = False
+ 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/security/security_groups.xml b/addons/ospp_slide/security/security_groups.xml
index fe8ad9a..6272047 100755
--- a/addons/ospp_slide/security/security_groups.xml
+++ b/addons/ospp_slide/security/security_groups.xml
@@ -19,6 +19,8 @@
14
+
+
channel.instance read
@@ -45,5 +47,13 @@
+
+
+
+
+ Action Drop Instance
+
+
+
diff --git a/addons/ospp_slide/views/views.xml b/addons/ospp_slide/views/views.xml
index 4b59ac4..23dab57 100644
--- a/addons/ospp_slide/views/views.xml
+++ b/addons/ospp_slide/views/views.xml
@@ -10,14 +10,14 @@
-
-
-
+
+
+
-
-
-
+
+
@@ -34,10 +34,14 @@
-
-
+