ODOO18菜鸟二次开发系列(5)-修改默认视图以及默认搜索

前言

原打算将联系人公司用户与个人用户分开两个菜单按钮,由于折腾半天没搞清楚如何base.view_partner_form运行机制,同时发现筛选功能非常好用,定义筛选视图即可非常好的解决分类问题。同时新增的timeline视图需要在项目管理中作为默认视图以提高效率,因此先研究修改默认视图以及默认搜索。


一、本章目标

由上图修改为下图。
在这里插入图片描述
改为点击项目自动默显示timeline甘特图
在这里插入图片描述

二、修改默认视图

1.修改view mode 顺序

方法一:easy 模式,在需要修改的页码点debug的动作,最底下有顺序。
在这里插入图片描述
在这里插入图片描述
直接拖动修改
方案二:hard模式:在view文件内改。

<!--   XD20250411激活窗口添加timeline按钮,为了让timeline显示子任务domain删除原('display_in_project', '=', True)限制,由具体视图自行判断 -->
    <record id="project.act_project_project_2_project_task_all" model="ir.actions.act_window">
        <field   name="view_mode">timeline,kanban,list,form,calendar,pivot,graph,activity</field>
        <field name="domain">[('project_id', '=', active_id)]</field>

然后修改sequence值

代码如下(示例):

        <record id="project.project_task_kanban_action_view" model="ir.actions.act_window.view">
            <!-- 将 sequence 字段的值从原来的 10 修改为 21 -->
            <field name="sequence" eval="21"/>
            <!-- 注意:这里不需要写其他字段,Odoo 会自动合并修改 -->
        </record>
    <!-- 为 act_project_project_2_project_task_all 动作定义 Timeline 视图的顺序 -->
    <record id="project_task_timeline_action_view" model="ir.actions.act_window.view">
        <!-- 设置顺序为 10,使其排在前面 -->
        <field name="sequence" eval="10"/>
        <!-- 指定视图模式为 timeline -->
        <field name="view_mode">timeline</field>
        <!-- 关联到目标窗口动作 -->
        <field name="act_window_id" ref="project.act_project_project_2_project_task_all"/>
    </record>

该处使用的url网络请求的数据。


三、修改视图的默认搜索

1.修改默认分组

打开开发者模式,点击视图xml结构,
在这里插入图片描述
搜索表头比较特殊的代码,基本能一次性找到 在这里插入图片描述

修改这里的default group by 可以单独影响 kanban的分组

        <record model="ir.ui.view" id="view_task_kanban">
            <field name="name">project.task.kanban</field>
            <field name="model">project.task</field>
            <field name="arch" type="xml">
                <kanban
                    highlight_color="color"
                    default_group_by="stage_id"

继续修改list的默认分组,xml找到default_order="priority desc, sequence, state, date_deadline asc, id desc
在这里插入图片描述
全部源代码搜到三处,判断就是这段。但并没有js_class=“project_task_list” default_group_by=“stage_id”,

        <record id="project_task_view_tree_main_base" model="ir.ui.view">
            <field name="name">project.task.view.list.main.base</field>
            <field name="model">project.task</field>
            <field name="arch" type="xml">
                <list string="Tasks" sample="1" default_order="priority desc, sequence, state, date_deadline asc, id desc">
                    <field name="sequence" readonly="1" column_invisible="True"/>
                    <field name="allow_milestones" column_invisible="True"/>
                    <field name="subtask_count" column_invisible="True"/>
                    <field name="closed_subtask_count" column_invisible="True"/>
                    <field name="id" optional="hide" options="{'enable_formatting': False}"/>
                    <field name="priority" widget="priority" nolabel="1" width="20px"/>
                    <field name="state" widget="project_task_state_selection" nolabel="1" width="20px" options="{'is_toggle_mode': false}"/>
                    <field name="name" string="Title" widget="name_with_subtask_count"/>
                    <field name="project_id" widget="project" optional="show" options="{'no_open': 1}" readonly="1" column_invisible="context.get('default_project_id')"/>
                    <field name="milestone_id" invisible="not allow_milestones" context="{'default_project_id': project_id}" groups="project.group_project_milestone" optional="hide"/>
                    <field name="partner_id" optional="hide" widget="res_partner_many2one" invisible="not project_id" options="{'no_open': True}"/>
                    <field name="user_ids" optional="show" widget="many2many_avatar_user"/>
                    <field name="company_id" groups="base.group_multi_company" optional="show" column_invisible="context.get('default_project_id')" options="{'no_create': True}"/>
                    <field name="company_id" column_invisible="True"/>
                    <field name="date_deadline" optional="hide" widget="remaining_days" invisible="state in ['1_done', '1_canceled']"/>
                    <field name="tag_ids" widget="many2many_tags" options="{'color_field': 'color'}" optional="show" context="{'project_id': project_id}"/>
                    <field name="date_last_stage_update" optional="hide"/>
                    <field name="stage_id" column_invisible="context.get('set_visible', False)" optional="show"/>
                </list>
            </field>
        </record>

考虑是继承修改,查看在这里插入图片描述
在这里插入图片描述
找到对应继承

        <record id="view_task_tree2" model="ir.ui.view">
            <field name="name">project.task.list</field>
            <field name="model">project.task</field>
            <field name="inherit_id" ref="project_task_view_tree_base"/>
            <field name="mode">primary</field>
            <field name="priority">2</field>
            <field name="arch" type="xml">
                <list position="attributes">
                    <attribute name="js_class">project_task_list</attribute>
                    <attribute name="default_group_by">stage_id</attribute>
                </list>
            </field>
        </record>

修改此地default_group_by值

2.修改默认筛选

在这里插入图片描述
debug的动作有domain设置,可以加入[(‘is_company’, ‘=’, True)]等过滤条件。问题是操作员无法撤销。另外可以直接搜索菜单设置默认搜索,比较简单请各位自行研究。

3.取消浏览器输入框自动填充(20250426更新)

在点击搜索input框时,浏览器默认会弹出“保存信息”进行自动填充。如下图
在这里插入图片描述
这样会遮挡筛选器,影响使用。
在我们的引用了web模块的自定义视图内增加以下内容将autocomplete设置为off解决此问题:

    <templates xml:space="preserve">
        <t t-name="custom_crm.SearchBar.Input" t-inherit="web.SearchBar.Input" t-inherit-mode="extension">
            <xpath expr="//input" position="attributes">
                <attribute name="autocomplete">off</attribute>
            </xpath>
        </t>
    </templates>

总结

`
本章主要介绍 Odoo 项目视图修改方法。修改默认视图可通过页面调试拖动或修改 view 文件调整 view mode 顺序;修改视图默认搜索则需在开发者模式下,找到对应视图 XML 代码,修改默认分组相关字段来实现。将autocomplete设置为off解决遮挡。

03-23
### Odoo 18 的版本特性与功能 Odoo 是一款强大的企业资源计划 (ERP) 软件,支持多种业务流程管理需求。Odoo 18 提供了许多新特性和改进的功能,旨在提升用户体验并优化企业的运营效率。 #### 新增的顶栏设计 Odoo 18 引入了一个全新的顶栏界面,使用户能够更方便地浏览相关的项目记录,并通过基于员工技能的搜索机制找到适合的任务执行者[^1]。这一改进显著提高了团队协作的工作流效率。 #### 增强的会计功能 在财务领域,Odoo 18 对会计模块进行了多项增强,提供了更加灵活和精确的数据处理能力。这些改进有助于简化复杂的财务管理过程,减少人为错误的发生率。 --- ### 下载 Odoo 18 官方下载地址可以通过访问 Odoo 官方网站获取社区版或企业版链接。需要注意的是,企业版通常需要订阅许可证才能完全激活所有高级功能。以下是具体的下载路径: - **社区版**: 可免费从官网直接下载。 - **企业版**: 需要注册账户并通过验证后获得授权文件。 具体步骤如下所示: ```bash wget https://www.odoo.com/download -O odoo_download.html ``` 上述命令会抓取网页内容以便进一步解析可用镜像站点列表。 --- ### Ubuntu 和 Windows 系统下的安装教程 #### 在 Ubuntu 上安装 Odoo 18 对于 Linux 用户来说,在 Ubuntu 平台上部署 Odoo 更加便捷高效。下面是一个标准配置指南来完成整个环境搭建工作: ##### 准备阶段 确保操作系统是最新的状态非常重要。如果当前使用的发行版本较旧,则建议先行升级至稳定分支如 `Ubuntu 22.04 LTS`[^2]: ```bash sudo apt update && sudo apt upgrade -y ``` 接着安装必要的依赖包以及 Python 开发工具链: ```bash sudo apt install python3-pip build-essential wget git libpq-dev curl node-less -y ``` ##### 数据库设置 由于 Odoo 使用 PostgreSQL 存储数据表结构及相关事务信息,因此需单独创建专用实例用于承载应用层交互请求: ```bash sudo apt install postgresql -y sudo su - postgres -c "createuser --createdb --username=postgres --no-password --no-superuser odoo" sudo su - postgres -c "createdb -O odoo odoo" ``` ##### 主程序克隆与服务启动 最后一步是从 Git 远程仓库拉取目标标签对应的源码压缩包或者直接利用 pip 工具在线安装已打包好的二进制形式分发包: ```bash git clone --depth 1 --branch 18.0 https://github.com/odoo/odoo.git /opt/odoo18/ cd /opt/odoo18/ pip3 install -r requirements.txt ``` 定义 systemd 单元文件实现后台守护进程控制: ```ini [Unit] Description=Odoo Enterprise Business Applications After=postgresql.service [Service] Type=simple User=odoo Group=odoo ExecStart=/usr/bin/python3 /opt/odoo18/odoo-bin --config=/etc/odoo.conf --logfile=/var/log/odoo/odoo.log Restart=always StandardOutput=syslog StandardError=syslog SyslogIdentifier=odoo18 [Install] WantedBy=multi-user.target ``` 保存退出编辑器之后重新加载配置并启用该服务即可生效: ```bash systemctl daemon-reload systemctl start odoo18 systemctl enable odoo18 ``` #### 在 Windows 上安装 Odoo 18 虽然原生支持主要集中在类 Unix 架构之上,不过借助虚拟机技术或是 WSL(Windows Subsystem For Linux),同样可以顺利完成跨平台移植操作。这里仅列举部分关键环节作为参考依据之一: 1. 安装 VirtualBox 或 VMware Player 创建独立运行空间; 2. 导入预构建映像档(ISO 文件)完成基础初始化设定; 3. 执行前述相同脚本序列直至最终成果展示页面呈现为止。 --- ### 总结 综上所述,无论是针对开发者还是终端使用者而言,Odoo 18 都展现了极大的潜力去满足多样化场景诉求的同时保持高度可定制化的灵活性优势][^[^34]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值