예제 #1
0
def user_register(request):
    
    from django.contrib.auth.models import User
    
    # data to be sent to template
    data = {}
    
    # redirect url
    redir = '/'

    # if user is already authenticated, redirect to home
    if request.user.is_authenticated():
        return HttpResponseRedirect(redir)

    # if post method, try to register user
    if request.method == 'POST':
        form = RegistrationForm(request.POST)
        data['form'] = form

        if form.is_valid():
            #username    = form.cleaned_data['email']
            email       = form.cleaned_data['email']
            first_name  = form.cleaned_data['first_name']
            last_name   = form.cleaned_data['last_name']
            password    = form.cleaned_data['password']           

            try:
                # create user
                user = User.objects.create_user(username=email,
                                                first_name=first_name, 
                                                last_name=last_name, 
                                                password=password)
 
                # create empty user profile
                user_profile = UserProfile(user=user)

                # login user
                # TODO: o quer fazer se o login falhar?
                user = authenticate(username=email, password=password)
                if user is not None:
                    if user.is_active:
                        login(request, user)
                        return HttpResponseRedirect(redir)
                    else:
                        form.add_error(None, 'Account disabled. Contact administrator.')
                else:
                    form.add_error(None, 'Invalid username or password.')
            except:
                form.add_error(None, 'Could not create user.')
            else:
                data['user_created'] = 1
    else:
        data['form'] = RegistrationForm()

    return render(request, 'register.html', data)