Public release from ruodoo-project: 19.0 - 2026-11-01 22:52:25 UTC

This commit is contained in:
CI Publish Bot
2026-11-01 22:54:30 +00:00
commit 26250aa580
2492 changed files with 664277 additions and 0 deletions

View File

@@ -0,0 +1,2 @@
from . import premium_service
from . import res_config_settings

View File

@@ -0,0 +1,57 @@
from odoo import fields, models, _
class PremiumService(models.Model):
_name = "premium.service"
_description = "Премиум: сервис/продукт"
_order = "sequence, name"
name = fields.Char(string="Название", required=True, translate=True)
sequence = fields.Integer(default=10)
category = fields.Selection(
selection=[
("services", "Услуги"),
("bank", "Банки, кассы, ЭДО"),
("wms", "WMS, логистика и ЧЗ"),
("marketplace", "Маркетплейсы"),
("industry", "Отраслевые"),
("other", "Другое"),
],
string="Категория",
required=True,
default="services",
translate=False,
)
short_description = fields.Text(string="Краткое описание", translate=True)
description = fields.Html(string="Описание", sanitize=True, translate=True)
author_url = fields.Char(string="Автор (URL)")
image = fields.Image(string="Изображение", max_width=1024, max_height=768)
# Контроль доступа (создание/изменение/удаление только администратором)
# обеспечивается ACL в security/ir.model.access.csv: base.group_user —
# только чтение, base.group_system — полный доступ. Ручные проверки в
# create/write/unlink были избыточным дублированием ACL (и давали raise
# в unlink), поэтому удалены — Odoo сам выбрасывает AccessError.
def action_open_form(self):
self.ensure_one()
return {
"type": "ir.actions.act_window",
"res_model": self._name,
"res_id": self.id,
"view_mode": "form",
"target": "current",
}
def action_open_order_wizard(self):
self.ensure_one()
return {
"name": _("Заказ сервиса"),
"type": "ir.actions.act_window",
"res_model": "premium.order.wizard",
"view_mode": "form",
"target": "new",
"context": {"default_service_id": self.id},
}

View File

@@ -0,0 +1,16 @@
from odoo import fields, models
class ResConfigSettings(models.TransientModel):
_inherit = "res.config.settings"
premium_project_api_url = fields.Char(
string="Project API URL",
config_parameter="premium.project_api_url",
help="Базовый URL инстанса Project, например https://project.example.com/newlead/ или только домен (маршрут добавится автоматически)",
)
premium_project_api_token = fields.Char(
string="Project API token",
config_parameter="premium.project_api_token",
help="Токен, который проверяет Project (в заголовке X-API-Key)",
)