[IMP] Improve ospp_base and ospp_slide modules
parent
35d436b0ff
commit
ca94474a2f
|
@ -1,7 +1,9 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import random
|
||||||
import uuid
|
import uuid
|
||||||
from odoo import models, fields, api, _
|
from odoo import models, fields, api, _
|
||||||
|
from odoo.exceptions import UserError, ValidationError
|
||||||
|
|
||||||
|
|
||||||
class SlideChannel(models.Model):
|
class SlideChannel(models.Model):
|
||||||
|
@ -18,6 +20,30 @@ class SlideChannel(models.Model):
|
||||||
instance_base = fields.Many2one('ospp.instance', string="Instance Base")
|
instance_base = fields.Many2one('ospp.instance', string="Instance Base")
|
||||||
instance_ids = fields.One2many('channel.instance', 'channel_id', string="Instances")
|
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):
|
def name_get(self):
|
||||||
# Prefetch the fields used by the `name_get`, so `browse` doesn't fetch other fields
|
# Prefetch the fields used by the `name_get`, so `browse` doesn't fetch other fields
|
||||||
self.browse(self.ids).read(['name', 'code'])
|
self.browse(self.ids).read(['name', 'code'])
|
||||||
|
@ -51,7 +77,10 @@ class ChannelInstance(models.Model):
|
||||||
service_name = fields.Char('Service Name', required=True)
|
service_name = fields.Char('Service Name', required=True)
|
||||||
service_url = fields.Char('Service URL', required=True)
|
service_url = fields.Char('Service URL', required=True)
|
||||||
user_scope = fields.Many2many('slide.channel.partner', string="User Scope")
|
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)
|
active = fields.Boolean('Active', default=True)
|
||||||
|
type = fields.Selection([('share', 'Share'), ('exclude', 'Exclude')], string="Type", required=True, default='share')
|
||||||
|
|
||||||
def name_get(self):
|
def name_get(self):
|
||||||
# Prefetch the fields used by the `name_get`, so `browse` doesn't fetch other fields
|
# Prefetch the fields used by the `name_get`, so `browse` doesn't fetch other fields
|
||||||
|
|
|
@ -15,9 +15,12 @@
|
||||||
</group>
|
</group>
|
||||||
<group>
|
<group>
|
||||||
<field name="instance_base"/>
|
<field name="instance_base"/>
|
||||||
|
<button name="action_generate_instance" data-hotkey="v"
|
||||||
|
string="Generate Instance" type="object"
|
||||||
|
attrs="{'invisible': [('instance_arrangement', 'in', ['no_need'])]}"/>
|
||||||
</group>
|
</group>
|
||||||
</group>
|
</group>
|
||||||
<field name="instance_ids" mode="tree,form">
|
<field name="instance_ids" mode="tree,form" readonly="1">
|
||||||
<tree>
|
<tree>
|
||||||
<field name="sequence" widget="handle"/>
|
<field name="sequence" widget="handle"/>
|
||||||
<field name="code"/>
|
<field name="code"/>
|
||||||
|
@ -30,13 +33,16 @@
|
||||||
<group>
|
<group>
|
||||||
<field name="code"/>
|
<field name="code"/>
|
||||||
<field name="name"/>
|
<field name="name"/>
|
||||||
<field name="instance_id"/>
|
<field name="type"/>
|
||||||
|
<field name="admin_account"/>
|
||||||
|
<field name="admin_password"/>
|
||||||
</group>
|
</group>
|
||||||
<group>
|
<group>
|
||||||
|
<field name="instance_id"/>
|
||||||
<field name="service_name"/>
|
<field name="service_name"/>
|
||||||
<field name="service_url"/>
|
<field name="service_url"/>
|
||||||
<field name="active"/>
|
<field name="active"/>
|
||||||
<field name="uuid" invisible="1"/>
|
<field name="uuid" invisible="0"/>
|
||||||
</group>
|
</group>
|
||||||
</group>
|
</group>
|
||||||
<field name="user_scope"/>
|
<field name="user_scope"/>
|
||||||
|
|
Loading…
Reference in New Issue