53 lines
1.4 KiB
Python
53 lines
1.4 KiB
Python
from odoo import fields, models
|
|
|
|
from odoo.addons.rpc_helper.decorator import disable_rpc
|
|
|
|
|
|
@disable_rpc()
|
|
class CxTowerVault(models.Model):
|
|
"""Vault for storing secret data.
|
|
|
|
This model is used to store secret data for various resources.
|
|
|
|
The data is stored in the database and can be accessed using the
|
|
`_get_secret_values` method.
|
|
|
|
Do not use this model directly, use the `VaultMixin` instead.
|
|
"""
|
|
|
|
_name = "cx.tower.vault"
|
|
_description = "Cetmix Tower Vault"
|
|
|
|
res_model = fields.Char(
|
|
string="Resource Model",
|
|
required=True,
|
|
copy=False,
|
|
help="Model name of the resource that uses this vault",
|
|
)
|
|
res_id = fields.Many2oneReference(
|
|
string="Resource ID",
|
|
model_field="res_model",
|
|
help="ID of the resource that uses this vault",
|
|
required=True,
|
|
copy=False,
|
|
)
|
|
field_name = fields.Char(
|
|
required=True,
|
|
help="Name of the field that contains the secret value",
|
|
copy=False,
|
|
)
|
|
data = fields.Text(
|
|
string="Secret Data",
|
|
required=True,
|
|
copy=False,
|
|
help="The secret data to be stored in the vault",
|
|
)
|
|
|
|
_sql_constraints = [
|
|
(
|
|
"vault_unique_key",
|
|
"UNIQUE(res_model, res_id, field_name)",
|
|
"Each secret (model, record, field) must be unique in the vault.",
|
|
),
|
|
]
|