接觸odoo已經兩年多了,在大學作課程設計的時候,無心間瞭解到odoo這個erp框架,當時的odoo在國內還默默無聞,我也未曾想過本身畢業後會從事到odoo框架的相關開發工做中來。兩年多的時間裏,我見證了它在國內的發展,也隨着工做經驗的積累,對odoo已經有了必定的瞭解,在這裏,我但願能分享本身兩年多來學習到的一些知識和經驗,也但願有可能吸引到更多的朋友加入到odoo的開發中來。css
根據初步的想法,文章將會包含odoo開發環境的搭建(Mac),個性化,ORM模塊,controller,視圖、模板、記錄以及其繼承機制,widget,權限,打印模板,報表,部署,源碼分析等部分。關於更新時間,因爲本人家境貧寒,每日上下班通勤時間高達三個小時,工做日能抽出的時間比較有限,主要將在週末更新。給本身定一個小目標,每週至少更新兩到三篇文章。node
咱們將要安裝的軟件包:python
1)、git: 代碼管理git
2)、postgres: odoo12運行所須要的數據庫github
3)、docker: 用於構建postgres容器,pgadmin4容器web
4)、>=python3.5: odoo12運行的python環境sql
4)、odoo requirements: 運行odoo須要的python依賴包docker
git clone -b v1.0 https://github.com/lingjiawen/odoo_project.git
打開終端,輸入:數據庫
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install git
安裝完成後,查看git版本檢查是否安裝成功:npm
最新款的mac已經本身安裝python2.7 和 python3.7,檢查運行版本:
若是沒有,使用homebrew進行安裝(homebrew安裝python3會自動安裝pip3):
brew install python3
pip3 install virtualenv
查看是否安裝成功:
建立python3虛擬環境到用戶目錄並激活:
virtualenv -p python3 ~/odoo12_project #建立虛擬環境
source ~/odoo12_project/bin/active #激活虛擬環境
mkdir -pv ~/code/odoo_project # 創建工做目錄 cd ~/code/odoo_project # 進入工做目錄 git clone -b 12.0 https://github.com/odoo/odoo.git
安裝所需依賴:
brew install freetype jpeg libpng libtiff xz webp brew install node # 安裝node npm install -g less less-plugin-clean-css #使用node安裝依賴 # 完成後進入odoo12目錄 cd odoo12 pip3 install -r requirements.txt # 安裝requirements
安裝pgcopy2可能會出現以下報錯:
可能的解決方法:
pip3 uninstall psycopg2 pip3 list --outdated pip3 install --upgrade wheel pip3 install --upgrade setuptools pip3 install psycopg2
xcode-select --install
若是上述兩種方法沒法解決,那麼嘗試下列辦法:
vim requirements.txt # 編輯文件 # 找到psycopg2 # 在前面添加'#'註釋 # 保存退出 pip3 install psycopg2-binary==2.8.3 # 手動安裝 # 從新安裝requirements pip3 install -r requirements.txt
直接訪問官網hub登陸下載docker桌面版並運行: https://hub.docker.com/editions/community/docker-ce-desktop-mac
查看docker和docker-compose版本:
docker pull postgres:10
docker pull dpage/pgadmin4
進入項目路徑,建立db運行的docker-compose文件:
cd ~/code/odoo12_project/ touch docker-compose_db.yaml vim docker-compose_db.yaml
文件以下:
version: '2' services: postgres_10_db: image: postgres:10 container_name: postgres_10_db environment: - POSTGRES_USER=odoo12 - POSTGRES_PASSWORD=odoo12 - POSTGRES_DB=postgres - PGDATA=/var/lib/postgresql/data/pgdata volumes: - postgres_10_db_volume:/var/lib/postgresql/data/pgdata ports: - "5432:5432" network_mode: bridge volumes: postgres_10_db_volume: external: true
建立容器Volume並運行:
docker volume create --name=postgres_10_db_volume
docker-compose -f docker-compose_db.yaml up -d # 守護態運行
# 運行pgadmin, 帳號密碼請本身設置 docker run -p 8888:80 \ -e 「PGADMIN_DEFAULT_EMAIL=sysadmin" \ -e 「PGADMIN_DEFAULT_PASSWORD=sysadmin" \ -d dpage/pgadmin4
查看運行狀態:
咱們已經注意到數據庫已經運行,端口爲5432,pgadmin運行端口爲8888,在瀏覽器輸入localhost:8888訪問pgadmin:
1)打開pycharm(如沒有pycharm請自行下載安裝,再也不贅述),打開項目,如圖:
2)設置虛擬環境運行:
左上角點開pycharm->preferences->project->project interpreter->setting->add:
3)選擇existing environment,路徑選擇剛剛建立的odoo12_project/bin.python,點擊ok。
4)添加啓動文件:
在目錄下新建config目錄,在config目錄下新建odoo.conf文件:
[options] addons_path = ~/code/odoo12_project/odoo12/odoo/addons,~/code/odoo12_project/odoo12/addons ; admin_passwd = admin ; csv_internal_sep = , db_host = 0.0.0.0 db_password = odoo12 db_user = odoo12 db_port = 5432 ; db_maxconn = 64 ; db_name = False ; db_template = template1 ; dbfilter = .* ; debug_mode = False ; email_from = False ; limit_memory_hard = 2684354560 ; limit_memory_soft = 2147483648 ; limit_request = 8192 ;limit_time_cpu = 12000 ;limit_time_real = 24000 ; list_db = True ; log_db = False ; log_handler = [':INFO'] ; log_level = info ; logfile = None ; longpolling_port = 8072 ; max_cron_threads = 2 ; osv_memory_age_limit = 1.0 ; osv_memory_count_limit = False ; smtp_password = False ; smtp_port = 25 ; smtp_server = localhost ; smtp_ssl = False ; smtp_user = False ; workers = 5 ; xmlrpc = True ; xmlrpc_interface = ; xmlrpc_port = 8069 ; xmlrpcs = True ; xmlrpcs_interface = ; xmlrpcs_port = 8071
在主目錄下新建啓動文件set-up,並添加如下內容:
#!/usr/bin/env python3 # set server timezone in UTC before time module imported import os import sys __import__('os').environ['TZ'] = 'UTC' LIB_PATH = os.path.join(os.path.split(os.path.realpath(__file__))[0], '.', 'odoo12') sys.path.append(LIB_PATH) import odoo if __name__ == "__main__": odoo.cli.main()
最後目錄結構以下:
5)pycharm添加配置文件:
Script path: 選擇剛纔創建的set-up文件;
Parameters:指定定配置文件,-c config/odoo.conf ;
Python interpreter:選擇剛纔配置的虛擬環境;
6)點擊運行按鈕,咱們能夠看到odoo12已經在8069端口運行:
7)使用瀏覽器訪問localhost:8069查看效果:
Tips:下一篇文章將爲你們帶來包含數據庫建立頁面的優化。