Example #1
0
def addToPlaylist(request, event_id):
  user = getUserForTicket(request)
  songsToAdd = json.loads(request.raw_post_data)
  toReturn = { 'added_entries' : [], 'request_ids' : [], 'already_played' : [] }
  for song in songsToAdd:
    inQueue = ActivePlaylistEntry.objects.filter(
      adder=user, 
      client_request_id=song['client_request_id'],
      event__id=event_id)

    #If the song is already in the queue
    if inQueue.exists():
      addedSong = inQueue[0]
      upvotes = UpVote.objects.filter(playlist_entry=addedSong).count()
      downvotes = DownVote.objects.filter(playlist_entry=addedSong).count()
      toReturn['added_entries'].append(
        getActivePlaylistEntryDictionary(addedSong, upvotes, downvotes))
      toReturn['request_ids'].append(song['client_request_id'])

    #If the song has already been played
    elif hasBeenPlayed(song, event_id, user):
      toReturn['already_played'].append(song['client_request_id'])

    #If we actually need to add the song
    else:
      addedSong = addSong2ActivePlaylist(song, event_id, user)
      toReturn['added_entries'].append(
        getActivePlaylistEntryDictionary(addedSong, 1, 0))
      toReturn['request_ids'].append(song['client_request_id'])
  
  return HttpResponse(json.dumps(toReturn), status = 201)
Example #2
0
def getActivePlaylist(request, event_id):
  playlistEntries = ActivePlaylistEntry.objects.filter(
    event__id=event_id, state=u'QE').annotate(
      totalvotes=Sum('vote__weight')).order_by('-totalvotes','time_added')

  activePlaylist = getActivePlaylistArray(playlistEntries)
  currentSongDict = {}
  try:
    currentSong = ActivePlaylistEntry.objects.get(
      event__id=event_id, state=u'PL')
    currentSongDict = getActivePlaylistEntryDictionary(currentSong)
    currentSongDict['time_played'] = \
      PlaylistEntryTimePlayed.objects.get(playlist_entry=currentSong).time_played.replace(microsecond=0).isoformat()
  except ObjectDoesNotExist:
    pass

  return getJSONResponse(json.dumps(
    {
      "current_song" : currentSongDict,
      "active_playlist" : activePlaylist
    }
  ))