Пост-методы интеграции Lazy Registration с django-регистрацией - PullRequest
2 голосов
/ 31 января 2011

Я использую учебник по этой ссылке , чтобы выполнить мою отложенную регистрацию, и я пытаюсь объединить его с django-регистрация .

В руководстве по ссылке отложенной регистрации просто нужно вызвать одну команду, чтобы переопределить сохраненные события:

def on_registration_complete(self, request):
    Wishlist.reparent_all_my_session_objects(request.session, request.user)
    return HttpResponseRedirect('/')

def on_login_complete(self, request, user, openid=None):
    Wishlist.reparent_all_my_session_objects(request.session, request.user)
    return HttpResponseRedirect('/')

Как мне выполнить пост-перехват с django-registration для вызова команды reparent_all_my_session_objects() после того, как пользователь войдет в систему или зарегистрируется? Нужно ли мне создавать свой собственный auth , копируя из django.contrib.auth ?

1 Ответ

0 голосов
/ 10 февраля 2011

Необходимо создать собственные приемники сигналов при регистрации и входе в систему.

# Handle the signal sent by user_login
from registration.signals import user_login, user_registered
from events.models import Event
from django.contrib.auth import authenticate, login

# Use the signal sent after the login wrapper
def user_login_handler(sender, **kwargs):
    """signal intercept for user_login"""
    request = kwargs['request']
    Event.reparent_all_my_session_objects(request.session, request.user)

def user_registered_handler(sender, **kwargs):
    """signal intercept for user_registered"""
    request = kwargs['request']
    # Authenticate user, so that a User model (instead of AnonymousUser) is assigned to Event
    # Registration form validates password1==password2
    new_user = authenticate(username=request.POST['username'], password=request.POST['password1'])
    login(request, new_user)
    Event.reparent_all_my_session_objects(request.session, new_user)

user_login.connect(user_login_handler)
user_registered.connect(user_registered_handler)
...