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