odoo17 | 视图操作按钮

前言

到目前为止,我们主要通过声明字段和视图来构建我们的模块。在上一章中,我们刚刚通过计算字段和onchanges引入了业务逻辑。在任何真实的业务场景中,我们都会希望将一些业务逻辑链接到操作按钮。在我们的房地产示例中,我们希望能够:

  • 取消或设置已售出属性

  • 接受或拒绝报价

有人可能会说,我们可以通过手动更改状态来做这些事情,但这并不方便。此外,我们想添加一些额外的处理:当接受要约时,我们想设置房产的销售价格和买方。

Object Type

目标

  • 设置取消或将房产设置为已售出:
    在这里插入图片描述
    已取消的属性不能出售,已出售的属性也不能取消。为了清晰起见,在视图上添加了state字段。

  • 设置接受或拒绝一份工作:
    在这里插入图片描述

  • 一旦报价被接受,卖方和买方的价格应确定:
    在这里插入图片描述
    在我们的房地产模块中,我们希望将业务逻辑与一些按钮链接起来。最常见的做法是:

  • 在表单视图中添加一个按钮,例如在表单视图的头部:

<form>
    <header>
        <button name="action_do_something" type="object" string="Do Something"/>
    </header>
    <sheet>
        <field name="name"/>
    </sheet>
</form>

并将此按钮链接到业务逻辑代码(即 py模型的方法中)中:

from odoo import fields, models

class TestAction(models.Model):
    _name = "test.action"

    name = fields.Char()

    def action_do_something(self):
        for record in self:
            record.name = "Something"
        return True

通过将 type=“object” 赋值给按钮,Odoo框架将在给定模型上执行一个name=“action_do_something” 的Python方法。

要注意的第一个重要细节是,我们的方法名没有下划线(_)作为前缀。这使得我们的方法成为一个公共方法,可以直接从Odoo接口调用(通过RPC调用)。到目前为止,我们创建的所有方法(compute, onchange)都是在内部调用的,所以我们使用了带有下划线前缀的私有方法。应该始终将方法定义为私有的,除非需要从用户界面调用它们。

还要注意,我们在self上循环。总是假设一个方法可以在多个记录上调用;这有利于可重用性。

最后,公共方法应该总是返回一些东西,以便可以通过XML-RPC调用它。当有疑问时,只需返回True。

在Odoo源代码中有数百个示例。视图中的这个按钮和它对应的Python方法就是一个例子

 <button name="action_set_won_rainbowman" string="Mark Won"
                            type="object" class="oe_highlight"
                            attrs="{'invisible': ['|','|', ('active','=',False), ('probability', '=', 100), ('type', '=', 'lead')]}"/>

对应的Python方法

 def action_set_won_rainbowman(self):
        self.ensure_one()
        self.action_set_won()

        message = self._get_rainbowman_message()
        if message:
            return {
                'effect': {
                    'fadeout': 'slow',
                    'message': message,
                    'img_url': '/web/image/%s/%s/image_1024' % (self.team_id.user_id._name, self.team_id.user_id.id) if self.team_id.user_id.image_1024 else '/web/static/src/img/smile.svg',
                    'type': 'rainbow_man',
                }
            }
        return True

Action Type

之前我们创建了一个菜单操作(action)链接到菜单的动作。

<menuitem id="properties_menu_action" name="广告信息" action="action_estate_property"/>

你可能想知道是否可以将操作(action)链接到按钮。一种方法是:

<button type="action" name="%(action_estate_property)d" string="My Action"/>

我们使用 type=“action” ,并在name中引用外部标识符。

在下一章中,我们将看到如何防止在Odoo中编码不正确的数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/296486.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

案例092:基于微信小程序的二手闲置交易市场系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

Linux学习之系统编程5(信号)

写在前面&#xff1a; 我的Linux的学习之路非常坎坷。第一次学习Linux是在大一下的开学没多久&#xff0c;结果因为不会安装VMware就无疾而终了&#xff0c;可以说是没开始就失败了。第二次学习Linux是在大一下快放暑假&#xff08;那个时候刚刚过完考试周&#xff09;&#xf…

2024年初级会计资格考试报名照片要求,千万不要直接上传哦

2024年初级会计资格考试照片要求&#xff0c;千万不要直接上传哦。 第一步&#xff1a;支付宝搜索"亿鸣证件照"或者微信搜索”随时照“&#xff0c;然后进入小程序的搜索列表搜索"初级会计"&#xff0c;然后上传一张生活照或者自拍一张&#xff0c;就能制…

【计算机毕业设计】SSM企业工资管理系统

项目介绍 本项目包含管理员与普通员工两种角色&#xff0c; 管理员角色包含以下功能&#xff1a; 管理员登录,员工管理,部门管理,岗位管理,职称管理,工龄奖金管理,工资项管理,考勤管理,工资查询,统计图表等功能。 员工角色包含以下功能&#xff1a; 员工登录,个人信息管理…

lotus-farcaster 搭建

lotus 开源监控仪表盘 安装修改配置文件监听钱包地址指定安装目录可以修改脚本指定miner配置文件路径执行安装脚本 修改修改端口为9200修改安装脚本 9100改为9200&#xff0c;重新安装修改检查脚本 端口 9200&#xff0c;重新安装 安装成功prometheus 安装创建存储目录 配置文件…

SESV:通过预测和纠错实现精确的医学图像分割

SESV: Accurate Medical Image Segmentation by Predicting and Correcting Errors SESV&#xff1a;通过预测和纠错实现精确的医学图像分割背景贡献实验方法Thinking SESV&#xff1a;通过预测和纠错实现精确的医学图像分割 286 IEEE TRANSACTIONS ON MEDICAL IMAGING, VOL. …

[C#]基于deskew算法实现图像文本倾斜校正

【算法介绍】 让我们开始讨论Deskeweing算法的一般概念。我们的主要目标是将旋转的图像分成文本块&#xff0c;并确定它们的角度。为了让您详细了解我将使用的方法&#xff1a; 照常-将图像转换为灰度。应用轻微的模糊以减少图像中的噪点。现在&#xff0c;我们的目标是找到带…

2023 hnust 湖南科技大学 大四上 商务智能 课程 期末考试 复习资料

前言 《听了课就能及格》由于老师发的复习PPT内容过多&#xff08;近两万字&#xff09;&#xff0c;因此在此大幅删减由于老师透露太少&#xff0c;删减全凭主观意志&#xff0c;请谨慎参考&#xff01;&#xff01;&#xff01;猜测逻辑 过于细碎概念的不考&#xff08;不算…

Vue2 - 数据响应式原理

目录 1&#xff0c;总览2&#xff0c;Observer3&#xff0c;Dep4&#xff0c;Watcher5&#xff0c;Schedule 1&#xff0c;总览 vue2官网参考 简单介绍下上图流程&#xff1a;以 Data 为中心来说&#xff0c; Vue 会将传递给 Vue 实例的 data 选项&#xff08;普通 js 对象&a…

HackTheBox - Medium - Linux - Awkward

Awkward Awkward 是一款中等难度的机器&#xff0c;它突出显示了不会导致 RCE 的代码注入漏洞&#xff0c;而是 SSRF、LFI 和任意文件写入/追加漏洞。此外&#xff0c;该框还涉及通过不良的密码做法&#xff08;例如密码重用&#xff09;以及以纯文本形式存储密码来绕过身份验…

Python轴承故障诊断 (九)基于VMD+CNN-BiLSTM的故障分类

往期精彩内容&#xff1a; Python-凯斯西储大学&#xff08;CWRU&#xff09;轴承数据解读与分类处理 Python轴承故障诊断 (一)短时傅里叶变换STFT Python轴承故障诊断 (二)连续小波变换CWT_pyts 小波变换 故障-CSDN博客 Python轴承故障诊断 (三)经验模态分解EMD_轴承诊断 …

算法训练day60|单调栈part0

参考&#xff1a;代码随想录 84.柱状图中最大的矩形 要求当前柱形的左右两边第一个比他小的位置 对于高度为5的柱子&#xff08;index为2&#xff09; mid 他的左边第一个比他小的柱子为1&#xff0c;index为1 left 他的右边第一个比他小的柱子高度为2&#xff0c;index为4…

场景识别与词袋模型

目录 1. 任务要求2. 数据集3. 实现算法3.1 目标实现3.2 Tiny images representation3.3 SIFT特征词袋表示3.4 相关算法 4. 实验结果4.1 基础结果展示4.2 算法超参的影响4.2.1 Tiny images size4.2.2 Vocabulary size 4.3 其他结果 5. 源代码 1. 任务要求 输入&#xff1a;给定…

redis黑马点评项目启动指南(含mac m1pro | windows11 wsl2 ubuntu环境配置 持续更新中~)

redis黑马点评项目学习笔记 mac m1pro windows 含项目配置教学 mac M1pro环境配置windows11 wsl2 ubuntu 环境配置一.短信登录1. 1发送验证码1.2短信登录注册1.3登录校验拦截器补缺Cookie Session Token1.4基于redistoken认证实现短信登陆1.5完善token认证的刷新机制 2.商户查询…

Redis 给集合元素单独设置过期

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、场景 1.1 消费队列 1.2 Redis实现 二、常见的方案 2.1 为单独的 field 设置过期 2.2 设置整体过期时间 2.3 zset 结合 sc…

项目实战:数字孪生可视化大屏幕,实现生产过程实时监控

项目介绍 智慧工厂数据可视化系统&#xff0c;融合工业大数据、物联网、人工智能等各类信息技术&#xff0c;整合厂区现有信息系统的数据资源&#xff0c;实现数字孪生工厂、设备运维监测、智能管网监测、综合安防监测、便捷通行监测、能效管理监测、生产管理监测、仓储物流监…

【数据分析实战】冰雪大世界携程景区评价信息情感分析采集词云

文章目录 引言数据采集数据集展示数据预处理 数据分析评价总体情况分析本人浅薄分析 各游客人群占比分析本人浅薄分析 各评分雷达图本人浅薄分析 差评词云-可视化本人浅薄分析 好评词云-可视化本人浅薄分析 综合分析写在最后 今年冬天&#xff0c;哈尔滨冰雪旅游"杀疯了&q…

技术学习|CDA level I 业务分析方法

业务分析方法有三个主要构成部分&#xff1a;业务指标分析、业务模型分析及业务分析方法。 业务指标分析是发现业务问题的核心方法&#xff1a;用于通用指标和场景指标的计算及分析方法&#xff0c;以及指标体系的设计与应用方法。业务模型是从一系列业务行为中抽象出来的信息…

请你列出逻辑电路中的24种表达式

随着时代发展&#xff0c;数字电路的使用频率越来越高&#xff0c;完全不低于模拟电路&#xff0c;因此从事数字电路的工程师越来越多&#xff0c;如果你想成为一名优秀的数字工程师&#xff0c;一定要学会下面的逻辑电路表达式&#xff01; 1、基本逻辑运算与运算 (AND): A AN…

04 帧 Frame

文章目录 04 帧 Frame4.1 相机相关信息4.2 特征点提取4.2.1 特征点提取 ExtractORB()4.3 ORB-SLAM2对双目/RGBD特征点的预处理4.3.1 双目视差公式4.3.2 双目图像特征点匹配 ComputeStereoMatches()4.3.3 根据深度信息构造虚拟右目图像&#xff1a;ComputeStereoFromRGBD() 4.4 …