创建新帐户时联系人被劫持

时间:2012-05-08 13:23:30

标签: django satchmo

在我的Satchmo项目中,我有一个讨厌的错误,其中contact_contact表中的一行被重新分配给新用户。

如果我在一个浏览器窗口中登录到商店,然后(在另一个新窗口中)我通过浏览到/ accounts / register /创建一个新帐户。如果我先退出,就不会发生这种情况。

在数据库中发生的事情是我记录的原始用户(他的用户配置文件都设置完毕)“丢失”了他的用户配置文件。发生的事情是该用户的“联系人”不再存在,因为它现在“指向”新用户。即它的user_id字段现在指向auth_user中的新“id”。联系人记录的内容将被新用户的信息覆盖。

除了更改registration_form.html

之外,我没有对Satchmo中的登录代码进行任何更改

注册表格是否有可能从POST请求中读取一些用户信息,并接管属于前用户的联系人?

我重现了这个错误,然后在数据库上做了'diff'。这是吸烟枪:

+INSERT INTO "auth_user" VALUES(138,'newuser','New','User','y@n.org',...

-INSERT INTO "contact_contact" VALUES(1,'','Old','User',2,'Customer',NULL,'1999-01-01','x@n.org','','2012-04-30');
+INSERT INTO "contact_contact" VALUES(1,'','New','User',138,'Customer',NULL,'1999-02-02','y@n.org','','2012-04-30');

您可以清楚地看到a)正在重复使用记录号1,并且b)它现在指向使用id 138创建的新用户。

非常感谢, 托马斯

1 个答案:

答案 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', '')