首页 > 其他分享 >odoo 开发入门教程系列-一个新应用

odoo 开发入门教程系列-一个新应用

时间:2023-06-11 12:37:32浏览次数:51  
标签:xml __ 系列 views 入门教程 模块 odoo data crm

一个新应用

房地产广告模块

假设需要开发一个房地产模块,该模块覆盖未包含在标准模块集中特定业务领域。

以下为包含一些广告的主列表视图

odoo 开发入门教程系列-一个新应用_CRM

form视图顶层区域概括了房产的重要信息,比如name,Property Type, Postcode等等。

列表记录详情页中,第一个tab包含了房产的描述信息,比如:bedrooms, Living area, Garage,Garden

odoo 开发入门教程系列-一个新应用_css_02

第二个tab页,列出了房产的报价。我们可以在这里看到,潜在买家可以提供高于或低于预期售价的报价,取决于卖方是否接受报价。

odoo 开发入门教程系列-一个新应用_css_03

准备插件目录

参考: 和该主题相关的文档可参考 manifest.

Goal: 该小节的目标是让odoo识别我们的新模块,一个空壳。它将显示在Apps

创建模块的第一步:新建一个目录。为了让开发更轻松,建议首先创建目录 /home/$USER/src/custom,然后在该目录中添加待创建的新模块对应的目录(本例为 estate)。

一个模块至少包含两个文件: 一个__manifest__.py 文件和一个 __init__.py 文件。__init__.py 目前可以保持为空,下一章我们在回过头理它。而 __manifest__.py 文件必须描述模块,且不能保持为空。其必不可少的字段为 name, 但通常会包含更多信息。

CRM file(如果打不开,可参见下文)为例,为了提供模块描述信息 (name, category, summary, website…), 它列出了它的依赖(depends)。odoo框架会确保depends中配置的依赖模块在我们的模块被安装之前安装。 而且,如果这些模块中的某个依赖被卸载,我们的模块及其它任何依赖它的模块都会被卸载。 Odoo采用和Linux发行包管理一样的工作方式。

创建以下目录及文件

  • odoo14/custom/estate/__init__.py(官方推荐路径:/home/$USER/src/custom/estate/__init__.py,注意这里的包名estate即为模块的Technical Name
  • odoo14/custom/estate/__manifest__.py(官方推荐路径:/home/$USER/src/custom/estate/__manifest__.py

__manifest__.py 文件只定义name和模块依赖,目前唯一必要的框架模块为 base。如下:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
{
    'name': 'estate',
    'depends': ['base']
}

添加 custom 目录路径到 addons-path,重启Odoo服务:

python odoo-bin --addons-path=custom,odoo/addons -r myodoo -w test123 -d odoo

验证

浏览器页面中访问Apps, 点击搜索estate

odoo 开发入门教程系列-一个新应用_css_04

CRM file

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.

{
    'name': 'CRM',
    'version': '1.2',
    'category': 'Sales/CRM',
    'sequence': 15,
    'summary': 'Track leads and close opportunities',
    'description': "",
    'website': 'https://www.odoo.com/page/crm',
    'depends': [
        'base_setup',
        'sales_team',
        'mail',
        'calendar',
        'resource',
        'fetchmail',
        'utm',
        'web_tour',
        'contacts',
        'digest',
        'phone_validation',
    ],
    'data': [
        'security/crm_security.xml',
        'security/ir.model.access.csv',

        'data/crm_lead_prediction_data.xml',
        'data/crm_lost_reason_data.xml',
        'data/crm_stage_data.xml',
        'data/crm_team_data.xml',
        'data/digest_data.xml',
        'data/mail_data.xml',
        'data/crm_recurring_plan_data.xml',

        'wizard/crm_lead_lost_views.xml',
        'wizard/crm_lead_to_opportunity_views.xml',
        'wizard/crm_lead_to_opportunity_mass_views.xml',
        'wizard/crm_merge_opportunities_views.xml',

        'views/assets.xml',
        'views/calendar_views.xml',
        'views/crm_recurring_plan_views.xml',
        'views/crm_menu_views.xml',
        'views/crm_lost_reason_views.xml',
        'views/crm_stage_views.xml',
        'views/crm_lead_views.xml',
        'views/digest_views.xml',
        'views/mail_activity_views.xml',
        'views/res_config_settings_views.xml',
        'views/res_partner_views.xml',
        'views/utm_campaign_views.xml',
        'report/crm_activity_report_views.xml',
        'report/crm_opportunity_report_views.xml',
        'views/crm_team_views.xml',
    ],
    'demo': [
        'data/crm_team_demo.xml',
        'data/mail_activity_demo.xml',
        'data/crm_lead_demo.xml',
    ],
    'css': ['static/src/css/crm.css'],
    'installable': True,
    'application': True,
    'auto_install': False
}

作者:授客


Git地址:https://gitee.com/ishouke

友情提示:限于时间仓促,文中可能存在错误,欢迎指正、评论!


标签:xml,__,系列,views,入门教程,模块,odoo,data,crm
From: https://blog.51cto.com/shouke/6457400

相关文章

  • 【Sword系列】第七届全国残疾人职业技能大赛样题-网络安全-特殊后门
    前言ICMP是Internet控制消息协议(InternetControlMessageProtocol)的简称,它是TCP/IP协议族的一个子协议。ICMP协议主要用于在IP网络中传递控制信息。它提供了一种在IP网络中进行错误报告、网络拓扑探测和诊断等功能的机制。通常情况下,ICMP包是由网络设备(如路由器)生成并发送给主机......
  • odoo context上下文用法总结
    环境odoo-14.0.post20221212.tarcontext用法总结获取上下文>>>self.env.context#返回字典数据,等价于self._context{'lang':'en_US','tz':'Europe/Brussels'}>>>self._context{'lang':'en_US',&......
  • odoo14在tree、kanban视图上添加dashboard
    效果图:  实现代码:js:view的类型原来1个js给拆分成了4个:view,controller,renderer,model​​1、view:AbstractView​​的子类,这是工厂类:类需要解析 ​​arch​​字段并设置其它3个类2、Renderer:渲染器,来自 ​​AbstractRenderer:负责在用户界面中展示数据;​​3、Contr......
  • Odoo 通过Javascript调用模型中自定义方法
    实践环境Odoo14.0-20221212(CommunityEdition)代码实现在js脚本函数中调用模型中自定义方法:this._rpc({model:'demo.wizard',//模型名称,即模型类定义中_name的值method:'action_select_records_via_checkbox',//模型中自定义名称args:['arg_value......
  • odoo16弹出对话框中显示SearchPanel
    在odoo中,有些数据模型的Search视图可能会定义关于SearchPanel的部分,但这部分定义不会在弹出对话框中显示。如员工的list视图显示如下: 但如果我们在一个挑选员工的弹出对话框中,显示是这样子的。 这样如果员工较多,我们还要进一步输入搜索条件来进行过虑,不太方便操作。那如果......
  • 【愚公系列】2023年06月 攻防世界-Web(disabled_button)
    (文章目录)<hrstyle="border:solid;width:100px;height:1px;"color=#000000size=1">前言HTML中的disabled属性是一个布尔属性,用于禁用表单元素或按钮的交互性能,使其无法接收用户输入或点击等交互操作。具体来说,disabled属性被设置为true时,表单元素或按钮将无法响应用户的......
  • postgresql/lightdb批量导入导出数据系列copy/ltuldr/ltldr/lt_bulkload及最佳实践推
    文件位于服务器上,这就限制了使用范围。为此,对于导出,lightdb提供了高性能导出版本ltuldr。对于导入,lightdb在23.1之前提供lt_bulkload,见下文;从23.1开始,支持和oraclesql*loader对应的ltldr。copy可用于快速导入和导出数据,主要用途如下:TheCOPYcommandmovesdatabetweenPostg......
  • WPF入门教程系列二十八 ——DataGrid使用示例MVVM模式(5)
    WPF入门教程系列目录WPF入门教程系列二——Application介绍WPF入门教程系列三——Application介绍(续)WPF入门教程系列四——Dispatcher介绍WPF入门教程系列五——Window介绍WPF入门教程系列十一——依赖属性(一)WPF入门教程系列十五——WPF中的数据绑定(一)  添加Cl......
  • 1000道Python题库系列分享三(30道)
    上一期题目链接:1000道Python题库系列分享二(48道)上一题题目参考答案:2.1 312.2 'F'2.3 Python采用的是基于值得内存管理方式,在Python中可以为不同变量赋值为相同值,这个值在内存中只有一份,多个变量指向同一个内存地址;Python具有自动内存管理功能,会自动跟踪内存中所有的值,对于没......
  • 1000道Python题库系列分享四(40道)
    热烈庆祝2018年2月董付国老师《Python程序设计(第2版)》出版18个月第5次印刷,《Python可以这样学》出版12个月第5次印刷,系列教材《Python程序设计基础》、《Python程序设计开发宝典》、《中学生可以这样学Python》等出版两年半以来已累计印刷25次。上一期题目链接:1000道Python题库系列......