blechreiz-website/website/views.py

63 lines
2.2 KiB
Python
Raw Normal View History

# Create your views here.
from django.shortcuts import render, redirect
from django.contrib.auth import authenticate, login, logout
from django.core.urlresolvers import reverse
from django.http import HttpResponse
from django.utils import simplejson
2013-09-15 14:48:40 +02:00
from eventplanner.models import Event, EventParticipation
from datetime import datetime
def home_view(request):
2013-09-15 14:48:40 +02:00
events = Event.objects.filter( date__gte = datetime.now() ).order_by('date')[:1]
context = dict()
part = EventParticipation.objects.filter( musician__user = request.user ).filter( event = events[0] )
eventTime = datetime( events[0].date.year, events[0].date.month, events[0].date.day,
events[0].displaytime.hour, events[0].displaytime.minute )
context['hasParticipationSetForAllEvents'] = EventParticipation.hasUserSetParticipationForAllEvents( request.user)
context['event'] = events[0]
context['epoch'] = int( (eventTime - datetime.now() ).total_seconds() * 1000 )
context['participation'] = part[0].status
return render( request, 'website/mainpage.html', context )
def logout_view(request):
logout( request )
return redirect( login_view )
def login_view(request):
if request.method == 'POST': # If the form has been submitted...
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
result = dict()
result['err'] = ""
result['redirect'] = ""
if user is not None:
if user.is_active:
if not request.POST.get('remember', None):
request.session.set_expiry( 0 )
login(request, user)
result['redirect'] = reverse( home_view )
else:
result['err'] = "Dein Account wurde deaktiviert."
# Return a 'disabled account' error message
else:
result['err'] = "Falscher Benutzername oder falsches Kennwort."
return HttpResponse( simplejson.dumps(result), mimetype='application/json' )
else:
# TODO check if already logged in --------------------!!!!
return render( request, 'website/login.html' )