# -*- coding: utf-8 -*- import uuid from odoo import models, fields, api, _ class View(models.Model): _inherit = 'ir.ui.view' @api.model def _render_template(self, template, values=None): if template in ['web.login', 'web.webclient_bootstrap']: if not values: values = {} values["title"] = _("Newbiz") values["disable_footer"] = self.env['ir.config_parameter'].sudo().get_param("disable_footer", "") or True return super(View, self)._render_template(template, values) 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): _name = 'ospp.instance' _inherit = ['mail.thread', 'mail.activity.mixin'] _description = 'OSPP Instance' sequence = fields.Integer('Sequence', default=10) name = fields.Char("Name", tracking=True) 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) type = fields.Selection([('saas', 'SAAS'), ('paas', 'PAAS')], required=True, string="Type", tracking=True) stack = fields.Selection( [('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') service_base_host = fields.Char('Service Base Host', tracking=True) service_scheme = fields.Selection( [('http', 'HTTP'), ('https', 'HTTPS'), ('ws', 'WS'), ('wss', 'WSS')], required=True, string="Service Scheme", tracking=True) dockerfile = fields.Text("Dockerfile", tracking=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)