blechreiz-website/website/views.py

117 lines
4.0 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.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
from django.contrib.auth.models import User
2013-09-15 14:48:40 +02:00
2013-09-26 21:56:32 +02:00
@login_required
def home_view(request):
2013-09-15 14:48:40 +02:00
context = dict()
2013-09-26 21:56:32 +02:00
# Event participation for slider text
context['hasParticipationSetForAllEvents'] = EventParticipation.hasUserSetParticipationForAllEvents( request.user)
# Countdown
countdown = dict()
events = Event.objects.filter( date__gte = datetime.now() ).order_by('date')[:1]
if ( len(events) > 0 ):
nextEvent = events[0]
2013-09-26 21:56:32 +02:00
part = EventParticipation.objects.filter( 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 )
2013-09-26 21:56:32 +02:00
countdown['event'] = events[0]
countdown['epoch'] = int( (eventTime - datetime.now() ).total_seconds() * 1000 )
countdown['participation'] = part[0].status
2013-09-26 21:56:32 +02:00
context['countdown'] = countdown
2013-09-22 17:53:18 +02:00
2013-09-26 21:56:32 +02:00
# Route to concert
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()
2013-09-26 21:56:32 +02:00
musician = Musician.objects.get( user = request.user );
routeInfo['origin'] = musician.street + ", " + str( musician.zip_code ) + " " + musician.city
2013-09-22 17:53:18 +02:00
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-26 21:56:32 +02:00
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 userlistForAutocompletion(request):
result = [ u.username for u in User.objects.all() ]
return HttpResponse( simplejson.dumps(result), mimetype='application/json' )
2013-09-26 08:31:19 +02:00
def login_view( request ):
if request.method == 'POST': # If the form has been submitted...
raiseFirstLetter = lambda s: s[:1].upper() + s[1:] if s else ''
username = raiseFirstLetter( request.POST['username'] )
password = request.POST['password']
user = authenticate( username=username, password=password )
result = dict()
2013-09-26 08:31:19 +02:00
result['err'] = ""
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'] = "/"
2013-09-26 08:31:19 +02:00
print ( "Setting Redirect" )
if 'next' in request.POST :
result['redirect'] = request.POST["next"]
print ( "Using " + request.POST["next"] )
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:
2013-09-26 08:31:19 +02:00
# Check if user already logged in
if request.user.is_authenticated():
return redirect( "/")
if 'next' in request.GET:
nextPage = request.GET['next']
else:
nextPage = "/"
return render( request, 'website/login.html', { 'next' : nextPage } )