搭建odoo开发调试环境

7.     安装pycharm

登陆Linux图形桌面并且打开一个终端窗口:

执行如下命令:

root@OdooDev:~/odoo-8.0# cd $HOME/install_softwares

root@OdooDev:~/install_softwares# tar -zxf pycharm-professional-4.0.5.tar.gz -C ../

root@OdooDev:~/install_softwares# cd ../pycharm-4.0.5/bin/

root@OdooDev:~/pycharm-4.0.5/bin# ./pycharm.sh

 

 

下面开始导入odoo的源代码,指定其目录即可。

 

点击上图中右上角的“Configure Python Interpreter”,配置python解释器为python2.7,然后pycharm根据python2.7建立索引,几分钟后出现如下的界面:

点击右上角的“Install requirements”安装依赖的python插件,安装过程很可能报错。配置openerp-server的启动参数,见下图:

 

如下图所示定义数据源:

      

下面的图直接点击“OK”。

到此,pycharm安装完毕,并且导入了odoo工程项目,以后启动pycharm的方法是:操作系统菜单“应用程序à编程àPycharm”。

最后我们来汉化pycharm,从这里http://yunpan.cn/cZML53YDGHskx(访问密码 03a4)下载,汉化的官方网站是https://github.com/Jythoner/pycharm。解压之后把resources_zh_CN.jar拷贝到pycharm安装目录下的lib目录下,重启pycharm即可。

快捷键:

8.     调试odoo后端python代码

在调试odoo8之前,不要单独启动odoo8服务。

§8.1 进入odoo.py的shell命令模式(odoo 9才有)

./odoo.py shell -d odoo9_db -r odoo -w pass123 --db_host=127.0.0.1  -c openerp-server.conf

>>> dir()        ----返回当前脚本的所有名字,其中openerp和self,可以进一步列,如dir(openerp)、dir(self)

>>> print self       ----查看当前模块,默认是res.users。

>>> dir(openerp)         -----查看模块openerp定义的名字和函数。

>>> help()                     ----进入帮助界面。

>>> help(openerp.osv.orm.Model.browse)                 ----获取browse()函数的帮助

>>> self.search_read([('id','=',1)],['name'])      ----查看表res_users中id为1的用户的名字。

>>> self.pool.get('neon.asset').browse([1,2])

§8.2  服务启动过程跟踪

Odoo.py定一了一系列的函数,最后两条语句是执行总路口,我们在main()处设置断点,然后开始跟踪调试,结果如下:

odoo.py>main():导入openerp,然后执行openerp/cli/__init__.py>main(),然后执行openerp/cli/server.py>main(args),>check_root_user()检查是否是根用户,如果是,则退出。由于我们是用root用户登录linux并做调试工作的,所以openerp/cli/server.py有一条语句改为 “if pwd.getpwuid(os.getuid())[0] == 'root1' :”,这样root用户也能运行odoo服务了。

openerp/tools/config.py>parse_config(args)分析配置文件(--config=/opt/dev/odoo8/odoo-config/openerp-server.conf)。

check_postgres_user()检查是否是postgres数据库用户,如果是则退出。

report_configuration()打印OpenERP版本信息,addons路径,数据库登录信息。

openerp/service/server.py>start(preload=None,stop=False):

装载全局模块(模块由--load命令行参数或server_wide_modules指定,默认模块是web,web_kanban),执行run(),执行start(),再执行http_spawn(self),开始监听80或者8069端口了,在执行run()时传递了application函数(在openerp/service/wsgi_server.py中定义)。服务器有三种(默认是ThreadedServer),在windows下只有ThreadedServer支持:

GeventServer if sys.modules.get("gevent").

PreforkServer if workers is defined in configuration.

ThreadedServer if none of the above are true.

文件openerp/service/server.py中定义了ThreadedServer服务器对应的类,类中方法run()完成:调用start()产生一个http线程和2个cron线程。http线程调用http_thread产生Werkzeug wsgi 守护服务进程,所有的web请求被传递给application函数(在openerp/service/wsgi_server.py中定义)。cron线程为每个数据库(套帐)每隔60秒钟调用_acquire_job(db_name)方法(方法的类ir_cron定义在openerp/addons/base/ir/ir_cron.py中)来处理后台任务。启动大概流程见下面的图。

§8.3  跟踪后端网页动作

在用pycharm 4调试odoo8时,odoo服务程序监听8072端口,而不是80,但当在pycharm里运行odoo8时又是监听80端口。我们都知道8072端口是支持在线聊天的。既然监听8072,那么我们就干脆访问http://<ip>:8072,但是网页长时间打不开。我们在/root/odoo-8.0/openerp/service/wsgi_server.py的application()函数内第一条语句处设置断点,然后debug运行odoo服务,并且在浏览器打开网页,可以开始跟踪了。有外国朋友说修改文件/root/odoo-8.0/openerp/__init__.py,参照下图注释掉两行:

然后调试odoo就是监听80端口了,而且浏览网页也正常,跟踪也顺利。但是又产生了一个新的问题:在pycharm中运行odoo,监听8072端口了。下图供参考。

§8.4 调试模块

模块名就是模块文件所在的目录名,当调试模块时,需要不断地修改代码,并在odoo中升级模块,才能看到修改后的效果。升级模块有两种方式,一种是在odoo的“设置”菜单中完成,一种可在启动odoo服务时升级,后一种方法比较快捷,带参数 -u 模块名 启动Odoo服务即可,比如:

./odoo.py -c openerp-server.conf -u neon_asset

其中neon_asset是我开发的资产管理模块。

9.     调试odoo前端js代码

前端调试要结合chrome和其插件,同时最好配置goagent翻墙软件,因为后续的js调试插件JetBrains IDE Support需要翻墙才能下载。

§9.1  安装和配置chrome浏览器

root@OdooDev:~/install_softwares# dpkg -i google-chrome-stable_current_i386.deb

如果此时直接启动chrome浏览器,那么就会报错:

我们的解决办法是:

root@OdooDev:~/install_softwares# mkdir $HOME/.chrome

root@OdooDev:~/install_softwares# vim /usr/bin/google-chrome

这样就可以正常启动chrome浏览器了。

§9.2  配置goagent翻墙工具

从这里http://t.cn/RwuUMo2下载(密码29b9),然后解压到/opt/GoAgent-323/目录下。参照里面的操作说明配置,对于Linux系统,注意以下几点:

root@OdooDev:~# apt-get -y install python-vte

root@OdooDev:~# python2.7 /opt/GoAgent-323/local/addto-startup.py

这一步是添加开机自动启动翻墙软件,也可以手工启动,采用命令python2.7 /opt/GoAgent-323/local/goagent-gtk.py或者python2.7 /opt/GoAgent-323/local/proxy.py

下面还要手工导入证书:

打开 Chrome 浏览器 >设置 > 显示高级设置… > HTTPS/SSL > 管理证书… > 授权中心> 导入… > 导入/opt/GoAgent-323/local目录下的 CA.crt 证书 > Edit trust settings 全部选中 > 重启浏览器

PS: goagent目前不稳定,我直接采用蓝灯(lantern)翻墙工具,速度快,还比较稳定,本博客的第一篇文章中有下载链接。

§9.3  调试前端js脚本

参照下图增加js调试配置:

点击“OK”后会提示需要在chrome浏览器中安装插件JetBrains IDE Support。调试时在pycharm中正常运行或者调试运行odoo8或者在系统命令窗口运行odoo8服务(root@OdooDev:~/odoo-8.0# ./odoo.py -c openerp-server.conf),然后在pycharm中调试运行js debug:

pycharm会自动启动chrome浏览器,如下图所示:

对于网站的前端调试,我还是喜欢使用chrome开发者工具或者与firefox集成的FireBug,后者有中文版,使用更人性化一些。下面简单介绍下安装和使用FireBug。先从http://download.firefox.com.cn/releases/stub/official/zh-CN/Firefox-latest.exe下载Firefox下载浏览器并安装它,安装完之后启动firefox浏览器,点击右上角的菜单(那个“三”的小图标),然后点击“添加组件”,再然后搜索firebug,搜到之后直接安装这个组件即可。最后在firefox浏览器的靠近右上角的地方出现一个小虫子的图标就是FireBug了,见下图:


现在进入odoo的商城下单,直到如下付款的界面:

选择不同的付款方法,那个“现在支付”按钮下的信息就会改变,那么现在我们来找找改变这些信息的代码在哪里。

第一种方法:点击那个小虫子打开firebug界面,然后依次参照图中的1、2、3操作:

上图中已经告诉我们执行的js函数,我们双击这个函数打开包含这个函数的那个js文件,并定位到目标函数。js文件一般是经过压缩的,可读性极差,点击“{}”整理代码,如下图所示:

第二种方法:参见下图操作。

然后再点击“PayPal”前的那个点,这样就触发了事件了,见下图:

猜你喜欢

转载自blog.csdn.net/jehuyang/article/details/80286166