Skip to content

Commit 8b26a1e

Browse files
authored
Merge pull request liangliangyy#323 from liangliangyy/dev
close liangliangyy#322
2 parents 8fb8151 + cb6172b commit 8b26a1e

File tree

2 files changed

+35
-32
lines changed

2 files changed

+35
-32
lines changed

oauth/models.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class OAuthUser(models.Model):
1616
picture = models.CharField(max_length=350, blank=True, null=True)
1717
type = models.CharField(blank=False, null=False, max_length=50)
1818
email = models.CharField(max_length=50, null=True, blank=True)
19-
matedata = models.CharField(max_length=3000, null=True, blank=True)
19+
matedata = models.TextField(null=True, blank=True)
2020
created_time = models.DateTimeField('创建时间', default=now)
2121
last_mod_time = models.DateTimeField('修改时间', default=now)
2222

oauth/views.py

+34-31
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
from django.views.generic import FormView, RedirectView
1313
from oauth.forms import RequireEmailForm
1414
from django.urls import reverse
15+
from django.db import transaction
1516
from DjangoBlog.utils import send_email, get_md5, save_user_avatar
1617
from DjangoBlog.utils import get_current_site
1718
from django.core.exceptions import ObjectDoesNotExist
@@ -86,25 +87,26 @@ def authorize(request):
8687
if type == 'facebook':
8788
user.token = ''
8889
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)
108110
else:
109111
user.save()
110112
url = reverse('oauth:require_email', kwargs={
@@ -122,18 +124,19 @@ def emailconfirm(request, id, sign):
122124
if not get_md5(settings.SECRET_KEY + str(id) + settings.SECRET_KEY).upper() == sign.upper():
123125
return HttpResponseForbidden()
124126
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()
137140
oauth_user_login_signal.send(sender=emailconfirm.__class__, id=oauthuser.id)
138141
login(request, author)
139142

0 commit comments

Comments
 (0)