blechreiz-website/website/views.py

96 lines
3.4 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
from django.contrib.auth.decorators import login_required
2013-09-15 14:48:40 +02:00
from eventplanner.models import Event, EventParticipation
2013-09-22 17:53:18 +02:00
from musicians.models import Musician
2013-09-15 14:48:40 +02:00
from datetime import datetime
@login_required
def home_view(request):
2013-09-15 14:48:40 +02:00
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
2013-09-22 17:53:18 +02:00
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
2013-09-15 14:48:40 +02:00
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' )