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)
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 } ))