Public release from ruodoo-project: 19.0 - 2026-11-01 22:52:25 UTC
This commit is contained in:
2
premium_client/models/__init__.py
Normal file
2
premium_client/models/__init__.py
Normal file
@@ -0,0 +1,2 @@
|
||||
from . import premium_service
|
||||
from . import res_config_settings
|
||||
57
premium_client/models/premium_service.py
Normal file
57
premium_client/models/premium_service.py
Normal 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},
|
||||
}
|
||||
16
premium_client/models/res_config_settings.py
Normal file
16
premium_client/models/res_config_settings.py
Normal 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)",
|
||||
)
|
||||
Reference in New Issue
Block a user