from django.shortcuts import render_to_response
from django.template.loader import get_template


def homepage(request):
    return render_to_response('homepage.html', dict(
        user = request.user
    ))

def login(request):
    import django.forms as forms
    import django.contrib.auth as auth
    error = None
    class Loginform(forms.Form):
        username = forms.fields.CharField()
        password= forms.fields.CharField(widget=forms.widgets.PasswordInput)
    if request.method == 'POST':
        form = Loginform(request.POST)
        if form.is_valid():
            user = auth.authenticate(
                username = form.cleaned_data['username'],
                password = form.cleaned_data['password']
            )
            if user and user.is_active:
                from django.http import HttpResponseRedirect
                auth.login(request, user)
                return HttpResponseRedirect('/')
            error = "User name and/or password not recognised or account disabled"
        else:
            error = "You must fill in both fields"
    else:
        form = Loginform()
    return render_to_response('login.html', dict(
        loginform = form,
        error = error
    ))

def register(request):
    import django.forms as forms
    import django.contrib.auth as auth
    class RegistrationForm(forms.Form):
        username = forms.fields.CharField()
        password1 = forms.fields.CharField(widget=forms.widgets.PasswordInput)
        password2 = forms.fields.CharField(widget=forms.widgets.PasswordInput)
    error = None
    if request.method == 'POST':
        form = RegistrationForm(request.POST)
        if form.is_valid():
            if form.cleaned_data['password1'] == form.cleaned_data['password2']:
                try:
                    user = auth.models.User()
                    user.username = form.cleaned_data['username']
                    user.set_password(form.cleaned_data['password1'])
                    user.save()
                    from django.http import HttpResponseRedirect
                    return HttpResponseRedirect('/login/')
                except:
                    error = "We were not able to create the user account. Try a different user name."
            else:
                error = "You must type the same password in to both fields"
        else:
            error = "Please fill in all of the fields"
    else:
        form = RegistrationForm()
    return render_to_response('register.html', dict(
        error = error,
        registrationform = form
    ))
