前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Odoo如何继承修改form视图中制作活动 mail.activity

Odoo如何继承修改form视图中制作活动 mail.activity

作者头像
用户6379025
发布于 2023-03-01 03:12:27
发布于 2023-03-01 03:12:27
48400
代码可运行
举报
文章被收录于专栏:莫凡莫凡
运行总次数:0
代码可运行

1.原有效果截图

https://img-blog.csdnimg.cn/211b9e64b55946c89d5cdc004e4e57c5.png

2.实现后的效果

3.在原有视图上增加不少内容,并且增加修改字段按钮,国内关于这方面的文档有点少,要研究一会才实现,

4,在原有模型上继续,增加字段

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from odoo import api, models, fields


class InheritMailActivity(models.Model):
    _inherit = 'mail.activity'

    progress = fields.Float('Progress')
    importance = fields.Selection([
        ('a', 'Low'), ('aa', 'Medium'),
        ('aaa', 'High'), ('aaaa', 'Highest'), ('aaaaa', 'MHighest')],
        'Importance', default='a')

    def _default_task(self):
        context = self.env.context
        model = context.get('default_res_model')
        res_id = context.get('default_res_id')
        from_model = self.env[model].sudo().browse(res_id)
        if model == 'sale.requirement.quotation':
            return from_model.name

    def _default_ref_no(self):
        context = self.env.context
        model = context.get('default_res_model')
        res_id = context.get('default_res_id')
        from_model = self.env[model].sudo().browse(res_id)
        obj  = {
            'sale.requirement.quotation':'order_ref',
            'sale.requirement':'order_ref',

        }
        if model == 'sale.requirement.quotation':
            return from_model.order_ref

    task = fields.Char('Task', default=_default_task)
    ref_no = fields.Char('Ref No', default=_default_ref_no)
    special_task = fields.Char('Special Task')
    submitter = fields.Char('Submitter')
    is_task = fields.Boolean('Is Task')

    def get_importance(self):
        arr = []
        for rec in self:
            for item in range(1,int(rec.importance)):
                arr.append(item)
        return arr

5.找到他们的原来的实现js文件

https://img-blog.csdnimg.cn/20c299e3202c42e496b1e149af434cd0.png

6,在他们基础实现继承和修改,本来使用extend 和include 来 实现继承 js 修改进度弹窗的功能发现,最后直接在原型上继承

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
odoo.define('quotation_information.extend_thread', function (require) {
    var Activity = require('mail.Activity');
    Activity.prototype.events[ 'click .o_activity_progress_edit'] = 'progressEdit'
    Activity.prototype.progressEdit =function(event,options){
        event.preventDefault();
        var self = this;
        var activity_id = $(event.currentTarget).data('activity-id');
        var progress = $(event.currentTarget).text()
        var action = _.defaults(options || {}, {
            type: 'ir.actions.act_window',
            res_model: 'product.quotation.qta',
            view_mode: 'form',
            view_type: 'form',
            views: [[false, 'form']],
            target: 'new',
            views_id:'email_progress_update',
            context: {
                default_active_ids: activity_id,
                default_progress:parseInt(progress),
                default_res_model: 'product.quotation.qta',
            },
            // res_id: activity_id,
        });

        return this.do_action(action, {
            on_close: function () {
                self._reload();
            },
        });
    }

})

6.form视图的继承代码 xml,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?>
<templates id="template" xml:space="preserve">
    <!-- Planned activities 的展示修改-->
    <t t-extend="mail.activity_items">
        <t t-jquery="div#o_chatter_planned_activities a.o_activity_info" t-operation="before">
            <t t-if="activity.user_quotation_ids">
                <t t-foreach="activity.user_quotation_ids" t-as="user_id">
                    <t t-esc="user_id[1]"/>
                </t>
            </t>
        </t>
    </t>
    <t t-extend="mail.activity_items">
        <t t-jquery="div#o_chatter_planned_activities div.o_thread_message_tools" t-operation="before">
           <div style="display:flex">
               <strong><span t-attf-class="o_activity_date o_activity_color_#{activity.state}"><t t-esc="activity.label_delay" /></span></strong>
                <span style="margin: 0 10px;">截止日期:<t t-esc="activity.date_deadline.format(datetime_format)" /></span>
             <div style="display: flex;">进度:<div class="progress" style="width:300px">
  <div class="progress-bar progress-bar-warning" role="progressbar" t-att-aria-valuenow="activity.progress" aria-valuemin="0" aria-valuemax="100" t-attf-style="width: {{activity.progress}}%;">
       <t t-esc="activity.progress" /> %
  </div>
</div> </div>

           </div>
            <div style="display:flex">
                <span > 重要程度:
                    <span style="position:relative">
                        <span>
                             <span t-foreach="[1,2,3,4,5]" t-as="item" class="glyphicon glyphicon-star-empty" style="color:yellow" >  </span>
                        </span>

                        <span style="color:yellow;position: absolute;left:0;top:0">
     <span  t-foreach="activity.importance" t-as="item" class="glyphicon glyphicon-star"  >  </span>
                        </span>

                    </span>



                </span>
                <span style="margin-left:10px" t-if="activity.special_task">
                   特殊任务:<t t-esc="activity.special_task or ''"/>
                </span>
                <span t-else="" style="margin-left:10px">
                    职能任务
                </span>
            </div>
        </t>
        <t t-jquery="div#o_chatter_planned_activities a.o_activity_edit" t-operation="after">
              <a href="#" class="btn btn-link btn-default text-muted btn-sm o_activity_progress_edit o_activity_link" t-att-data-progress="activity.progress" t-att-data-activity-id="activity.id">
                                <i class="fa fa-pencil"/> Edit Progress
                 </a>

        </t>
    </t>
</templates>

7.总结,Odoo 是一个十分强大的Erp系统,但是文档不全,学习起来费劲。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-02-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
odoo context上下文用法总结
Model.with_context([context][, **overrides]) -> records[源代码]
授客
2023/03/09
2.3K0
odoo ORM API学习总结兼orm学习教程
默认的,字段的标签(Lable,即用户可见字段名称)为对应字段名称开头字母改成大写后的值,可通过 string 字段属性改成修改字段Label
授客
2023/03/12
14K0
odoo ORM API学习总结兼orm学习教程
TienChin 活动管理-活动列表展示
程序员NEO
2023/10/12
6020
TienChin 活动管理-活动列表展示
给handsome模板添加服务器状态栏
原文地址:https://blog.ascv.cn/archives/542.html
傲绝
2023/03/08
6830
给handsome模板添加服务器状态栏
odoo 为可编辑列表视图字段搜索添加查询过滤条件
如下图,列表网仓记录详情页面(form视图),编辑内联视图中的货主记录,为货主和仓库字段搜索,添加过滤条件,具体如下:
授客
2023/05/24
1.4K0
odoo 为可编辑列表视图字段搜索添加查询过滤条件
大型项目技术栈第一讲 Vue.js的使用
Vue.js是一个构建数据驱动的 web 界面的渐进式框架。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。它不仅易于上手,还便于与第三方库或既有项目整合。
易兮科技
2020/09/27
5.2K0
大型项目技术栈第一讲  Vue.js的使用
odoo Actions学习总结
action可以存储在数据库中,也可以作为字典直接返回,例如按钮方法。所有Action都有两个强制属性:
授客
2023/03/09
2.9K0
odoo 开发入门教程系列-模型和基本字段
在上一章的末尾,我们创建一个odoo模块。然而,此时它仍然是一个空壳,不允许我们存储任何数据。在我们的房地产模块中,我们希望将与房地产相关的信息(名称(name)、描述(description)、价格(price)、居住面积(living area)…)存储在数据库中。odoo框架提供了数据库交互的工具
授客
2023/03/25
2.6K0
odoo 开发入门教程系列-模型和基本字段
《SSM篇》《整合SSM+Mybitas-plus+shiro+quartz容灾项目登录篇》
一、环境搭建 1.配置pom <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.
2020/10/29
9030
odoo 开发入门教程系列-模型之间的关系(Relations Between Models)
上一章介绍了为包含基本字段的模型创建自定义视图。然而,在任何真实的业务场景中,我们都需要不止一个模型。此外,模型之间的链接是必要的。人们可以很容易地想象一个模型包含客户,另一个模型则包含用户列表。你可能需要参考任何现有业务模型上的客户或用户。
授客
2023/04/01
4.8K0
odoo 开发入门教程系列-模型之间的关系(Relations Between Models)
odoo 开发入门教程系列-继承(Inheritance)
Odoo的一个强大方面是它的模块化。模块专用于业务需求,但模块也可以相互交互。这对于扩展现有模块的功能非常有用。例如,在我们的房地产场景中,我们希望在常规用户视图中直接显示销售人员的财产列表。
授客
2023/04/23
2.5K0
odoo 开发入门教程系列-继承(Inheritance)
前端MVC学习总结(四)——NodeJS+MongoDB+AngularJS+Bootstrap书店示例
摘要总结:本文介绍了如何使用AngularJS04进行图书信息管理系统开发。主要包括了图书信息录入、查询、修改和删除等功能。同时,还提供了编辑图书和删除图书的接口。通过使用AngularJS04的指令和指令模块,可以方便地实现图书信息管理系统。
张果
2018/01/04
2.4K0
前端MVC学习总结(四)——NodeJS+MongoDB+AngularJS+Bootstrap书店示例
原 荐 七牛 JSSDK 配置+常见问题
作者:汪娇娇 时间:2017年7月7日 一、铺垫 依靠七牛上传图片,其实有很多方法,先说说有哪些方法,以及这些方法各自的优缺点吧(移动端)。 way1:前端只负责选择图片,然后将图片传给服务端,服务端再传给七牛,再将地址返给前端展示。 优:可以控制上传图片到七牛的时机,不浪费七牛的存储空间; 缺:浪费自己服务器的带宽,并且周周转转,耗时长,麻烦。 way2:前端发通知让客户端来上传图片到七牛。 优:前端不需要处理太多东西,只需要给客户端发一个通知。 缺:选一张图片就上传了一张,如果多次选择,会浪费七牛存储空
jojo
2018/05/03
2.1K0
odoo 开发入门教程系列-一些用户界面
上一章,我们通过CSV文件添加了数据。当需要添加数据格式简单时,用CSV格式还是很方便的,当数据格式更复杂时(比如视图架构或者一个邮件模板),我们使用XML格式。比如包含HTML tags的 help field。虽然可以通过CSV文件加载这样的数据,但是使用XML更方便。
授客
2023/03/26
3.3K0
odoo 开发入门教程系列-一些用户界面
TienChin 活动管理-添加活动页面
直接将原有的 index.vue 的全部内容替换成下面的,这里先替换,我只是补齐文档,后面新模块开发我会一步一步进行记录起来:
程序员NEO
2023/10/12
7370
odoo wizard界面显示带复选框列表及勾选数据获取
如下图(非实际项目界面截图,仅用于介绍本文主题),打开记录详情页(form视图),点击某个按钮(图中的"选取ffers"按钮),弹出一个向导(wizard)界面,并将详情页中内联tree视图("Offers" Tab页)的列表记录展示到向导界面,且要支持复选框,用于选取目标记录,然执行目标操作。
授客
2023/05/24
5.6K0
odoo wizard界面显示带复选框列表及勾选数据获取
【玩转全栈】----Django模板的继承
大家会发现,由于定义了多个html文件,多个html文件中有很大冗余的代码,比如导航栏、引入文件代码等等,这样的话一个文件的代码量可能就非常大,可读性不高。有没有什么方法能简化操作呢,当然,可以通过模板间的继承语法。
用户11404404
2025/01/24
900
BootStrap基础
简单,直观,强悍的前端开发框架,让web开发更迅速,简单。来自Twitter,是目前很受欢迎的前端框架之一。 Bootstrap是基于HTML,CSS,Javascript的。
不愿意做鱼的小鲸鱼
2022/08/24
1K0
BootStrap基础
odoo 给列表视图添加按钮实现数据文件导入
odoo14\custom\estate\models\estate_customer.py
授客
2023/02/26
3.7K0
odoo 给列表视图添加按钮实现数据文件导入
【玩转全栈】----基于ModelForm完成用户管理页面
在学完前面的部门管理案例后,自己独立写出个用户管理应该不难,基本逻辑和大致代码都和前面一样,大家可以自己试试。
用户11404404
2025/01/24
1120
【玩转全栈】----基于ModelForm完成用户管理页面
相关推荐
odoo context上下文用法总结
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档