OSPPCloudUniversity3/addons/ospp_base/models/models.py

71 lines
3.1 KiB
Python

# -*- coding: utf-8 -*-
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):
_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', tracking=True)
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)