# 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 from eventplanner.models import Event, EventParticipation from musicians.models import Musician from datetime import datetime @login_required def home_view(request): context = dict() # 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] 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 ) countdown['event'] = events[0] countdown['epoch'] = int( (eventTime - datetime.now() ).total_seconds() * 1000 ) countdown['participation'] = part[0].status context['countdown'] = countdown # Route to concert nextConcerts = Event.objects.filter( date__gte = datetime.now(), type = 'Conc' ).order_by('date')[:1] if len( nextConcerts) > 0 : nextConcert = nextConcerts[0] routeInfo = dict() musician = Musician.objects.get( user = request.user ); routeInfo['origin'] = musician.street + ", " + str( musician.zip_code ) + " " + musician.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'] = "" 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'] = "/" 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: # 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 } )