搭建odoo開發調試環境

來自:http://www.veryopen.org/?cat=21

這篇文章非常詳細的介紹了搭建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”前的那個點,這樣就觸發了事件了,見下圖:

 


發佈了245 篇原創文章 · 獲贊 357 · 訪問量 268萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章