🎉 Initialize module repository
This commit is contained in:
59
models/res_config_settings.py
Normal file
59
models/res_config_settings.py
Normal file
@@ -0,0 +1,59 @@
|
||||
"""Settings for the MTG Scryfall connector."""
|
||||
|
||||
from odoo import api, fields, models
|
||||
from odoo.exceptions import UserError, ValidationError
|
||||
|
||||
from .constants import (
|
||||
DEFAULT_SCRYFALL_API_BASE_URL,
|
||||
DEFAULT_SCRYFALL_IMPORT_LANGUAGES,
|
||||
DEFAULT_SCRYFALL_TIMEOUT_SECONDS,
|
||||
DEFAULT_SCRYFALL_USER_AGENT,
|
||||
)
|
||||
|
||||
|
||||
class ResConfigSettings(models.TransientModel):
|
||||
"""Expose Scryfall connector defaults through Odoo settings."""
|
||||
|
||||
_inherit = "res.config.settings"
|
||||
|
||||
mtg_scryfall_api_base_url = fields.Char(
|
||||
string="Scryfall API Base URL",
|
||||
config_parameter="mvd_tcg_mtg_scryfall.api_base_url",
|
||||
default=DEFAULT_SCRYFALL_API_BASE_URL,
|
||||
)
|
||||
mtg_scryfall_timeout_seconds = fields.Integer(
|
||||
string="Scryfall Request Timeout (s)",
|
||||
config_parameter="mvd_tcg_mtg_scryfall.timeout_seconds",
|
||||
default=DEFAULT_SCRYFALL_TIMEOUT_SECONDS,
|
||||
)
|
||||
mtg_scryfall_user_agent = fields.Char(
|
||||
string="User Agent",
|
||||
config_parameter="mvd_tcg_mtg_scryfall.user_agent",
|
||||
default=DEFAULT_SCRYFALL_USER_AGENT,
|
||||
)
|
||||
mtg_scryfall_import_language_codes = fields.Char(
|
||||
string="Default Import Languages",
|
||||
config_parameter="mvd_tcg_mtg_scryfall.import_language_codes",
|
||||
default=",".join(DEFAULT_SCRYFALL_IMPORT_LANGUAGES),
|
||||
)
|
||||
mtg_scryfall_import_max_cards_per_set = fields.Integer(
|
||||
string="Default Card Limit per Set",
|
||||
config_parameter="mvd_tcg_mtg_scryfall.import_max_cards_per_set",
|
||||
default=0,
|
||||
)
|
||||
mtg_scryfall_import_include_tokens = fields.Boolean(
|
||||
string="Include Tokens by Default",
|
||||
config_parameter="mvd_tcg_mtg_scryfall.import_include_tokens",
|
||||
default=False,
|
||||
)
|
||||
|
||||
@api.constrains("mtg_scryfall_api_base_url")
|
||||
def _check_mtg_scryfall_api_base_url(self):
|
||||
"""Restrict the connector to trusted HTTPS Scryfall API hosts."""
|
||||
for settings in self:
|
||||
try:
|
||||
self.env["mvd.tcg.mtg.scryfall.api"]._validate_api_url(
|
||||
settings.mtg_scryfall_api_base_url
|
||||
)
|
||||
except UserError as exc:
|
||||
raise ValidationError(str(exc)) from exc
|
||||
Reference in New Issue
Block a user