自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

原创 Python3 实现Base64

支持自定义64字符def b64_encode(data, *, letters=None): import struct if not isinstance(data, bytes): raise ValueError('type of the data which to be encoded must be bytes') if letters is None: letters = b'ABCDEFGHIJKLMNOPQRSTUVWXYZab.

2021-07-21 16:28:52 431

原创 HMAC原理

根据HMAC算法描述实现def hashed_mac(key, data, hash_func): if not isinstance(key, bytes): raise TypeError('key must be bytes') if not isinstance(data, bytes): raise TypeError('data must be bytes') if len(key) > 64: key = hash_func(key).di

2021-06-30 15:45:32 267

原创 基于Nginx location下Odoo12(伪)读写分离 (二)

拓扑图从上图可以看到, 其实如果Nginx不代理某些静态文件的话, Nginx可以独立出主服务器, 但是专业的事情还是让专业的人来做, 各模块static目录下的js, css, xml 文件, /web/content/.*\.(js|css), 就还是让Nginx来处理吧. 一些用户上传的附件, 还是由Odoo处理Nginx 配置upstream odoo-main { se...

2019-07-05 18:00:57 1389

原创 基于Nginx location下Odoo12(伪)读写分离 (一)

序言各位odoo的开发应当都知道, odoo上生产环境一般就两台机器, 一台应用服务器, 一台数据库服务器. pg的扩展还可能通过pgpoll实现, 通过中间件的方式达到应用层无感的读写分离. 但是应用服务器, 应当如何扩展, 网上可查的资料寥寥无几. 为此, 我给大家提供一些微小的经验.注意: 即将说的这些东西, 我都没上生产, 也就自己弄着玩了玩, 各位自行取舍背景odoo应用服务...

2019-07-04 18:34:30 1088 2

原创 Odoo Web前端界面详解- 2

上篇讲到,出现登陆界面,在我们输入用户名密码之后,odoo又做了什么,chrome中开发人员模式,看到请求如下 代码如下# web/controllers/main.py:483 # 登陆逻辑, if request.httprequest.method == 'POST': old_uid = request.uid

2018-02-04 16:28:32 7706 4

原创 Odoo Web前端界面详解 - 1

近期准备对odoo web模块进行一些整理,大致的说说odoo的前端界面是如何生成的,又是如何与后端交互,主要着重点就是odoo的js这块的东西,由于odoo11的js代码已经有了较大的改变,所以就以odoo11来分析吧。为了简单叙述,暂时不考虑多个db的情况(主要是懒得说没有db或者多个db实例的情况)当odoo指定数据库开启服务时(也就是odoo-bin -d <some_db_name> ),

2018-02-03 15:55:20 12362 1

翻译 Odoo部署

dbfilterOdoo是一个多租户的系统:一个单Odoo系统可以跑多个数据库实例,并且它是高度可定制化的,不同的database可以安装不同的modules。 对于那些需要登录web后台的用户来说,dbfilter的配置不存在任何问题,因为他们在登录的时候,需要选择对应的database。 但是对于那些不要登录的用户来说(如:module中的 portal, website),Odoo就

2018-01-26 14:23:08 3506

翻译 Odoo10 - Building Interface Extensions - 1

这一篇教程主要是为了创建 web client 的 module。A Simple Module让我们从一个基本的包含web组件配置的odoo module开始,并测试web framework。 例子可以从下面的命令下载$ git clone https://github.com/odoo/petstore执行上面的命令后,将在当前文件目录下创建一个petstore文件夹,将这个目录加入到 od

2017-08-04 15:08:29 852

翻译 2. C# - Learning About Built-In Types and Variables

Adding Variables这一小节,还是一个简单的helloworld程序,但是你可以通过添加变量使得程序有所不同这个程序仅仅是向控制台打印Hello, worldConsole.WriteLine("Hello, World!");你可以通过变量来修改这句。在此行的上面,添加一个变量存储你的名字var name = "Steve"; // use your name here这里有几个新的元

2017-07-11 10:32:03 460

翻译 1. C# - Creating a Hello World Program

The Hello World Project这一小节中,你将从一个很简单的hello world程序中学习基本的几个部分。包括当你 build和run此程序时会发生什么,你可能会犯的错误,以及如何修正它。一个C#程序的入口都是 Main 方法,通常会在一个名为Program.cs的文件中,就像下面这个文件一样using System;namespace ConsoleApplication {

2017-07-11 09:20:20 471

原创 Odoo 运行流程

起始文件__import__('pkg_resource').declare_namespace('odoo.addons')import odooif __name__ == '__main__': odoo.cli.main()默认会执行 odoo/cli/server.py 的 Server 类的 run 方法。检查是否是 root 用户启动,如果是,将会 log Error 信息

2017-03-31 18:11:00 3971 1

翻译 Odoo - Mixins and Useful Classes

Odoo 提供了一些 classed 和 mixins,用以帮助你轻松的建立一些常用的功能。Messaging featuresMessaging integrationBasic messaging system将 messaging feature 整合到你自己的 model 中将是非常的容易。仅需要在你的 model 的定义中添加继承 mail.thread,以及在你的 form view 中

2017-03-31 15:59:12 1220

翻译 Odoo Views (四) - Search

SearchSearch view 与之前的几个都不同,它不是用来显示 record 的。作用与制定的 model,并且用来筛选其他 view的内容。root element 是 <search> 不接受属性。子节点有:<field> fields 可以定义一些 domain 和 context,当用户输入搜索字符串时,将会把搜索行为和定义的 domain AND 之后,再去查询。<field

2016-11-16 16:51:56 2946

翻译 Odoo Views (三) - Graphs Kanban

GraphsGraphs view 就是用来将一些 record 来数据可视化。root element is <graph>。可以对它设置如下属性:type 值可以是, bar (default), pie, linestatced 仅仅在 bar 的情况下生效,如果设置为 True, 将会按照组分割,然后 stack 在一起。<grahp> 下的孩子节点,只能是 <field> ,这个

2016-11-04 13:17:18 4211

翻译 Odoo Views (二) - Form View

Form view 就是用来详细的展示单个 record 的各项值。跟节点就是 <form>,它由一些基本的 HTML 和一些特殊结构和语意来组成。Structural components 结构组成用来设定 form 的基本页面结构notebook 定义了一些 tabbed section,每一个 tab 都是以 <page> 节点的方式定义出来,这个<page> 有以下属性:string (

2016-11-03 11:32:52 3522 1

翻译 Odoo Views (一) - 通用和 List View

Common StructureView objects 提供了一系列的字段接口,除非特殊指明,否则这些字段都是可选的。 name (必选) 用以描述这个View,通常是为了在一堆list中找到它,主要是为了可读性。model 它指明这个view相关的modelpriority 客户端可以通过指明 id 或 (model, type) 的形式来调用 view。 如果是后面这种情况,所以对应

2016-11-02 15:48:07 3316

翻译 Odoo - Testing Modules

Odoo 通过对 Python 的 unittest 封装提供了对模块的测试功能 如果要自定义一些测试,只需要简单的在你的模块目录下创建一个 tests 文件夹,它将会自动的检测你的模块。 这写module的名字应该是以test_ 开头,并且应该在tests/__init__.py 文件中明确的 import your_module|-- ...`-- tests |-- __i

2016-10-18 14:43:25 1288

翻译 Data Files

Odoo 是一个高度数据驱动的系统,他的 UI (menus and views),security (access right and aceess rule),reports 以及 plain data 都是通过 定义 record 来实现的Structure在 Odoo 中设置一些数据的最主要的方式就是通过设置 XML data files,它的结构如下:<!-- the root eleme

2016-10-11 13:38:53 981

翻译 Odoo ORM API(七)- Porting from the old API to the new API

Porting from the old API to the new API在 new API 中避免了直接使用 ids 组成的 list,而使用 recordsets使用 old API 方式写的 method 将会被 ORM 自动的转换,没有必要切换到老的 pool 来调用 old API,可以直接把它当成 new API ,用 recordset 来调用search() 直接返回一个

2016-10-11 09:14:11 1022

翻译 Odoo ORM API(六)- Inheritance and extension and Domains

Inheritance and extensionOdoo 提供了三种不同机制用来扩展models in a modular way:继承一个已经存在的model,添加一些新的属性或者方法,但是,源model不会增加属性或方法,只是自己改变在另外一个 Odoo module 中,直接扩展源model,给他添加新的属性或方法,而不用去修改源码delegating some of the mode

2016-10-10 11:14:35 1042

翻译 Odoo ORM API(五)- Fields

FieldsBasic fields 基础性字段class openerp.fields.Field(string=None, **kwargs) 这些字段描述符也包含了对这个字段的定义,同时也对这条 record 的每个字段进行了一定的权限控制。下面的几个属性可以在定义字段时写入: - Name 描述 Parameters: string 在用户界面显示的label,如果

2016-10-09 13:03:37 6491

翻译 Odoo ORM API(四)- Methond decorators

Method decorators这一小节介绍了对两种不同风格的API的管理,这两种API分别是 traditional 和 record,在traditional 风格中,一些参数(cr, uid, ids, context)是被显示的设置在函数定义中,而在record 风格的API中,定义函数是不需要主动设置这些参数的,这些参数都会被隐藏在 model instances 中传入,显得更加的 o

2016-10-05 21:20:41 1511

翻译 Odoo ORM API(三)- Model Reference

Model Referenceclass openerp.models.Model(pool, cr) OPENERP 的 Models 都是继承自这个 classclass user(Model): ...这个在每个数据库中值会被系统实例化一次。Structual attributes_name business object name, 通常是 ‘.’,用于存放在 module的命

2016-09-29 17:39:30 4151

翻译 Odoo ORM API (二)- Creating Models、Compatibility between new API and old API

Creating Modelsmodel fields 就像普通 python类属性一样定义:from openerp import fields, models, apiclass AModel(models.Model): _name = 'a.model' field1 = fields.Char() 注意: 这意味着,在model中,两个field的 name 不能一

2016-09-26 17:16:21 1218

翻译 Odoo ORM API (一)- Recordsets、Environment、Common ORM methods

Recordsets从8.0开始提供一种新式API,接下来也会长期支持这个新式的API。在本片中,也是介绍怎么在新旧API之间切换,但是旧API介绍的不多,如果有需要,请查看老版文档。 与 models 和 records 的交互都是通过一个特有的东西 recordsets 来执行的,它是一个根据id 已经排好序的 同 models 的 record 的集合 注意: 虽然名字是 reco

2016-09-26 15:55:40 1961 1

翻译 建立一个Odoo Module (八)- Reporting

ReportingPrinted reports在Odoo 8.0,Odoo 提供了一个全新的,基于 QWeb、Bootstrap、Wkhtmltopdf 的report engine。 一个 report 是由下面两部分组成的:ir.actions.report.xml,可以用快捷方式report 代替,设置一个report所需的基本参数<report id="account_inv

2016-09-24 14:02:17 1029

翻译 建立一个Odoo Module (七)- Security、Wizard

SecurityERP中,必有一个访问控制机制,来实现安全上的把控Group-based access control mechanismsGroups 就像普通的 record 一样创建,只不过他的 model 是 res.groups。在定义menu时,可以通过设置group实现对menu的访问权限。但是,对象仍然可以不经过menu得到访问,所以,真正的 object 级别的访问控制权限(rea

2016-09-23 17:35:40 2660

翻译 建立一个Odoo Module (六)- Workflows

WorkflowsWorkflows 是通过model 来描述业务逻辑之间的变化过程,Workflows are also used to track processes that evolve over time.练习 6-1 给session 添加一个 state field ,用来帮助弄 workflow 一个 session 有3个状态,分别是 Draft(默认),Confirmed,

2016-09-23 15:12:42 1341

翻译 建立一个Odoo Module (五)- Advanced Views

Advanced ViewsTree viewsTree views 可以通过增加 attribute 来提供更深度的定制化decoration-{$name} 允许针对不同的record的特定值,来修改record 对应 行 的样式 值为普通的python 表达式,此表达式将会依次作用于每一个record,record 的各项属性,将会作为 context 传入此表达式,如果为表达式值为 T

2016-09-22 18:02:13 2402 1

翻译 建立一个Odoo Module (四)- Computed fields、Model constriants

Computed fields and default values目前为止,fields 都是直接将数据写到数据库或者从数据库读取数据。Fields 中同样可以通过调用方法获取动态计算值,而不是从数据库中取数据。 创建 computed field 的方式就是给一个 field 设置 compute 属性,并将其值 = method name。那么这个method 就会对 self 这个mode

2016-09-22 14:54:07 1556

翻译 建立一个Odoo Module (三)- Inheritance

inheritance 继承Model inheritanceOdoo 提供了两种继承机制(in a module way),用以继承已有的model。 第一种机制允许一个 module 去修改定义在另一个 module 的 model:添加一个新的 fields 到该 model复写 fields 的定义给这个 model 添加限制条件添加一个新的 method 复写 model 已有

2016-09-22 10:20:42 2051

翻译 建立一个Odoo Module (二)- Basic views、Relational fields

Basic ViewsViews 定义了 model 中的 record 的展现方式,每种类型的 view 都代提供了 model 的一种数据可视化(list 展现, 图表的方式展现,等), views 可以通过他们的 type (e.g. a list of partners)或者明确指定它的 external id 来被请求。对于一般的请求来说,the view with 正确的 type 和

2016-09-21 18:35:08 1587

翻译 建立一个Odoo Module (一)

开启/关闭 Odoo 服务Odoo 使用的是CS架构,这里的C指的是浏览器,客户端和服务器端之间通过RPC通信。业务逻辑和扩展都是在服务器端执行,但是也支持在客户端执行一些操作(比如说:一些数据的展示,还有交互式的地图)。开启服务,只需要在shell中简单的输入命令 odoo.py 。$ python odoo.py停止服务,连续按压 Ctrl-c 两次即可, 或者直接kill 这个进程。创建一个

2016-09-21 16:22:29 3025 1

原创 Virtualbox下Ubuntu扩展根分区

virtualbox 扩展虚拟机硬盘大小当虚拟机使用一段时间后,我们会发现硬盘容量不够了,所以我们来扩充之。 关闭虚拟机cd 至 virtualbox 安装目录c:\Program Files\Oracle\VirtualBox\VBoxManage.exe list hdds扩展硬盘大小c:\Program Files\Oracle\VirtualBox\VBoxManage.exe m

2016-08-10 16:00:48 3383 2

原创 Nginx反向代理Odoo后导致日志中Werkzeug记录的IP地址不正确的问题

使用环境主机(win7 192.168.1.78) 虚机 (ubuntu 192.168.1.102)ubuntu 16.04nginx 1.10.0odoo 9.0c问题描述在odoo不使用代理的情况下,日志中记录的ip地址是正确的 配置nginx$ sudo vim /etc/nginx/sites-available/odoo.conf# odoo.conf 配置如下# 也可以先

2016-08-04 16:36:57 2992

原创 Nginx反向代理Odoo并转为https

生成证书文件生成自签名证书,并放在指定位置$ openssl req -x509 -days 3650 -subj '/CN=odoo.youyun.com/' -nodes -newkey rsa:2048 -keyout server.key -out server.crt$ sudo mkdir /etc/ssl/nginx$ sudo mv server.key server.crt /

2016-07-19 20:10:49 6317 2

原创 Ubuntu下使用Docker 建立本地私有registry

版本信息ubuntu 16.04docker 1.11.2registry 2安装docker使用安装脚本安装docker,保证本机有安装curl。$ sudo curl https://get.docker.com/ | sh安装完成之后,可以使用docker info 或 docker version 查看docker的相关信息。 由于docker需要sudo命令,所以可以将当前用户加

2016-07-19 12:36:41 3257

转载 odoo 常用widget

widget="statusbar"   头部状态条标签widget="email"  电子邮件地址标签widget="selection" 下拉选择标签widget="mail_followers" 关注者标签widget="mail_thread" 消息标签widget="progressbar" 进度条,按百分比标签widget="one2many_list" 一对多

2016-07-05 09:58:46 6155 1

原创 第1章 Odoo安装与配置

1 运行环境介绍IDE: PyCharm 开发环境:window下,使用virtualbox安装ubuntu16.04(64-bit)的虚拟环境odoo版本: odoo-9.0python版本: python 2.7.112 安装配置2.1. 安装和配置postgreSQL Terminal中执行sudo apt-get install postgresql,静待postgreSQL安装

2016-06-15 19:38:04 7952

原创 requests返回数据编码问题

以前常用Python的requests包做一些比较基本的东西,很少遇到中文乱码的问题。 requests也有自己对应解码方式,但是有时候不太好使。 比如>> import requests>> url = 'http://internet.baidu.com/'>> rsp = requests.get(url)大家查看该url源码可以看到 charset=gb2312 如果此时用 rsp

2016-04-26 17:10:43 3741

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除