Category: Development

Postgres 日志分析

最近在项目开发过程中发现客户方总是出现卡顿,数据服务器峰值出现驼峰的情况,所以需要分析数据库日志,且ODOO使用的是 Postgres  的数据库,靠眼睛去看那是分析不出啥的。

pgBadger乃是 Postgres 的一个分析工具

项目地址:https://github.com/darold/pgbadger

yum install -y pgbadger
which pgbadger
pgbadger postgresql-* -f syslog

命令执行完成后,会在当前命令执行目录生成一个out.html的文件。

Python 转数字为Excel列,转列为数字

def convent_column_to_char(column):
	"""
	将数字转换为Excel列
	1 => A, 2 => B, ......, 27 => AA
	:param column: int
	:return: str
	"""
	if not isinstance(column, int):
		return column
	tStr = str()
	while column != 0:
		res = column % 26
		if res == 0:
			res = 26
			column -= 26
		tStr = chr(ord('A') + res - 1) + tStr
		column = column // 26
	return tStr


def colname_to_num(colname):
	if not isinstance(colname, str):
		return colname
	col = 0
	power = 1

	for i in range(len(colname) - 1, -1, -1):
		ch = colname[i]
		col += (ord(ch) - ord('A') + 1) * power
		power *= 26
	return col


if __name__ == "__main__":
    l = list()
    n = list()
    for a in range(1, 1001):
        l.append(convent_column_to_char(a))
    print(l)
    for a in l:
        n.append(colname_to_num(a))
    print(n)

Odoo 10 Could not execute command lessc

这个问题出现的十分突然,早上打开项目,直接抛出“Could not execute command lessc”这个Error,导致界面加载异常。

现将处理过程做一次分析整理。

再看系统环境变量

启动程序,问题依旧。。

跟进代码

发现 os.environ 这个变量中的PATH里面被覆盖了。

调整启动配置

再次跟进代码
Over...

Odoo Javascript & Widget

定义一个OdooClass

odoo.define('addon_name.service', function (require) {
    "use strict";
    var utils = require('web.utils');
    var Model = require('web.Model');

    // do things with utils and Model
    var something_useful = 15;
    return  {
        something_useful: something_useful,
    };
});

重写记录打开方式

odoo.define('combined_statements.working_papers', function(require) {
    "use strict";
	var core = require('web.core');
	var ListView = require('web.ListView');
	var utils = require('web.utils');
	var web_client = require('web.web_client');
	var Model = require('web.Model');

	var QWeb = core.qweb;
	var _t = core._t;

	/**
	 * 打开工作底稿创建向导页面
	 */
	function open_wording_papers_wizard_action() {
		web_client.action_manager.do_action({
			name: "底稿定义",
			type: "ir.actions.act_window",
			res_model: "working.papers.define.wizard",
			target: 'new',
			xml_id: 'combined_statements.working_papers_define_wizard_form',
			views: [
                [
                    false, 'form'
                ]
            ]
        });
    }

	ListView.include({
        // 为增加按钮绑定点击事件
		render_buttons: function($node) {
			let add_button = false;
			if (!this.$buttons) {
				add_button = true;
            }

			this._super.apply(this, arguments);

			if (add_button) {
				this.$buttons.on('click', '.o_button_open', open_wording_papers_wizard_action.bind(this));
            }
        },
        // 重写Tree视图点击行打开记录的方式
		do_activate_record: function(index, id, dataset, view) {
			if (this.model === 'combined.statements.working.paper') {
				let record = this.records.get(id);
				this.do_action({
					type: "ir.actions.client",
					tag: 'working.papers',
					params: record,
                });
            }else {
				this._super.apply(this, arguments);
            }
        }
    });
});

Odoo开发之开发者模式

--dev <feature,feature,...,feature>

  • all  以下功能全部激活
  • xml  直接从xml文件中读取模板。而不是从数据库。
  • reload  更新python文件时重新启动服务器(需要watchdog包)
  • qweb 当模版节点包含t-debug='debugger',自动中断调试。
  • (i)p(u)db: start the chosen python debugger in the code when an unexpected error is raised before logging and returning the error.

官方帮助:
https://www.odoo.com/documentation/10.0/reference/cmdline.html

pip install watchdog
python odoo-bin -c dev.conf --dev all

Archives