コード例 #1
0
ファイル: accounts.py プロジェクト: cc-archive/coment
def activate_view(request, activation_key, row_level_role_id, user_id, text_id = None):
    activation_key = activation_key.lower() # Normalize before trying anything with it.
    activated, user = Profile.objects.activate_user(activation_key)
    if user:
        if row_level_role_id and not text_id:# old invitations 
            rl = ObjectUserRole.objects.filter(content_type = ContentType.objects.get_for_model(Text),
                                               user__exact = user.id,)
            if len(rl) == 1 :  #in case of a click in the first mail after a sequence of invitation/removal/re-invitation use text.id to recover  
                text_id = rl[0].object_id
           
        if text_id: # new invitations
            rl = ObjectUserRole.objects.filter(object_id__exact = text_id,
                                               content_type = ContentType.objects.get_for_model(Text),
                                               user__exact = user.id,)
            if not rl  :
                return HttpResponseRedirect(reverse('unauthorized'))
            
            row_level_role_id = rl[0].id
            
        if row_level_role_id:
            inviter_user = get_object_or_404(User,pk = user_id)            
            row_level_role = get_object_or_404(ObjectUserRole,pk = row_level_role_id)
           
        if request.method == 'POST':
            form = BasicRegisterForm(request.POST)
            if form.is_valid():
                data = form.cleaned_data
                openid_url = data.get('openid_url', None)
                if not openid_url:  
                    # non openid activation
                    user.username = data['username']
                    user.first_name = data['firstname']
                    user.last_name = data['lastname']
                    user.set_password(data['password'])
                    user.save()
                    profile = user.get_profile() 
                    profile.preferred_language = data['preferred_language']
                    profile.is_temp = False
                    profile.save()
                    user.backend = 'django.contrib.auth.backends.ModelBackend'
                    login(request, user)                
                    request.session['message'] = _(u"Registration successful !")
                    if row_level_role_id:
                        # directly redirect to text
                        redirect_to = reverse('text-viewandcomment', args=[row_level_role.object.id])
                        return HttpResponseRedirect(redirect_to)                    
                    else:
                        return HttpResponseRedirect("/")
                else:
                    # open id activation
                    # 1. store registration data in session
                    # 2. redirect to openid authentification page
                    # 3. home page redirect will:
                    #    - detect the authentification
                    #    - create the user
                    #    - attach the new user to openid
                    #    - login the user
                    request.session[DELAYED_REGISTRATION_SESSION_KEY] = form.cleaned_data
                    from django_openidconsumer.views import begin
                    return begin(request, redirect_to = reverse('openid-complete'))
        else:
            form = BasicRegisterForm(initial={'email': user.email})            
            if not user.get_profile().is_temp:
                # hack : manual backend setting
                user.backend = 'django.contrib.auth.backends.ModelBackend'
                login(request, user)
                if activated:
                    request.session['message'] = _(u"Welcome, your account has been activated.")
                if row_level_role_id:
                    # directly redirect to text
                    redirect_to = reverse('text-viewandcomment', args=[row_level_role.object.id])
                    return HttpResponseRedirect(redirect_to)                    
                else:
                    return HttpResponseRedirect("/")

        text = row_level_role.object
        # slightly modify form appearance
        form.fields['email'].help_text = _(u"this is the email which received the invitation (it will never be displayed on the site)")
        form.fields['email'].widget.attrs['readonly'] = 'readonly'
        TOU_TXT = get_tou_txt()
        return render_to_response('accounts/invitation_register.html', {'has_newsletter':settings.HAS_NEWSLETTER, 'TOU_TXT' : TOU_TXT, 'form': form, 'inviter_user' : inviter_user, 'text' : text} , context_instance=RequestContext(request))            
    else:
        request.session['message'] = _(u"Invalid activation key.")
        return HttpResponseRedirect("/")
コード例 #2
0
ファイル: accounts.py プロジェクト: cc-archive/coment
def register_view(request):
    next_activate = ''
    if request.method == 'POST':
        if is_unattached_openid(request):
            form = RegisterFormWithoutPw(request.POST)
        else:
            form = RegisterForm(request.POST)
        if form.is_valid():
            data = form.cleaned_data
            if is_unattached_openid(request):
                pw = ''
                send = False
            else:
                pw = data['password']
                send = True
            if 'openid_url' in data and data['openid_url']:
                # the user is registering with OpendID authentification
                request.session[DELAYED_REGISTRATION_SESSION_KEY] = data
                from django_openidconsumer.views import begin
                return begin(request, redirect_to = reverse('openid-complete'))
            else:
                # no OpenID:
                # - redirect from an OpenID login
                # - plain old register
                user = Profile.objects.create_inactive_user(data['username'], 
                                                              data['email'], 
                                                              pw, 
                                                              data['preferred_language'],
                                                              send_email = send,
                                                              next_activate = request.POST.get('next_activate',''),
                                                              )
                user.first_name = data['firstname']
                user.last_name = data['lastname']
                user.save()
                # newsletter
                if data['newsletter'] and settings.HAS_NEWSLETTER and not settings.DEBUG:
                    register_mailman(data['email'], settings.NEWSLETTER_ADR, data['username'])
                # opend id?
                if is_unattached_openid(request):
                    # activate user
                    profile = user.get_profile() 
                    profile.is_temp = False
                    profile.save()                
                    user.is_active = True
                    user.save()
                    # attach it
                    from django_openidauth.models import associate_openid
                    associate_openid(user,request.openid)
                    # login
                    user.backend = 'django.contrib.auth.backends.ModelBackend'
                    login(request, user)
                    request.session['message'] = _(u"OpenId Registration successful!")
                    return HttpResponseRedirect("/")            
                else:
                    request.session['message'] = _(u"Registration successful! Check your email to activate your account.")
                    return HttpResponseRedirect("/")            
    else:
        if 'django_language' in request.session:
            default_lang = request.session['django_language']
        elif request.LANGUAGE_CODE:
            default_lang = request.LANGUAGE_CODE
        else:
            default_lang = 'en'
        next_activate = request.GET.get("next_activate",'')
        if is_unattached_openid(request):
            form = RegisterFormWithoutPw(
                                initial={'preferred_language': default_lang}
                                )
        else:
            form = RegisterForm(
                                initial={'preferred_language': default_lang}
                                )
            
        
    TOU_TXT = get_tou_txt()
    return render_to_response('accounts/register.html', {'has_newsletter':settings.HAS_NEWSLETTER, 
                                                         'TOU_TXT':TOU_TXT, 
                                                         'form': form,
                                                         'next_activate': base64.b64encode(next_activate),
                                                         } , context_instance=RequestContext(request))