# -*- coding: utf-8 -*- from odoo import api, fields, models, _ from odoo.exceptions import AccessError 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) def write(self, vals): # Проверяем, является ли пользователь администратором if not self.env.user.has_group('base.group_system'): # Если не администратор, запрещаем запись raise AccessError("Только администратор может редактировать карточки сервисов.") return super(PremiumService, self).write(vals) @api.model def create(self, vals): # Проверяем, является ли пользователь администратором if not self.env.user.has_group('base.group_system'): # Если не администратор, запрещаем создание raise AccessError("Только администратор может создавать карточки сервисов.") return super(PremiumService, self).create(vals) def unlink(self): # Проверяем, является ли пользователь администратором if not self.env.user.has_group('base.group_system'): # Если не администратор, запрещаем удаление raise AccessError("Только администратор может удалять карточки сервисов.") return super(PremiumService, self).unlink() 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}, }