12
12
from django .views .generic import FormView , RedirectView
13
13
from oauth .forms import RequireEmailForm
14
14
from django .urls import reverse
15
+ from django .db import transaction
15
16
from DjangoBlog .utils import send_email , get_md5 , save_user_avatar
16
17
from DjangoBlog .utils import get_current_site
17
18
from django .core .exceptions import ObjectDoesNotExist
@@ -86,25 +87,26 @@ def authorize(request):
86
87
if type == 'facebook' :
87
88
user .token = ''
88
89
if user .email :
89
- author = None
90
- try :
91
- author = get_user_model ().objects .get (id = user .author_id )
92
- except ObjectDoesNotExist :
93
- pass
94
- if not author :
95
- result = get_user_model ().objects .get_or_create (email = user .email )
96
- author = result [0 ]
97
- if result [1 ]:
98
- author .username = user .nikename
99
- author .source = 'authorize'
100
- author .save ()
101
-
102
- user .author = author
103
- user .save ()
104
-
105
- oauth_user_login_signal .send (sender = authorize .__class__ , id = user .id )
106
- login (request , author )
107
- return HttpResponseRedirect (nexturl )
90
+ with transaction .atomic ():
91
+ author = None
92
+ try :
93
+ author = get_user_model ().objects .get (id = user .author_id )
94
+ except ObjectDoesNotExist :
95
+ pass
96
+ if not author :
97
+ result = get_user_model ().objects .get_or_create (email = user .email )
98
+ author = result [0 ]
99
+ if result [1 ]:
100
+ author .username = user .nikename
101
+ author .source = 'authorize'
102
+ author .save ()
103
+
104
+ user .author = author
105
+ user .save ()
106
+
107
+ oauth_user_login_signal .send (sender = authorize .__class__ , id = user .id )
108
+ login (request , author )
109
+ return HttpResponseRedirect (nexturl )
108
110
else :
109
111
user .save ()
110
112
url = reverse ('oauth:require_email' , kwargs = {
@@ -122,18 +124,19 @@ def emailconfirm(request, id, sign):
122
124
if not get_md5 (settings .SECRET_KEY + str (id ) + settings .SECRET_KEY ).upper () == sign .upper ():
123
125
return HttpResponseForbidden ()
124
126
oauthuser = get_object_or_404 (OAuthUser , pk = id )
125
- if oauthuser .author :
126
- author = get_user_model ().objects .get (pk = oauthuser .author_id )
127
- else :
128
- result = get_user_model ().objects .get_or_create (email = oauthuser .email )
129
- author = result [0 ]
130
- if result [1 ]:
131
- author .source = 'emailconfirm'
132
- author .username = oauthuser .nikename .strip () if oauthuser .nikename .strip () else "djangoblog" + datetime .datetime .now ().strftime (
133
- '%y%m%d%I%M%S' )
134
- author .save ()
135
- oauthuser .author = author
136
- oauthuser .save ()
127
+ with transaction .atomic ():
128
+ if oauthuser .author :
129
+ author = get_user_model ().objects .get (pk = oauthuser .author_id )
130
+ else :
131
+ result = get_user_model ().objects .get_or_create (email = oauthuser .email )
132
+ author = result [0 ]
133
+ if result [1 ]:
134
+ author .source = 'emailconfirm'
135
+ author .username = oauthuser .nikename .strip () if oauthuser .nikename .strip () else "djangoblog" + datetime .datetime .now ().strftime (
136
+ '%y%m%d%I%M%S' )
137
+ author .save ()
138
+ oauthuser .author = author
139
+ oauthuser .save ()
137
140
oauth_user_login_signal .send (sender = emailconfirm .__class__ , id = oauthuser .id )
138
141
login (request , author )
139
142
0 commit comments