commit
5d4d737f14
41 changed files with 721 additions and 270 deletions
@ -1,12 +1,13 @@ |
||||
# -*- coding: utf-8 -*- |
||||
from django.conf.urls import patterns, url |
||||
from admin import UserListView |
||||
from admin import UserListView, EditUser |
||||
|
||||
urlpatterns = patterns('', |
||||
#url(r'^registration/$', 'accounts.admin.registration'), |
||||
#url(r'^create_admin/$', 'accounts.admin.create_admin'), |
||||
#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'^reset_password_email/$', 'accounts.admin.reset_password_email'), |
||||
) |
||||
@ -1,41 +1,97 @@ |
||||
|
||||
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} |
||||
|
||||
from django.contrib.sites.models import Site, RequestSite |
||||
from registration.models import RegistrationProfile |
||||
|
||||
|
||||
def create_user(strategy, details, response, uid, user=None, *args, **kwargs): |
||||
if user: |
||||
return {'user': user, 'is_new': False} |
||||
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: |
||||
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'): |
||||
user = User.objects.safe_get(email=details['email']) |
||||
if user: |
||||
return {'user': user, 'is_new': False} |
||||
else: |
||||
user = User.objects.create_user(email=details['email'], first_name=details['first_name'], |
||||
last_name=details['last_name'], password='1q2w3e4r', is_active=True) |
||||
Send an email with an embedded verification code and the necessary details to restore the required session |
||||
elements to complete the verification and sign-in, regardless of what browser the user completes the |
||||
verification from. |
||||
""" |
||||
signature = signing.dumps({"session_key": strategy.session.session_key, "email": code.email}, |
||||
key=settings.EMAIL_SECRET_KEY) |
||||
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} |
||||
else: |
||||
return None |
||||
""" |
||||
emailHTML = ''# Include your function that returns an html string here |
||||
emailText = """Welcome to Expomap.ru! |
||||
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