from odoo import models, api from urllib.parse import urlencode class SFMessagefunctionalToolDismantle(models.Model): _name = 'sf.functional.tool.dismantle' _description = "刀具拆解单" _inherit = ['sf.functional.tool.dismantle', 'jikimo.message.dispatch'] @api.model def create(self, vals): # 判断是否为web页面创建请求 is_web_request = self.env.context.get('is_web_request', False) result = super(SFMessagefunctionalToolDismantle, self).create(vals) if is_web_request: return result for obj in result: if obj.dismantle_cause in ['寿命到期报废', '崩刀报废'] and obj.state == '待拆解': obj.add_queue('功能刀具寿命到期') return result def _get_message(self, message_queue_ids): contents = [] for message_queue_id in message_queue_ids: if message_queue_id.message_template_id.name == '功能刀具寿命到期': content = message_queue_id.message_template_id.content td_line = self.search([('id', '=', int(message_queue_id.res_id))]) url = self.request_url(int(message_queue_id.res_id)) content = content.replace('{{code}}', td_line.code).replace( '{{request_url}}', url).replace('{{name}}', td_line.name) contents.append(content) return contents, message_queue_ids def request_url(self, id): url = self.env['ir.config_parameter'].get_param('web.base.url') action_id = self.env.ref('sf_tool_management.sf_functional_tool_dismantle_view_act').id menu_id = self.env.ref('sf_tool_management.menu_sf_functional_tool_dismantle').id # 查询参数 params = {'id': id, 'menu_id': menu_id, 'action': action_id, 'model': 'sf.functional.tool.dismantle', 'view_type': 'form'} # 拼接查询参数 tool_string = urlencode(params) # 拼接URL full_url = url + "/web#" + tool_string return full_url def get_special_url(self, id, tmplate_name, special_name, model_id): menu_id = 0 action_id = 0 if tmplate_name == '调拨入库' and special_name == 'tool_expired_remind_special_url': menu_id = self.env.ref('mrp.menu_mrp_root').id action_id = self.env.ref('sf_tool_management.sf_functional_tool_dismantle_view_act').id return super(SFMessagefunctionalToolDismantle, self).get_url(id, menu_id, action_id, model_id) else: return super(SFMessagefunctionalToolDismantle, self).get_special_url(id, tmplate_name, special_name, model_id)