blechreiz-website/website/views.py

96 lines
3.4 KiB
Python

# 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
from django.contrib.auth.decorators import login_required
from eventplanner.models import Event, EventParticipation
from musicians.models import Musician
from datetime import datetime
@login_required
def home_view(request):
context = dict()
events = Event.objects.filter( date__gte = datetime.now() ).order_by('date')[:1]
if ( len(events) > 0 ):
print "len(events): " + str( len(events ))
nextEvent = events[0]
part = EventParticipation.objects.filter( musician__user = request.user ).filter( event = nextEvent )
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
else:
context['hasParticipationSetForAllEvents'] = True
nextConcerts = Event.objects.filter( date__gte = datetime.now(), type = 'Conc' ).order_by('date')[:1]
if len( nextConcerts) > 0 :
nextConcert = nextConcerts[0]
routeInfo = dict()
user = Musician.objects.get( user = request.user );
routeInfo['origin'] = user.street + ", " + str( user.zip_code ) + " " + user.city
if nextConcert.map_location:
# map_location has format "lat,longitute,zoomlevel"
routeInfo['destination'] = ",".join( nextConcert.map_location.split(",")[:2] )
else:
routeInfo['destination'] = nextConcert.location
context['routeInfo'] = routeInfo
context['nextConcert'] = nextConcert
context['hasNextConcertInfo'] = True
else:
context['hasNextConcertInfo'] = False
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 )
result['redirect'] = "/"
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' )