博主在外企IT领域工作多年,有一定的Python和ERP基础,最近偶然机会接触到开源ERP odoo,萌生了学习的念头,但是官网的开发教程都是英文,所以打算用浅显易懂的文字翻译成中文,方便大家一起学习,有翻译不到位的地方还请大家指正
注意:
提醒:
阅读这份教程需要基本的Python知识
同时需要在电脑或服务器上已安装好Odoo应用
在Odoo中,任务都是在创建的模块中执行的。
模块可以自定义Odoo的行为,无论是通过添加新的行为或者修改现有的(包括添加其他模块的行为来定制化)。
Odoo的scaffolding脚手架
可以创建模块。通过调用命令:
$ ./odoo-bin scaffold Academy my-modules
系统便会自动创建目录my-modules
以及其包含的模块academy
。目录可以是存在的目录名,但是模块名必须是唯一的。
我们已经有了一个刚刚创建好的模块,尽管啥功能也没有,但是我们可以安装了。
$ ./odoo-bin --addons-path odoo/addons,my-modules -f
应用
,在搜索框移除默认已过滤出的“应用”安装
按钮安装 Academy 模块控制器解析浏览器请求并返回数据。
添加一个简单的控制器并且确保他在__init__.py文件中导入了(这样Odoo可以找到)
academy/controllers.py
# -*- coding: utf-8 -*-
from odoo import httpclass Academy(http.Controller):ute('/academy/academy/', auth='public')def index(self, **kw):return "Hello, world"# ute('/academy/academy/objects/', auth='public')
# def list(self, **kw):
关闭Server(Ctrl+C) 然后重启:
./odoo-bin --addons-path odoo/addons,my-modules -f
打开网页localhost:8069/academy/academy/, 你可以看到页面显示:
在Python中生成HTML文件不是很理想。
通常的解决办法是利用模板,通过伪代码文件来显示。Odoo允许任何模板系统,但是他自己提供的OWeb模板系统很好的整合了一些其他的功能。
创建模板并且确保模板文件在__mainfest__.py 文件中注册,并且修改控制器来使用我们的模板:
academy/controllers.py
class Academy(http.Controller):ute('/academy/academy/', auth='public')def index(self, **kw):der('academy.index', {'teachers': ["Diana Padilla", "Jody Caroll", "Lester Vaughn"],})# ute('/academy/academy/objects/', auth='public')
# def list(self, **kw):
academy/l
<odoo><template id="index"><title>Academy</title><t t-foreach="teachers" t-as="teacher"><p><t t-esc="teacher"/></p></t></template><!-- <template id="object"> --><!-- <h1><t t-esc="object.display_name"/></h1> --><!-- <dl> -->
</odoo>
模板会通过迭代器(t-foreach)迭代所有的teacher,并且打印出每个teacher
最后重启Odoo并且升级模块数据。
./odoo-bin --addons-path odoo/addons,my-modules -d odoo13 -u academy -f
点击localhost:8069/academy/academy/ 会显示:
Odoo的模型映射到数据库的表。
在之前的章节我们仅仅用Python静态地显示了字符串列表。它并不允许修改或者持续存储,所以现在我们要把我们的数据移到数据库。
定义一个teacher模型,并且确保它在__init__.py中正确导入:
academy/models/models.py
from odoo import models, fields, apiclass Teachers(models.Model):_name = achers'name = fields.Char()
接着给模型设置基本的访问控制并且添加到manifest
academy/__manifest__.py
# always loaded'data': ['del.access.csv',l',],# only loaded in demonstration mode
academy/dels.access.csv
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_academy_teachers,access_academy_teachers,model_academy_teachers,,1,0,0,0
这里简单的给了所有用户(group_id:id)读权限(perm_read)
数据文件(XML或者CSV)必须被添加在模块的manifest中,Python文件(模型或者控制器)不用,但是Python文件必须引入在__init__.py中(直接或者间接)
管理员用户通过权限来控制,他们能访问所有模型甚至没有给权限的
本文发布于:2024-01-30 23:11:22,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170662748523519.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |