56 lines
1.8 KiB
Python
56 lines
1.8 KiB
Python
|
|
from datetime import datetime
|
|
from models import Event, EventParticipation, NoNextEventException
|
|
from musicians.models import Musician
|
|
|
|
|
|
|
|
def addEventCountdownForNextEventToContext( context, username, eventType = "" ):
|
|
"""Returns an object that has to be added to the render context on the page where the countdown
|
|
should be displayed . The username is required to also supply participation information."""
|
|
|
|
try:
|
|
nextEvent = Event.getNextEvent( eventType, False )
|
|
except NoNextEventException:
|
|
return
|
|
|
|
countdown = dict()
|
|
|
|
if EventParticipation.isMember( username ):
|
|
part = EventParticipation.objects.filter( user = username ).filter( event = nextEvent )
|
|
countdown['participation'] = part[0].status
|
|
|
|
eventTime = nextEvent.displaydatetime
|
|
countdown['event'] = nextEvent
|
|
countdown['epoch'] = int( (eventTime - datetime.now() ).total_seconds() * 1000 )
|
|
|
|
context["countdown"] = countdown
|
|
|
|
|
|
def addEventRouteForNextEventToContext( context, username, eventType = ""):
|
|
"""Returns an object that has to be added to the render context on the page where the route
|
|
should be displayed . The starting address of the route will be the home of the specified user"""
|
|
|
|
try:
|
|
nextEvent = Event.getNextEvent( eventType, True )
|
|
except NoNextEventException:
|
|
return
|
|
|
|
routeInfo = dict()
|
|
|
|
routeInfo['event'] = nextEvent
|
|
|
|
musician = Musician.objects.get( user = username );
|
|
routeInfo['origin'] = musician.street + ", " + str( musician.zip_code ) + " " + musician.city
|
|
|
|
if nextEvent.map_location:
|
|
# map_location has format "lat,longitute,zoomlevel"
|
|
routeInfo['destination'] = ",".join( nextEvent.map_location.split(",")[:2] )
|
|
else:
|
|
routeInfo['destination'] = nextEvent.location
|
|
|
|
|
|
context["route"] = routeInfo
|
|
|
|
|