from datetime import datetime from musicians.models import Musician from .models import Event, EventParticipation, NoNextEventException 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 = {} if EventParticipation.isMember(username): part = EventParticipation.objects.filter(user=username).filter(event=nextEvent) if part.exists(): 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 = {} routeInfo["event"] = nextEvent try: musician = Musician.objects.get(user=username) routeInfo["origin"] = ( musician.street + ", " + str(musician.zip_code) + " " + musician.city ) except Musician.DoesNotExist: routeInfo["origin"] = "" if nextEvent.map_location: # map_location has format "lat,longitude,zoomlevel" routeInfo["destination"] = ",".join(nextEvent.map_location.split(",")[:2]) else: routeInfo["destination"] = nextEvent.location context["route"] = routeInfo