server-tools/base_sequence_default/models/base.py

38 lines
1.1 KiB
Python

# Copyright 2023 Moduon Team S.L.
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl-3.0)
from odoo import api, models
SEQUENCE_PREFIX = "base_sequence_default"
class Base(models.AbstractModel):
_inherit = "base"
@api.model
def default_get(self, fields_list):
"""Produce sequenced defaults if DB is configured for that."""
res = super().default_get(fields_list)
prefix = f"{SEQUENCE_PREFIX}.{self._name}.fields."
model_sequences = (
self.env["ir.sequence"]
.sudo()
.search(
[
("code", "=like", f"{prefix}%"),
("company_id", "in", [self.env.company.id, False]),
],
order="company_id",
)
)
sequences_by_field = {seq.code[len(prefix) :]: seq for seq in model_sequences}
for fname in fields_list:
try:
seq = sequences_by_field[fname]
except KeyError:
# No sequence? No problem
continue
res[fname] = seq.next_by_id()
return res