全球排名第一的免費開源ERP Odoo13同賬戶多登錄被限制解決方案

全球排名第一的免費開源ERP Odoo13同賬戶多登錄被限制解決方案

問題復現

全球排名第一的免費開源ERP Odoo13同賬戶多登錄被限制解決方案

A partner is linked to only one visitor 這個錯誤是我們開源智造服務一個Odoo13系統上線時發現的問題,其場景主要問題表現在於當客戶下面的供應商通過手機正常登錄後,用pc再次登錄看訂單詳情時,系統報告此類錯誤。具體就是如我們所說的odoo13 同賬號多地登錄發現的錯誤。

問題原因分析

全球排名第一的免費開源ERP Odoo13同賬戶多登錄被限制解決方案

我們都知道Odoo官方的SaaS版系統是企業版,企業版與社區版的關係結構如同內核與高級增強應用的關係,因為部分客戶鑽了SaaS的漏洞,使用一個賬戶多地使用,這樣可以減少投入開支。Odoo官方針對這樣的問題,估摸著用內核底層代碼的限制方式來解決了這問題,這樣就導致無論是社區版還是企業版的私部都被坑了。按照道理來說官方應該自己通過SaaS技術來解決問題,而不是通過內核代碼來解決。

解決思路

通過底層代碼的檢查,發現Odoo13在website的子模塊當中有如下一行代碼:

 _sql_constraints = [
('access_token_unique', 'unique(access_token)', 'Access token should be unique.'),
('partner_uniq', 'unique(partner_id)', 'A partner is linked to only one visitor.'),

這行代碼表述的意思是通過創建一個partner_uniq的unique唯一限制關鍵值在PostgreSQL當中,我們可以通過如下兩個方式來解決:

  • 進入數據庫通過SQL語句來拔掉這個unique
  • 部署Odoo之前,將該代碼刪除

老楊建議走SQL語句拔除的辦法較為妥當,帶來的好處是:1. 徹底解決該問題。2.代碼更新不受影響。

技術解決方案

進入數據庫管理工具,或是通過Odoo服務器動作,編寫如下代碼:

ALTER TABLE website_visitor Drop constraint website_visitor_partner_uniq
全球排名第一的免費開源ERP Odoo13同賬戶多登錄被限制解決方案

老楊自己編寫的服務器動作,偷個懶!~你懂得

最後送上各位Odoo粉絲的一點驚喜

從本月起,關注開源智造或老楊的官方微信、頭條號、知乎等自媒體平臺轉發分享到朋友圈,並且私信將轉發截圖、公司名稱、聯繫方式等信息反饋,就有機會獲得開源智造·Odoo新年回饋大禮包,部分大禮包產品信息如下:

全球排名第一的免費開源ERP Odoo13同賬戶多登錄被限制解決方案

開源智造·Odoo個性便籤本

全球排名第一的免費開源ERP Odoo13同賬戶多登錄被限制解決方案

開源智造·Odoo超級記事本

後期我會找機會單獨為大家種草我們的這些新年大禮包的禮品產品介紹,一定是會讓各位Odoo粉絲真心感到喜歡,同時依然我們堅持感動人心,價格厚道的好產品!


分享到:


相關文章: