31 lines
2.4 KiB
Python
31 lines
2.4 KiB
Python
"""Settings schema registry.
|
|
|
|
The single source of truth for which runtime settings exist. The settings panel
|
|
is rendered from this list, so adding a new integration/provider only requires
|
|
adding entries here — no frontend or model changes.
|
|
|
|
Field types: ``string``, ``secret``, ``boolean``, ``choice``, ``number``.
|
|
"""
|
|
SETTINGS_SCHEMA = [
|
|
# --- Odoo integration ---
|
|
{"key": "odoo.enabled", "label": "Enable Odoo integration", "type": "boolean", "category": "Odoo", "default": False},
|
|
{"key": "odoo.url", "label": "Odoo URL", "type": "string", "category": "Odoo", "default": "", "placeholder": "https://odoo.example.com"},
|
|
{"key": "odoo.database", "label": "Database", "type": "string", "category": "Odoo", "default": ""},
|
|
{"key": "odoo.username", "label": "Username", "type": "string", "category": "Odoo", "default": ""},
|
|
{"key": "odoo.auth_method", "label": "Auth method", "type": "choice", "category": "Odoo", "options": ["password", "api_key"], "default": "password"},
|
|
{"key": "odoo.password", "label": "Password", "type": "secret", "category": "Odoo", "default": ""},
|
|
{"key": "odoo.api_key", "label": "API key", "type": "secret", "category": "Odoo", "default": ""},
|
|
# --- SMS provider ---
|
|
{"key": "sms.provider", "label": "SMS provider", "type": "choice", "category": "SMS", "options": ["mock", "http"], "default": "mock"},
|
|
{"key": "sms.endpoint", "label": "HTTP endpoint", "type": "string", "category": "SMS", "default": "", "placeholder": "https://sms.provider.example/api/send"},
|
|
{"key": "sms.api_key", "label": "API key", "type": "secret", "category": "SMS", "default": ""},
|
|
{"key": "sms.sender", "label": "Sender number", "type": "string", "category": "SMS", "default": ""},
|
|
# --- Reservation schedule (dynamic slot generation) ---
|
|
{"key": "reservation.working_hours_start", "label": "Working hours start", "type": "string", "category": "Reservation", "default": "08:00", "placeholder": "HH:MM"},
|
|
{"key": "reservation.working_hours_end", "label": "Working hours end", "type": "string", "category": "Reservation", "default": "17:00", "placeholder": "HH:MM"},
|
|
{"key": "reservation.slot_duration_minutes", "label": "Slot duration (minutes)", "type": "number", "category": "Reservation", "default": 30},
|
|
{"key": "reservation.default_capacity", "label": "Default capacity per slot", "type": "number", "category": "Reservation", "default": 2},
|
|
]
|
|
|
|
SCHEMA_BY_KEY = {entry["key"]: entry for entry in SETTINGS_SCHEMA}
|