Files
blechreiz-website/eventplanner/snippets.py

59 lines
1.9 KiB
Python

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