commit
5d4d737f14
41 changed files with 721 additions and 270 deletions
@ -1,12 +1,13 @@ |
|||||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||||
from django.conf.urls import patterns, url |
from django.conf.urls import patterns, url |
||||||
from admin import UserListView |
from admin import UserListView, EditUser |
||||||
|
|
||||||
urlpatterns = patterns('', |
urlpatterns = patterns('', |
||||||
#url(r'^registration/$', 'accounts.admin.registration'), |
#url(r'^registration/$', 'accounts.admin.registration'), |
||||||
#url(r'^create_admin/$', 'accounts.admin.create_admin'), |
#url(r'^create_admin/$', 'accounts.admin.create_admin'), |
||||||
#url(r'^create_md5user/$', 'accounts.admin.create_md5'), |
#url(r'^create_md5user/$', 'accounts.admin.create_md5'), |
||||||
url(r'^change/(.*)/$', 'accounts.admin.user_change'), |
# url(r'^change/(?P<pk>.*)/$', EditUser.as_view()), |
||||||
|
url(r'^change/(?P<url>.*)/$', 'accounts.admin.user_change'), |
||||||
url(r'^all/$', UserListView.as_view()), |
url(r'^all/$', UserListView.as_view()), |
||||||
url(r'^reset_password_email/$', 'accounts.admin.reset_password_email'), |
url(r'^reset_password_email/$', 'accounts.admin.reset_password_email'), |
||||||
) |
) |
||||||
@ -1,41 +1,97 @@ |
|||||||
|
|
||||||
from accounts.models import User |
from accounts.models import User |
||||||
|
import random |
||||||
|
import string |
||||||
|
|
||||||
|
def random_pass(): |
||||||
|
digits = random.sample(('0', '1', '2', '3', '4', '5', '6', '7', '8', '9'), 4) |
||||||
|
chars = random.sample(string.lowercase[:], 4) |
||||||
|
password = chars + digits |
||||||
|
random.shuffle(password) |
||||||
|
return ''.join(password) |
||||||
|
|
||||||
def load_user(details, response, uid, *args, **kwargs): |
|
||||||
if details.get('email'): |
|
||||||
username = details.get('email') |
|
||||||
else: |
|
||||||
username = str(uid) |
|
||||||
|
|
||||||
user = User.objects.safe_get(username=username) |
def load_user(strategy, details, response, uid, *args, **kwargs): |
||||||
|
user = None |
||||||
|
if details.get('email'): |
||||||
|
email = details.get('email') |
||||||
|
user = User.objects.safe_get(email=email) |
||||||
|
|
||||||
return {'user': user, 'is_new': False} |
return {'user': user, 'is_new': False} |
||||||
|
|
||||||
|
from django.contrib.sites.models import Site, RequestSite |
||||||
|
from registration.models import RegistrationProfile |
||||||
|
|
||||||
|
|
||||||
def create_user(strategy, details, response, uid, user=None, *args, **kwargs): |
def create_user(strategy, details, response, uid, user=None, *args, **kwargs): |
||||||
if user: |
if user: |
||||||
return {'user': user, 'is_new': False} |
return {'user': user, 'is_new': False} |
||||||
else: |
else: |
||||||
|
request = strategy.request |
||||||
|
if Site._meta.installed: |
||||||
|
site = Site.objects.get_current() |
||||||
|
else: |
||||||
|
site = RequestSite(request) |
||||||
|
new_user = RegistrationProfile.objects.create_inactive_user(details['first_name'], details['last_name'], details['email'], |
||||||
|
random_pass(), site or 1) |
||||||
|
signals.user_registered.send(sender=User, user=new_user, request=request) |
||||||
|
#user = User.objects.create_social_user(username, details['first_name'], details['last_name']) |
||||||
|
return {'user': new_user, 'is_new': True} |
||||||
|
|
||||||
if details.get('email'): |
|
||||||
|
|
||||||
username = details.get('email') |
|
||||||
|
from django.shortcuts import redirect |
||||||
|
from social.pipeline.partial import partial |
||||||
|
from registration import signals |
||||||
|
|
||||||
|
@partial |
||||||
|
def require_email(strategy, details, user=None, is_new=False, *args, **kwargs): |
||||||
|
if user and user.email: |
||||||
|
return |
||||||
|
elif is_new and not details.get('email'): |
||||||
|
email = strategy.request_data().get('email') |
||||||
|
if email: |
||||||
|
details['email'] = email |
||||||
else: |
else: |
||||||
username = str(uid) |
strategy.request.session['new_email'] = True |
||||||
|
return redirect('acquire_email') |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
user = User.objects.create_social_user(username, details['first_name'], details['last_name']) |
|
||||||
return {'user': user, 'is_new': True} |
|
||||||
|
from django.core import signing |
||||||
|
from django.core.mail import EmailMultiAlternatives |
||||||
|
from django.conf import settings |
||||||
|
from django.core.urlresolvers import reverse |
||||||
|
|
||||||
|
def SendVerificationEmail(strategy, backend, code): |
||||||
""" |
""" |
||||||
if details.get('email'): |
Send an email with an embedded verification code and the necessary details to restore the required session |
||||||
user = User.objects.safe_get(email=details['email']) |
elements to complete the verification and sign-in, regardless of what browser the user completes the |
||||||
if user: |
verification from. |
||||||
return {'user': user, 'is_new': False} |
""" |
||||||
else: |
signature = signing.dumps({"session_key": strategy.session.session_key, "email": code.email}, |
||||||
user = User.objects.create_user(email=details['email'], first_name=details['first_name'], |
key=settings.EMAIL_SECRET_KEY) |
||||||
last_name=details['last_name'], password='1q2w3e4r', is_active=True) |
verifyURL = "{0}?verification_code={1}&signature={2}".format( |
||||||
|
reverse('social:complete', args=(backend.name,)), |
||||||
|
code.code, signature) |
||||||
|
verifyURL = strategy.request.build_absolute_uri(verifyURL) |
||||||
|
|
||||||
return {'user': user, 'is_new': True} |
emailHTML = ''# Include your function that returns an html string here |
||||||
else: |
emailText = """Welcome to Expomap.ru! |
||||||
return None |
In order to login with your new user account, you need to verify your email address with us. |
||||||
""" |
Please click on <a href='{verifyURL}'>this link</a> to continue registration. |
||||||
|
""".format(verifyURL=verifyURL) |
||||||
|
|
||||||
|
kwargs = { |
||||||
|
"subject": "Verify Your Account", |
||||||
|
"body": emailText, |
||||||
|
"from_email": settings.CALLBACK_EMAIL, |
||||||
|
"to": [code.email], |
||||||
|
} |
||||||
|
|
||||||
|
email = EmailMultiAlternatives(**kwargs) |
||||||
|
email.attach_alternative(emailHTML, "text/html") |
||||||
|
email.send() |
||||||
Loading…
Reference in new issue