
Python
J_z10
小菜鸡
展开
-
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 · 524 阅读 · 0 评论 -
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 · 379 阅读 · 0 评论 -
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 · 1294 阅读 · 0 评论 -
Odoo Views (一) - 通用和 List View
Common StructureView objects 提供了一系列的字段接口,除非特殊指明,否则这些字段都是可选的。 name (必选) 用以描述这个View,通常是为了在一堆list中找到它,主要是为了可读性。model 它指明这个view相关的modelpriority 客户端可以通过指明 id 或 (model, type) 的形式来调用 view。 如果是后面这种情况,所以对应翻译 2016-11-02 15:48:07 · 3515 阅读 · 0 评论 -
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 · 3656 阅读 · 1 评论 -
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 · 4269 阅读 · 0 评论 -
Odoo - Testing Modules
Odoo 通过对 Python 的 unittest 封装提供了对模块的测试功能 如果要自定义一些测试,只需要简单的在你的模块目录下创建一个 tests 文件夹,它将会自动的检测你的模块。 这写module的名字应该是以test_ 开头,并且应该在tests/__init__.py 文件中明确的 import your_module|-- ...`-- tests |-- __i翻译 2016-10-18 14:43:25 · 1382 阅读 · 0 评论 -
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 · 1579 阅读 · 0 评论 -
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 · 4366 阅读 · 0 评论 -
Odoo Views (四) - Search
SearchSearch view 与之前的几个都不同,它不是用来显示 record 的。作用与制定的 model,并且用来筛选其他 view的内容。root element 是 <search> 不接受属性。子节点有:<field> fields 可以定义一些 domain 和 context,当用户输入搜索字符串时,将会把搜索行为和定义的 domain AND 之后,再去查询。<field翻译 2016-11-16 16:51:56 · 3100 阅读 · 0 评论 -
Odoo部署
dbfilterOdoo是一个多租户的系统:一个单Odoo系统可以跑多个数据库实例,并且它是高度可定制化的,不同的database可以安装不同的modules。 对于那些需要登录web后台的用户来说,dbfilter的配置不存在任何问题,因为他们在登录的时候,需要选择对应的database。 但是对于那些不要登录的用户来说(如:module中的 portal, website),Odoo就翻译 2018-01-26 14:23:08 · 3807 阅读 · 0 评论 -
基于Nginx location下Odoo12(伪)读写分离 (一)
序言各位odoo的开发应当都知道, odoo上生产环境一般就两台机器, 一台应用服务器, 一台数据库服务器. pg的扩展还可能通过pgpoll实现, 通过中间件的方式达到应用层无感的读写分离. 但是应用服务器, 应当如何扩展, 网上可查的资料寥寥无几. 为此, 我给大家提供一些微小的经验.注意: 即将说的这些东西, 我都没上生产, 也就自己弄着玩了玩, 各位自行取舍背景odoo应用服务...原创 2019-07-04 18:34:30 · 1236 阅读 · 2 评论 -
基于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 · 1578 阅读 · 0 评论 -
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 · 2047 阅读 · 1 评论 -
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 · 1083 阅读 · 0 评论 -
第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 · 8077 阅读 · 0 评论 -
Odoo ORM API(五)- Fields
FieldsBasic fields 基础性字段class openerp.fields.Field(string=None, **kwargs) 这些字段描述符也包含了对这个字段的定义,同时也对这条 record 的每个字段进行了一定的权限控制。下面的几个属性可以在定义字段时写入: - Name 描述 Parameters: string 在用户界面显示的label,如果翻译 2016-10-09 13:03:37 · 6645 阅读 · 0 评论 -
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 · 1100 阅读 · 0 评论 -
建立一个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 · 1139 阅读 · 0 评论 -
建立一个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 · 2745 阅读 · 0 评论 -
建立一个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 · 1419 阅读 · 0 评论 -
建立一个Odoo Module (五)- Advanced Views
Advanced ViewsTree viewsTree views 可以通过增加 attribute 来提供更深度的定制化decoration-{$name} 允许针对不同的record的特定值,来修改record 对应 行 的样式 值为普通的python 表达式,此表达式将会依次作用于每一个record,record 的各项属性,将会作为 context 传入此表达式,如果为表达式值为 T翻译 2016-09-22 18:02:13 · 2479 阅读 · 1 评论 -
建立一个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 · 2155 阅读 · 0 评论 -
建立一个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 · 1667 阅读 · 0 评论 -
建立一个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 · 1669 阅读 · 0 评论 -
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 · 1090 阅读 · 0 评论 -
建立一个Odoo Module (一)
开启/关闭 Odoo 服务Odoo 使用的是CS架构,这里的C指的是浏览器,客户端和服务器端之间通过RPC通信。业务逻辑和扩展都是在服务器端执行,但是也支持在客户端执行一些操作(比如说:一些数据的展示,还有交互式的地图)。开启服务,只需要在shell中简单的输入命令 odoo.py 。$ python odoo.py停止服务,连续按压 Ctrl-c 两次即可, 或者直接kill 这个进程。创建一个翻译 2016-09-21 16:22:29 · 3137 阅读 · 1 评论 -
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 · 3824 阅读 · 0 评论