🎉 Initialize module repository
This commit is contained in:
71
models/res_config_settings.py
Normal file
71
models/res_config_settings.py
Normal file
@@ -0,0 +1,71 @@
|
||||
"""Settings for the OpenAI-backed MTG deck analysis layer."""
|
||||
|
||||
from odoo import api, fields, models
|
||||
from odoo.exceptions import UserError, ValidationError
|
||||
|
||||
from .constants import (
|
||||
DEFAULT_MTG_OPENAI_API_BASE_URL,
|
||||
DEFAULT_MTG_OPENAI_ALTERNATIVE_CANDIDATE_LIMIT,
|
||||
DEFAULT_MTG_OPENAI_FILL_BATCH_SIZE,
|
||||
DEFAULT_MTG_OPENAI_FILL_CANDIDATE_LIMIT,
|
||||
DEFAULT_MTG_OPENAI_MODEL_NAME,
|
||||
DEFAULT_MTG_OPENAI_REQUEST_TIMEOUT_SECONDS,
|
||||
DEFAULT_MTG_OPENAI_ROLE_BATCH_SIZE,
|
||||
)
|
||||
|
||||
|
||||
class ResConfigSettings(models.TransientModel):
|
||||
"""Expose OpenAI deck-analysis defaults through Odoo settings."""
|
||||
|
||||
_inherit = "res.config.settings"
|
||||
|
||||
mtg_openai_api_key = fields.Char(
|
||||
string="API Key",
|
||||
config_parameter="mvd_tcg_mtg_deck_openai.api_key",
|
||||
)
|
||||
mtg_openai_model_name = fields.Char(
|
||||
string="Default Model",
|
||||
config_parameter="mvd_tcg_mtg_deck_openai.model_name",
|
||||
default=DEFAULT_MTG_OPENAI_MODEL_NAME,
|
||||
)
|
||||
mtg_openai_api_base_url = fields.Char(
|
||||
string="OpenAI API Base URL",
|
||||
config_parameter="mvd_tcg_mtg_deck_openai.api_base_url",
|
||||
default=DEFAULT_MTG_OPENAI_API_BASE_URL,
|
||||
)
|
||||
mtg_openai_request_timeout_seconds = fields.Integer(
|
||||
string="OpenAI Request Timeout (s)",
|
||||
config_parameter="mvd_tcg_mtg_deck_openai.request_timeout_seconds",
|
||||
default=DEFAULT_MTG_OPENAI_REQUEST_TIMEOUT_SECONDS,
|
||||
)
|
||||
mtg_openai_role_batch_size = fields.Integer(
|
||||
string="Role Analysis Batch Size",
|
||||
config_parameter="mvd_tcg_mtg_deck_openai.role_batch_size",
|
||||
default=DEFAULT_MTG_OPENAI_ROLE_BATCH_SIZE,
|
||||
)
|
||||
mtg_openai_fill_candidate_limit = fields.Integer(
|
||||
string="Deck Fill Candidate Limit",
|
||||
config_parameter="mvd_tcg_mtg_deck_openai.fill_candidate_limit",
|
||||
default=DEFAULT_MTG_OPENAI_FILL_CANDIDATE_LIMIT,
|
||||
)
|
||||
mtg_openai_fill_batch_size = fields.Integer(
|
||||
string="Deck Fill Batch Size",
|
||||
config_parameter="mvd_tcg_mtg_deck_openai.fill_batch_size",
|
||||
default=DEFAULT_MTG_OPENAI_FILL_BATCH_SIZE,
|
||||
)
|
||||
mtg_openai_alternative_candidate_limit = fields.Integer(
|
||||
string="Alternative Candidate Limit",
|
||||
config_parameter="mvd_tcg_mtg_deck_openai.alternative_candidate_limit",
|
||||
default=DEFAULT_MTG_OPENAI_ALTERNATIVE_CANDIDATE_LIMIT,
|
||||
)
|
||||
|
||||
@api.constrains("mtg_openai_api_base_url")
|
||||
def _check_mtg_openai_api_base_url(self):
|
||||
"""Restrict the OpenAI connector to the official HTTPS API host."""
|
||||
for settings in self:
|
||||
try:
|
||||
self.env["mvd.tcg.deck"]._mtg_openai_validate_base_url(
|
||||
settings.mtg_openai_api_base_url
|
||||
)
|
||||
except UserError as exc:
|
||||
raise ValidationError(str(exc)) from exc
|
||||
Reference in New Issue
Block a user