diff --git a/addons/ospp_slide/models/models.py b/addons/ospp_slide/models/models.py
index c45f01c..8f78687 100644
--- a/addons/ospp_slide/models/models.py
+++ b/addons/ospp_slide/models/models.py
@@ -1,7 +1,9 @@
# -*- coding: utf-8 -*-
+import random
import uuid
from odoo import models, fields, api, _
+from odoo.exceptions import UserError, ValidationError
class SlideChannel(models.Model):
@@ -18,6 +20,30 @@ class SlideChannel(models.Model):
instance_base = fields.Many2one('ospp.instance', string="Instance Base")
instance_ids = fields.One2many('channel.instance', 'channel_id', string="Instances")
+ # @api.depends('slide_partner_ids')
+ def action_generate_instance(self):
+ instance_obj = self.env['channel.instance'].sudo()
+ for rec in self:
+ if rec.instance_arrangement not in ['no_need'] and not (rec.instance_arrangement and rec.instance_base):
+ raise ValidationError(_("No Instance Arrangement or Base provided!"))
+
+ if not rec.instance_ids:
+ if rec.instance_arrangement in ['share']:
+ vals = []
+ for i in range(rec.shared_instance_count):
+ val = {
+ "name": rec.id,
+ "channel_id": rec.id,
+ "instance_id": rec.instance_base and rec.instance_base.id,
+ "service_name": f"{rec.code}",
+ "service_url": f"{rec.service_scheme}://{rec.code}-{i}.{rec.instance_base.service_base_host}",
+ "admin_account": f"{rec.user_id.email}",
+ "admin_password": f"{random.randint(10000000,99999999)}",
+ "type": "share",
+ }
+ vals.append(val)
+ instance_obj.create(vals)
+
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'])
@@ -51,7 +77,10 @@ class ChannelInstance(models.Model):
service_name = fields.Char('Service Name', required=True)
service_url = fields.Char('Service URL', required=True)
user_scope = fields.Many2many('slide.channel.partner', string="User Scope")
+ admin_account = fields.Char('Admin Account')
+ admin_password = fields.Char('Admin Password')
active = fields.Boolean('Active', default=True)
+ type = fields.Selection([('share', 'Share'), ('exclude', 'Exclude')], string="Type", required=True, default='share')
def name_get(self):
# Prefetch the fields used by the `name_get`, so `browse` doesn't fetch other fields
diff --git a/addons/ospp_slide/views/views.xml b/addons/ospp_slide/views/views.xml
index 28ae173..1c4993b 100644
--- a/addons/ospp_slide/views/views.xml
+++ b/addons/ospp_slide/views/views.xml
@@ -15,9 +15,12 @@
+
-
+
@@ -30,13 +33,16 @@
-
+
+
+
+
-
+