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: break in the evaluation of qweb template when a node contains 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

Odoo 12 企业版开发环境搭建

基础环境请参阅:Odoo 10.0 64位 绿色版

目录结构

创建适用于odoo12的配置文件

python source\odoo-bin --save --stop-after-init

创建数据库及用户

-- 创建用户
CREATE USER xxx WITH PASSWORD 'xxxxxx';
-- 创建数据库yyy并指定所有者为xxx
CREATE DATABASE yyy OWNER xxx;
-- 对数据库yyy的全部操作权限赋给用户xxx
-- 否则xxx仅仅能登录控制台,没有数据库的操作权限
GRANT ALL PRIVILEGES ON DATABASE yyy to xxx;
-- 删除数据库yyy
DROP DATABASE yyy;
-- 删除用户xxx
DROP USER XXX;
PyCharm启动设置

Git 通过Commit关闭Issue

如果要在相同仓库关闭一个Issue(工单),可以使用下面列表中的关键词并在其后面加上Issue编号的应用(#+issue编号)。

例如一个提交信息中包含 Fixes #45 ,那么一旦这次提交被合并到默认分支,仓库中的45号issue就会自动关闭。

Issue 关键字

  • close
  • closes
  • closed
  • fix
  • fixes
  • fixed
  • resolve
  • resolves
  • resolved

如果在不同的仓库中关闭issue,可以使用 username/repository#issue_number 这样的语法。
例如,在提交信息中包含Closes example_user/example_repo#76将会关闭那个仓库的的76号issue,前提是你push到了那个仓库。

关闭多个issues

如果你在commit的开头使用多个上述关键字加issue的引用的话,你就可以关闭多个issues。
例如,This closes #34, closes #23, and closes example_user/example_repo#42将会关闭同一个仓库的34和23号issue以及 example_user/example_repo 仓库的42号issue。