2012-05-08 22 views
0

在我的Satchmo項目中,我有一個令人討厭的bug,其中contact_contact表中的某行被重新分配給新用戶。創建新帳戶時聯繫人被劫持

如果我已在一個瀏覽器窗口中登錄商店,然後(在另一個新窗口中),通過瀏覽到/ accounts/register /創建一個新帳戶。如果我先登出,不會發生這種情況。

在數據庫中發生的事情是,我記錄的原始用戶(他的用戶配置文件都已設置)「丟失」了他的用戶配置文件。發生的事情是,該用戶的「聯繫人」不再爲他存在,因爲它現在「指向」新用戶。即它的user_id字段現在指向auth_user中新的'id'。聯繫人記錄的內容將被新用戶的信息覆蓋。

我還沒有改變之外registration_form.html

被製成在的Satchmo的登錄碼的任何變化有可能,在登記表被讀出的一些從POST請求中的用戶信息,並考慮在接觸屬於前用戶?

我重現了錯誤,然後在數據庫上做了一個'差異'。這是確鑿的證據:

+INSERT INTO "auth_user" VALUES(138,'newuser','New','User','[email protected]',... 

-INSERT INTO "contact_contact" VALUES(1,'','Old','User',2,'Customer',NULL,'1999-01-01','[email protected]','','2012-04-30'); 
+INSERT INTO "contact_contact" VALUES(1,'','New','User',138,'Customer',NULL,'1999-02-02','[email protected]','','2012-04-30'); 

你可以清楚地看到,A)記錄號碼1被重新使用,並且二)它現在指向id爲創建新用戶138

非常感謝, Thomas

+0

也許我必須知道的不多,但你會介意顯示一些代碼示例你的零件如何溝通在一起?從文字只有我什麼都不懂。 –

回答

0

我很確定這是Satchmo中的一個錯誤。這是我的修復:

diff -paurb src.orig//satchmo/satchmo/apps/satchmo_store/accounts/views.py src//satchmo/satchmo/apps/satchmo_store/accounts/views.py 
--- src.orig//satchmo/satchmo/apps/satchmo_store/accounts/views.py 2012-03-30 07:42:40.000000000 +0200 
+++ src//satchmo/satchmo/apps/satchmo_store/accounts/views.py 2012-05-09 07:33:01.000000000 +0200 
@@ -194,7 +194,7 @@ def register_handle_form(request, redire 
    if request.method == 'POST': 
     form = RegistrationForm(request.POST) 
     if form.is_valid(): 
-   contact = form.save(request) 
+   contact = form.save(request,force_new=True) 

      # look for explicit "next" 
      next = request.POST.get('next', '')