[IMP] Improve ospp_base and ospp_slide modules
parent
040a9d0617
commit
35d436b0ff
|
@ -11,6 +11,7 @@
|
||||||
|
|
||||||
'author': "Zhiguo Yuan",
|
'author': "Zhiguo Yuan",
|
||||||
'website': "https://www.newbizpaas.cn",
|
'website': "https://www.newbizpaas.cn",
|
||||||
|
'license': 'LGPL-3',
|
||||||
|
|
||||||
# Categories can be used to filter modules in modules listing
|
# Categories can be used to filter modules in modules listing
|
||||||
# Check https://github.com/odoo/odoo/blob/16.0/odoo/addons/base/data/ir_module_category_data.xml
|
# Check https://github.com/odoo/odoo/blob/16.0/odoo/addons/base/data/ir_module_category_data.xml
|
||||||
|
@ -23,7 +24,9 @@
|
||||||
|
|
||||||
# always loaded
|
# always loaded
|
||||||
'data': [
|
'data': [
|
||||||
# 'security/ir.model.access.csv',
|
'security/security_groups.xml',
|
||||||
|
'security/ir.model.access.csv',
|
||||||
|
'data/ir_sequence_data.xml',
|
||||||
'views/views.xml',
|
'views/views.xml',
|
||||||
'views/templates.xml',
|
'views/templates.xml',
|
||||||
],
|
],
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo noupdate="1">
|
||||||
|
|
||||||
|
<record id="seq_ospp_instance" model="ir.sequence">
|
||||||
|
<field name="name">OSPP Instance</field>
|
||||||
|
<field name="code">ospp.instance</field>
|
||||||
|
<field name="prefix"></field>
|
||||||
|
<field name="padding">5</field>
|
||||||
|
<field name="company_id" eval="False"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="seq_res_partner" model="ir.sequence">
|
||||||
|
<field name="name">Res Partner</field>
|
||||||
|
<field name="code">res.partner</field>
|
||||||
|
<field name="prefix"></field>
|
||||||
|
<field name="padding">8</field>
|
||||||
|
<field name="company_id" eval="False"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
|
@ -1,22 +1,70 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
from odoo import models, fields, api
|
import uuid
|
||||||
|
from odoo import models, fields, api, _
|
||||||
|
|
||||||
|
|
||||||
|
class ResPartner(models.Model):
|
||||||
|
_inherit = 'res.partner'
|
||||||
|
|
||||||
|
uuid = fields.Char(
|
||||||
|
'UUID', required=True, copy=False, readonly=True, default=lambda self: uuid.uuid4(), tracking=True)
|
||||||
|
code = fields.Char('Code', required=True, copy=False, readonly=True, default=lambda self: _('New'), tracking=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'])
|
||||||
|
return [(partner.id, '%s%s' % (partner.code and '[%s] ' % partner.code or '', partner.name))
|
||||||
|
for partner in self]
|
||||||
|
|
||||||
|
@api.model_create_multi
|
||||||
|
def create(self, vals_list):
|
||||||
|
for vals in vals_list:
|
||||||
|
if vals.get('code', _("New")) == _("New"):
|
||||||
|
seq_date = None
|
||||||
|
vals['code'] = self.env['ir.sequence'].next_by_code('res.partner', sequence_date=seq_date) or _("New")
|
||||||
|
|
||||||
|
return super().create(vals_list)
|
||||||
|
|
||||||
|
|
||||||
class OSPPInstance(models.Model):
|
class OSPPInstance(models.Model):
|
||||||
_name = 'ospp.instance'
|
_name = 'ospp.instance'
|
||||||
|
_inherit = ['mail.thread', 'mail.activity.mixin']
|
||||||
_description = 'OSPP Instance'
|
_description = 'OSPP Instance'
|
||||||
|
|
||||||
name = fields.Char("Name")
|
sequence = fields.Integer('Sequence', default=10)
|
||||||
code = fields.Char("Code")
|
name = fields.Char("Name", tracking=True)
|
||||||
type = fields.Selection([('saas', 'SAAS'), ('paas', 'PAAS')], required=True, string="Type")
|
uuid = fields.Char(
|
||||||
stack = fields.Selection([('docker', 'Docker'), ('k8s', 'K8S'), ('odoo', 'ODOO')], required=True, string="Stack")
|
'UUID', required=True, copy=False, readonly=True, default=lambda self: uuid.uuid4(), tracking=True)
|
||||||
management_api = fields.Char('Management Api', required=True)
|
code = fields.Char('Code', required=True, copy=False, readonly=True, default=lambda self: _('New'), tracking=True)
|
||||||
management_key = fields.Char('Management Key')
|
type = fields.Selection([('saas', 'SAAS'), ('paas', 'PAAS')], required=True, string="Type", tracking=True)
|
||||||
management_secret = fields.Char('Management Secret')
|
stack = fields.Selection(
|
||||||
service_base_host = fields.Char('Service Base Host')
|
[('docker', 'Docker'), ('k8s', 'K8S'), ('odoo', 'ODOO'), ('other', 'Other')], required=True, string="Stack",
|
||||||
|
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)
|
||||||
|
service_base_host = fields.Char('Service Base Host', tracking=True)
|
||||||
service_scheme = fields.Selection(
|
service_scheme = fields.Selection(
|
||||||
[('http', 'HTTP'), ('https', 'HTTPS'), ('ws', 'WS'), ('wss', 'WSS')],
|
[('http', 'HTTP'), ('https', 'HTTPS'), ('ws', 'WS'), ('wss', 'WSS')],
|
||||||
required=True, string="Service Scheme")
|
required=True, string="Service Scheme", tracking=True)
|
||||||
dockerfile = fields.Text("Dockerfile")
|
dockerfile = fields.Text("Dockerfile", tracking=True)
|
||||||
active = fields.Boolean('Active', default=True)
|
active = fields.Boolean('Active', default=True, tracking=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'])
|
||||||
|
return [(instance.id, '%s%s' % (instance.code and '[%s] ' % instance.code or '', instance.name))
|
||||||
|
for instance in self]
|
||||||
|
|
||||||
|
@api.model_create_multi
|
||||||
|
def create(self, vals_list):
|
||||||
|
for vals in vals_list:
|
||||||
|
if 'company_id' in vals:
|
||||||
|
self = self.with_company(vals['company_id'])
|
||||||
|
if vals.get('code', _("New")) == _("New"):
|
||||||
|
seq_date = None
|
||||||
|
vals['code'] = self.env['ir.sequence'].next_by_code(
|
||||||
|
'ospp.instance', sequence_date=seq_date) or _("New")
|
||||||
|
|
||||||
|
return super().create(vals_list)
|
||||||
|
|
|
@ -1,2 +1,5 @@
|
||||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||||
access_ospp_base_ospp_base,ospp_base.ospp_base,model_ospp_base_ospp_base,base.group_user,1,1,1,1
|
access_ospp_instance_group_model_ospp_instance_read,ospp_instance_group_model_ospp_instance_read,ospp_base.model_ospp_instance,group_model_ospp_instance_read,1,0,0,0
|
||||||
|
access_ospp_instance_group_model_ospp_instance_write,ospp_instance_group_model_ospp_instance_write,ospp_base.model_ospp_instance,group_model_ospp_instance_write,1,1,0,0
|
||||||
|
access_ospp_instance_group_model_ospp_instance_create,ospp_instance_group_model_ospp_instance_create,ospp_base.model_ospp_instance,group_model_ospp_instance_create,1,0,1,0
|
||||||
|
access_ospp_instance_group_model_ospp_instance_delete,ospp_instance_group_model_ospp_instance_delete,ospp_base.model_ospp_instance,group_model_ospp_instance_delete,1,1,1,1
|
||||||
|
|
|
|
@ -0,0 +1,49 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
<record model="ir.module.category" id="module_category_menu_ospp_instance">
|
||||||
|
<field name="name">实例菜单</field>
|
||||||
|
<field name="description">实例菜单</field>
|
||||||
|
<field name="sequence">14</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="ir.module.category" id="module_category_model_ospp_instance">
|
||||||
|
<field name="name">实例模型</field>
|
||||||
|
<field name="description">实例菜单</field>
|
||||||
|
<field name="sequence">14</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="ir.module.category" id="module_category_button_ospp_instance">
|
||||||
|
<field name="name">实例按钮</field>
|
||||||
|
<field name="description">实例按钮</field>
|
||||||
|
<field name="sequence">14</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="group_model_ospp_instance_read" model="res.groups">
|
||||||
|
<field name="name">ospp.instance read</field>
|
||||||
|
<field name="category_id" ref="module_category_model_ospp_instance"/>
|
||||||
|
<field name="users" eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="group_model_ospp_instance_write" model="res.groups">
|
||||||
|
<field name="name">ospp.instance write</field>
|
||||||
|
<field name="category_id" ref="module_category_model_ospp_instance"/>
|
||||||
|
<field name="implied_ids" eval="[(4, ref('group_model_ospp_instance_read'))]"/>
|
||||||
|
<field name="users" eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="group_model_ospp_instance_create" model="res.groups">
|
||||||
|
<field name="name">ospp.instance create</field>
|
||||||
|
<field name="category_id" ref="module_category_model_ospp_instance"/>
|
||||||
|
<field name="implied_ids" eval="[(4, ref('group_model_ospp_instance_read'))]"/>
|
||||||
|
<field name="users" eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="group_model_ospp_instance_delete" model="res.groups">
|
||||||
|
<field name="name">ospp.instance delete</field>
|
||||||
|
<field name="category_id" ref="module_category_model_ospp_instance"/>
|
||||||
|
<field name="implied_ids" eval="[(4, ref('group_model_ospp_instance_read'))]"/>
|
||||||
|
<field name="users" eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
|
@ -1,28 +1,74 @@
|
||||||
<odoo>
|
<odoo>
|
||||||
<data>
|
<data>
|
||||||
<!-- explicit list view definition -->
|
<!-- ospp.instance views -->
|
||||||
<!--
|
<record model="ir.ui.view" id="ospp_base.ospp_instance_list">
|
||||||
<record model="ir.ui.view" id="ospp_base.list">
|
<field name="name">OSPP Instance List View</field>
|
||||||
<field name="name">ospp_base list</field>
|
<field name="model">ospp.instance</field>
|
||||||
<field name="model">ospp_base.ospp_base</field>
|
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<tree>
|
<tree>
|
||||||
|
<field name="sequence" widget="handle"/>
|
||||||
|
<field name="code"/>
|
||||||
<field name="name"/>
|
<field name="name"/>
|
||||||
<field name="value"/>
|
<field name="type"/>
|
||||||
<field name="value2"/>
|
<field name="stack"/>
|
||||||
|
<field name="service_base_host"/>
|
||||||
|
<field name="activity_ids" widget="list_activity" optional="show"/>
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
-->
|
|
||||||
|
<record model="ir.ui.view" id="ospp_base.ospp_instance_form">
|
||||||
|
<field name="name">OSPP Instance Form View</field>
|
||||||
|
<field name="model">ospp.instance</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<form>
|
||||||
|
<sheet>
|
||||||
|
<group>
|
||||||
|
<group>
|
||||||
|
<field name="code"/>
|
||||||
|
<field name="name"/>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<field name="type"/>
|
||||||
|
<field name="stack"/>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<group>
|
||||||
|
<field name="management_api"/>
|
||||||
|
<field name="management_key"/>
|
||||||
|
<field name="management_secret"/>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<field name="service_base_host"/>
|
||||||
|
<field name="service_scheme"/>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<group>
|
||||||
|
<field name="dockerfile"/>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<field name="active"/>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
</sheet>
|
||||||
|
<div class="oe_chatter">
|
||||||
|
<field name="message_follower_ids"/>
|
||||||
|
<field name="activity_ids"/>
|
||||||
|
<field name="message_ids"/>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
<!-- actions opening views on models -->
|
<!-- actions opening views on models -->
|
||||||
<!--
|
<record model="ir.actions.act_window" id="ospp_base.ospp_instance_action_window">
|
||||||
<record model="ir.actions.act_window" id="ospp_base.action_window">
|
<field name="name">OSPP Instance Action Window</field>
|
||||||
<field name="name">ospp_base window</field>
|
<field name="res_model">ospp.instance</field>
|
||||||
<field name="res_model">ospp_base.ospp_base</field>
|
|
||||||
<field name="view_mode">tree,form</field>
|
<field name="view_mode">tree,form</field>
|
||||||
</record>
|
</record>
|
||||||
-->
|
|
||||||
|
|
||||||
<!-- server action to the one above -->
|
<!-- server action to the one above -->
|
||||||
<!--
|
<!--
|
||||||
|
@ -41,20 +87,10 @@
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<!-- Top menu item -->
|
<!-- Top menu item -->
|
||||||
<!--
|
<menuitem name="Instance" id="ospp_base.menu_ospp_instance_root"/>
|
||||||
<menuitem name="ospp_base" id="ospp_base.menu_root"/>
|
|
||||||
-->
|
|
||||||
<!-- menu categories -->
|
<!-- menu categories -->
|
||||||
<!--
|
|
||||||
<menuitem name="Menu 1" id="ospp_base.menu_1" parent="ospp_base.menu_root"/>
|
|
||||||
<menuitem name="Menu 2" id="ospp_base.menu_2" parent="ospp_base.menu_root"/>
|
|
||||||
-->
|
|
||||||
<!-- actions -->
|
<!-- actions -->
|
||||||
<!--
|
<menuitem name="Instance" id="ospp_base.menu_instance" parent="ospp_base.menu_ospp_instance_root"
|
||||||
<menuitem name="List" id="ospp_base.menu_1_list" parent="ospp_base.menu_1"
|
action="ospp_base.ospp_instance_action_window"/>
|
||||||
action="ospp_base.action_window"/>
|
|
||||||
<menuitem name="Server to list" id="ospp_base" parent="ospp_base.menu_2"
|
|
||||||
action="ospp_base.action_server"/>
|
|
||||||
-->
|
|
||||||
</data>
|
</data>
|
||||||
</odoo>
|
</odoo>
|
|
@ -11,6 +11,7 @@
|
||||||
|
|
||||||
'author': "Zhiguo Yuan",
|
'author': "Zhiguo Yuan",
|
||||||
'website': "https://www.newbizpaas.cn",
|
'website': "https://www.newbizpaas.cn",
|
||||||
|
'license': 'LGPL-3',
|
||||||
|
|
||||||
# Categories can be used to filter modules in modules listing
|
# Categories can be used to filter modules in modules listing
|
||||||
# Check https://github.com/odoo/odoo/blob/16.0/odoo/addons/base/data/ir_module_category_data.xml
|
# Check https://github.com/odoo/odoo/blob/16.0/odoo/addons/base/data/ir_module_category_data.xml
|
||||||
|
@ -23,7 +24,9 @@
|
||||||
|
|
||||||
# always loaded
|
# always loaded
|
||||||
'data': [
|
'data': [
|
||||||
# 'security/ir.model.access.csv',
|
'security/security_groups.xml',
|
||||||
|
'security/ir.model.access.csv',
|
||||||
|
'data/ir_sequence_data.xml',
|
||||||
'views/views.xml',
|
'views/views.xml',
|
||||||
'views/templates.xml',
|
'views/templates.xml',
|
||||||
],
|
],
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo noupdate="1">
|
||||||
|
|
||||||
|
<record id="seq_slide_channel" model="ir.sequence">
|
||||||
|
<field name="name">Slide Channel</field>
|
||||||
|
<field name="code">slide.channel</field>
|
||||||
|
<field name="prefix"></field>
|
||||||
|
<field name="padding">5</field>
|
||||||
|
<field name="company_id" eval="False"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="seq_channel_instance" model="ir.sequence">
|
||||||
|
<field name="name">Channel Instance</field>
|
||||||
|
<field name="code">channel.instance</field>
|
||||||
|
<field name="prefix"></field>
|
||||||
|
<field name="padding">5</field>
|
||||||
|
<field name="company_id" eval="False"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
|
@ -1,16 +1,20 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import uuid
|
||||||
from odoo import models, fields, api, _
|
from odoo import models, fields, api, _
|
||||||
|
|
||||||
|
|
||||||
class SlideChannel(models.Model):
|
class SlideChannel(models.Model):
|
||||||
_inherit = 'slide.channel'
|
_inherit = 'slide.channel'
|
||||||
|
|
||||||
code = fields.Char('Code', required=True, copy=False, readonly=True, default=lambda self: _('New'))
|
uuid = fields.Char('UUID', required=True, copy=False, readonly=True, default=lambda self: uuid.uuid4(),
|
||||||
|
tracking=True)
|
||||||
|
code = fields.Char('Code', required=True, copy=False, readonly=True, default=lambda self: _('New'), tracking=True)
|
||||||
instance_arrangement = fields.Selection(
|
instance_arrangement = fields.Selection(
|
||||||
[('share', 'Share'), ('exclude', 'Exclude'), ('both', 'Both'), ('no_need', 'No Need')],
|
[('share', 'Share'), ('exclude', 'Exclude'), ('both', 'Both'), ('no_need', 'No Need')], required=True,
|
||||||
string="Instance Arrangement")
|
default="no_need", string="Instance Arrangement")
|
||||||
share_instance_count = fields.Integer('Shared Instance Count')
|
|
||||||
|
shared_instance_count = fields.Integer('Shared Instance Count', default=1)
|
||||||
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")
|
||||||
|
|
||||||
|
@ -25,37 +29,46 @@ class SlideChannel(models.Model):
|
||||||
for vals in vals_list:
|
for vals in vals_list:
|
||||||
if 'company_id' in vals:
|
if 'company_id' in vals:
|
||||||
self = self.with_company(vals['company_id'])
|
self = self.with_company(vals['company_id'])
|
||||||
if vals.get('name', _("New")) == _("New"):
|
if vals.get('code', _("New")) == _("New"):
|
||||||
seq_date = None
|
seq_date = None
|
||||||
vals['name'] = self.env['ir.sequence'].next_by_code('slide.channel', sequence_date=seq_date) or _("New")
|
vals['code'] = self.env['ir.sequence'].next_by_code('slide.channel', sequence_date=seq_date) or _("New")
|
||||||
|
|
||||||
return super().create(vals_list)
|
return super().create(vals_list)
|
||||||
|
|
||||||
|
|
||||||
class ChannelInstance(models.Model):
|
class ChannelInstance(models.Model):
|
||||||
_name = "channel.instance"
|
_name = "channel.instance"
|
||||||
_inherit = ['mail.thread', 'mail.activity.mixin', 'image.mixin']
|
_inherit = ['mail.thread', 'mail.activity.mixin']
|
||||||
_description = "Channel Instance"
|
_description = "Channel Instance"
|
||||||
|
|
||||||
|
sequence = fields.Integer('Sequence', default=10)
|
||||||
|
uuid = fields.Char(
|
||||||
|
'UUID', required=True, copy=False, readonly=True, default=lambda self: uuid.uuid4(), tracking=True)
|
||||||
|
code = fields.Char('Code', required=True, copy=False, readonly=True, default=lambda self: _('New'), tracking=True)
|
||||||
channel_id = fields.Many2one('slide.channel', required=True, string="Channel")
|
channel_id = fields.Many2one('slide.channel', required=True, string="Channel")
|
||||||
instance_id = fields.Many2one('ospp.instance', required=True, string="Instance")
|
instance_id = fields.Many2one('ospp.instance', required=True, string="Instance")
|
||||||
name = fields.Char('Name', required=True)
|
name = fields.Char('Name', required=True)
|
||||||
code = fields.Char('Code', required=True, copy=False, readonly=True, default=lambda self: _('New'))
|
|
||||||
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")
|
||||||
active = fields.Boolean('Active', default=True)
|
active = fields.Boolean('Active', default=True)
|
||||||
|
|
||||||
# class ospp_slide(models.Model):
|
def name_get(self):
|
||||||
# _name = 'ospp_slide.ospp_slide'
|
# Prefetch the fields used by the `name_get`, so `browse` doesn't fetch other fields
|
||||||
# _description = 'ospp_slide.ospp_slide'
|
self.browse(self.ids).read(['name', 'code'])
|
||||||
|
return [(channel.id, '%s%s' % (channel.code and '[%s] ' % channel.code or '', channel.name))
|
||||||
|
for channel in self]
|
||||||
|
|
||||||
|
@api.model_create_multi
|
||||||
|
def create(self, vals_list):
|
||||||
|
for vals in vals_list:
|
||||||
|
if 'company_id' in vals:
|
||||||
|
self = self.with_company(vals['company_id'])
|
||||||
|
if vals.get('code', _("New")) == _("New"):
|
||||||
|
seq_date = None
|
||||||
|
vals['code'] = self.env['ir.sequence'].next_by_code(
|
||||||
|
'channel.instance', sequence_date=seq_date) or _("New")
|
||||||
|
|
||||||
|
return super().create(vals_list)
|
||||||
|
|
||||||
|
|
||||||
# name = fields.Char()
|
|
||||||
# value = fields.Integer()
|
|
||||||
# value2 = fields.Float(compute="_value_pc", store=True)
|
|
||||||
# description = fields.Text()
|
|
||||||
#
|
|
||||||
# @api.depends('value')
|
|
||||||
# def _value_pc(self):
|
|
||||||
# for record in self:
|
|
||||||
# record.value2 = float(record.value) / 100
|
|
||||||
|
|
|
@ -1,2 +1,5 @@
|
||||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||||
access_ospp_slide_ospp_slide,ospp_slide.ospp_slide,model_ospp_slide_ospp_slide,base.group_user,1,1,1,1
|
access_channel_instance_group_model_channel_instance_read,channel_instance_group_model_channel_instance_read,ospp_slide.model_channel_instance,group_model_channel_instance_read,1,0,0,0
|
||||||
|
access_channel_instance_group_model_channel_instance_write,channel_instance_group_model_channel_instance_write,ospp_slide.model_channel_instance,group_model_channel_instance_write,1,1,0,0
|
||||||
|
access_channel_instance_group_model_channel_instance_create,channel_instance_group_model_channel_instance_create,ospp_slide.model_channel_instance,group_model_channel_instance_create,1,0,1,0
|
||||||
|
access_channel_instance_group_model_channel_instance_delete,channel_instance_group_model_channel_instance_delete,ospp_slide.model_channel_instance,group_model_channel_instance_delete,1,1,1,1
|
||||||
|
|
|
|
@ -0,0 +1,49 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
<record model="ir.module.category" id="module_category_menu_channel_instance">
|
||||||
|
<field name="name">课训菜单</field>
|
||||||
|
<field name="description">课训菜单</field>
|
||||||
|
<field name="sequence">14</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="ir.module.category" id="module_category_model_channel_instance">
|
||||||
|
<field name="name">课训模型</field>
|
||||||
|
<field name="description">课训菜单</field>
|
||||||
|
<field name="sequence">14</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="ir.module.category" id="module_category_button_channel_instance">
|
||||||
|
<field name="name">课训按钮</field>
|
||||||
|
<field name="description">课训按钮</field>
|
||||||
|
<field name="sequence">14</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="group_model_channel_instance_read" model="res.groups">
|
||||||
|
<field name="name">channel.instance read</field>
|
||||||
|
<field name="category_id" ref="module_category_model_channel_instance"/>
|
||||||
|
<field name="users" eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="group_model_channel_instance_write" model="res.groups">
|
||||||
|
<field name="name">channel.instance write</field>
|
||||||
|
<field name="category_id" ref="module_category_model_channel_instance"/>
|
||||||
|
<field name="implied_ids" eval="[(4, ref('group_model_channel_instance_read'))]"/>
|
||||||
|
<field name="users" eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="group_model_channel_instance_create" model="res.groups">
|
||||||
|
<field name="name">channel.instance create</field>
|
||||||
|
<field name="category_id" ref="module_category_model_channel_instance"/>
|
||||||
|
<field name="implied_ids" eval="[(4, ref('group_model_channel_instance_read'))]"/>
|
||||||
|
<field name="users" eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="group_model_channel_instance_delete" model="res.groups">
|
||||||
|
<field name="name">channel.instance delete</field>
|
||||||
|
<field name="category_id" ref="module_category_model_channel_instance"/>
|
||||||
|
<field name="implied_ids" eval="[(4, ref('group_model_channel_instance_read'))]"/>
|
||||||
|
<field name="users" eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
|
@ -1,60 +1,50 @@
|
||||||
<odoo>
|
<odoo>
|
||||||
<data>
|
<data>
|
||||||
<!-- explicit list view definition -->
|
<!-- slide.channel view definition -->
|
||||||
<!--
|
<record model="ir.ui.view" id="view_slide_channel_form">
|
||||||
<record model="ir.ui.view" id="ospp_slide.list">
|
<field name="name">slide.channel.form.inherit</field>
|
||||||
<field name="name">ospp_slide list</field>
|
<field name="model">slide.channel</field>
|
||||||
<field name="model">ospp_slide.ospp_slide</field>
|
<field name="inherit_id" ref="website_slides.view_slide_channel_form"></field>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<tree>
|
<xpath expr="//page[@name='karma_rules']" position="after">
|
||||||
<field name="name"/>
|
<page string="Instance" name="instance">
|
||||||
<field name="value"/>
|
<group>
|
||||||
<field name="value2"/>
|
<group>
|
||||||
</tree>
|
<field name="instance_arrangement"/>
|
||||||
</field>
|
<field name="shared_instance_count"/>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<field name="instance_base"/>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
<field name="instance_ids" mode="tree,form">
|
||||||
|
<tree>
|
||||||
|
<field name="sequence" widget="handle"/>
|
||||||
|
<field name="code"/>
|
||||||
|
<field name="name"/>
|
||||||
|
<field name="service_url"/>
|
||||||
|
<field name="user_scope" widget="many2many_tags"/>
|
||||||
|
</tree>
|
||||||
|
<form>
|
||||||
|
<group>
|
||||||
|
<group>
|
||||||
|
<field name="code"/>
|
||||||
|
<field name="name"/>
|
||||||
|
<field name="instance_id"/>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<field name="service_name"/>
|
||||||
|
<field name="service_url"/>
|
||||||
|
<field name="active"/>
|
||||||
|
<field name="uuid" invisible="1"/>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
<field name="user_scope"/>
|
||||||
|
</form>
|
||||||
|
</field>
|
||||||
|
</page>
|
||||||
|
</xpath>
|
||||||
|
</field>
|
||||||
</record>
|
</record>
|
||||||
-->
|
|
||||||
|
|
||||||
<!-- actions opening views on models -->
|
|
||||||
<!--
|
|
||||||
<record model="ir.actions.act_window" id="ospp_slide.action_window">
|
|
||||||
<field name="name">ospp_slide window</field>
|
|
||||||
<field name="res_model">ospp_slide.ospp_slide</field>
|
|
||||||
<field name="view_mode">tree,form</field>
|
|
||||||
</record>
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!-- server action to the one above -->
|
|
||||||
<!--
|
|
||||||
<record model="ir.actions.server" id="ospp_slide.action_server">
|
|
||||||
<field name="name">ospp_slide server</field>
|
|
||||||
<field name="model_id" ref="model_ospp_slide_ospp_slide"/>
|
|
||||||
<field name="state">code</field>
|
|
||||||
<field name="code">
|
|
||||||
action = {
|
|
||||||
"type": "ir.actions.act_window",
|
|
||||||
"view_mode": "tree,form",
|
|
||||||
"res_model": model._name,
|
|
||||||
}
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!-- Top menu item -->
|
|
||||||
<!--
|
|
||||||
<menuitem name="ospp_slide" id="ospp_slide.menu_root"/>
|
|
||||||
-->
|
|
||||||
<!-- menu categories -->
|
|
||||||
<!--
|
|
||||||
<menuitem name="Menu 1" id="ospp_slide.menu_1" parent="ospp_slide.menu_root"/>
|
|
||||||
<menuitem name="Menu 2" id="ospp_slide.menu_2" parent="ospp_slide.menu_root"/>
|
|
||||||
-->
|
|
||||||
<!-- actions -->
|
|
||||||
<!--
|
|
||||||
<menuitem name="List" id="ospp_slide.menu_1_list" parent="ospp_slide.menu_1"
|
|
||||||
action="ospp_slide.action_window"/>
|
|
||||||
<menuitem name="Server to list" id="ospp_slide" parent="ospp_slide.menu_2"
|
|
||||||
action="ospp_slide.action_server"/>
|
|
||||||
-->
|
|
||||||
</data>
|
</data>
|
||||||
</odoo>
|
</odoo>
|
Loading…
Reference in New Issue