示例#1
0
def json_email_song_link(request):
    form = request.POST
    email_address = form.get('email', '')
    if not re.match("^[-_a-zA-Z0-9.]+@[-_a-zA-Z0-9.]+$", email_address):
        return json_response.json_error("Invalid email address.")
    songs = get_song_list(form)
    if songs:
        message = ["From: Audio Enclave <%s>\r\n" %
                   settings.DEFAULT_FROM_EMAIL,
                   "To: %s\r\n\r\n" % email_address,
                   "Someone sent you a link to the following "]
        if len(songs) == 1:
            message.append("song:\n\n")
            subject = songs[0].title
        else:
            message.append("songs:\n\n")
            subject = "%d songs" % len(songs)
        for song in songs:
            message.extend((song.title, "\n",
                            song.artist, "\n",
                            song.album, "\n",
                            settings.HOST_NAME +
                            song.get_absolute_url(), "\n\n"))
        # Ship it!
        send_mail("Link to " + subject, "".join(message),
                  settings.DEFAULT_FROM_EMAIL, (email_address,))
        msg = "An email has been sent to %s." % email_address
        return json_response.json_success(msg)
    else: return json_response.json_error("No matching songs were found.")
示例#2
0
def json_edit(request):
    if not request.user.is_authenticated():
        return json_error('user not logged in')
    form = request.POST

    try: song = Song.objects.get(pk=int(form.get('id','')))
    except (ValueError, TypeError, Song.DoesNotExist), err:
        return json_error(str(err))
示例#3
0
def json_edit(request):
    if not request.user.is_authenticated():
        return json_error('user not logged in')
    form = request.POST

    try:
        song = Song.objects.get(pk=int(form.get('id', '')))
    except (ValueError, TypeError, Song.DoesNotExist), err:
        return json_error(str(err))
示例#4
0
def json_control(request):
    action = request.POST.get('action', '')
    channel = Channel.default()
    ctrl = channel.controller()
    try:
        if action == 'play': ctrl.unpause()
        elif action == 'pause': ctrl.pause()
        elif action == 'skip': ctrl.skip()
        elif action == 'shuffle': ctrl.shuffle()
        else: return json_error('invalid action: ' + action)
    except ControlError, err:
        return json_error(str(err))
示例#5
0
def json_control(request):
    action = request.POST.get('action','')
    channel = Channel.default()
    ctrl = channel.controller()
    try:
        if action == 'play': ctrl.unpause()
        elif action == 'pause': ctrl.pause()
        elif action == 'skip': ctrl.skip()
        elif action == 'shuffle': ctrl.shuffle()
        else: return json_error('invalid action: ' + action)
    except ControlError, err:
        return json_error(str(err))
示例#6
0
def edit_playlist(request, playlist_id):
    # Get the playlist.
    form = request.POST
    try: playlist = Playlist.objects.get(pk=playlist_id)
    except Playlist.DoesNotExist:
        return json_response.json_error('That playlist does not exist.')
    # Check that they can edit it.
    if not playlist.can_edit(request.user):
        return json_response.json_error('You are not authorized to edit this'
                                        ' playlist.')
    songs = get_song_list(form)
    if songs:
        playlist.set_songs(songs)
        playlist.save()
    return json_response.json_success('Successfully edited "%s".' %
                                      playlist.name)
示例#7
0
def edit_playlist(request, playlist_id):
    # Get the playlist.
    form = request.POST
    try:
        playlist = Playlist.objects.get(pk=playlist_id)
    except Playlist.DoesNotExist:
        return json_response.json_error('That playlist does not exist.')
    # Check that they can edit it.
    if not playlist.can_edit(request.user):
        return json_response.json_error('You are not authorized to edit this'
                                        ' playlist.')
    songs = get_song_list(form)
    if songs:
        playlist.set_songs(songs)
        playlist.save()
    return json_response.json_success('Successfully edited "%s".' %
                                      playlist.name)
示例#8
0
def queue_to_front(request):
    form = request.REQUEST
    songs = get_song_list(form)
    if len(songs) != 1:
        raise json_error("Can only queue one song to front")

    song = songs[0]
    channel = Channel.default()
    ctrl = channel.controller()

    try:
        ctrl.queue_to_front(song)

    except ControlError, err:
        if 'getupdate' in form:
            return json_error(str(err))
        else:
            return html_error(request, str(err))
示例#9
0
def queue_to_front(request):
    form = request.REQUEST
    songs = get_song_list(form)
    if len(songs) != 1:
        raise json_error("Can only queue one song to front")

    song = songs[0]
    channel = Channel.default()
    ctrl = channel.controller()

    try:
        ctrl.queue_to_front(song)

    except ControlError, err:
        if 'getupdate' in form:
            return json_error(str(err))
        else:
            return html_error(request, str(err))
示例#10
0
def json_email_song_link(request):
    form = request.POST
    email_address = form.get("email", "")
    if not re.match("^[-_a-zA-Z0-9.]+@[-_a-zA-Z0-9.]+$", email_address):
        return json_response.json_error("Invalid email address.")
    songs = get_song_list(form)
    if songs:
        message = [
            "From: Audio Enclave <%s>\r\n" % settings.DEFAULT_FROM_EMAIL,
            "To: %s\r\n\r\n" % email_address,
            "Someone sent you a link to the following ",
        ]
        if len(songs) == 1:
            message.append("song:\n\n")
            subject = songs[0].title
        else:
            message.append("songs:\n\n")
            subject = "%d songs" % len(songs)
        for song in songs:
            message.extend(
                (
                    song.title,
                    "\n",
                    song.artist,
                    "\n",
                    song.album,
                    "\n",
                    settings.HOST_NAME + song.get_absolute_url(),
                    "\n\n",
                )
            )
        # Ship it!
        send_mail("Link to " + subject, "".join(message), settings.DEFAULT_FROM_EMAIL, (email_address,))
        msg = "An email has been sent to %s." % email_address
        return json_response.json_success(msg)
    else:
        return json_response.json_error("No matching songs were found.")
示例#11
0
def queue_songs(request):
    form = request.REQUEST
    # Get the selected songs.
    songs = get_song_list(form)
    # Queue the songs.
    channel = Channel.default()
    ctrl = channel.controller()
    referrer = request.META.get('HTTP_REFERER', '')
    referrer_path = urlparse.urlparse(referrer).path
    if 'recommendations' in referrer_path:
        good_recommendations(request)
    try:
        ctrl.add_songs(songs)
    except ControlError, err:
        if 'getupdate' in form:
            return json_error(str(err))
        else:
            return html_error(request, str(err))
示例#12
0
def favorite_song(request, song_id):
    if not request.user.is_authenticated():
        return json_response.json_error('User not authenticated.')
    favorited = request.POST['favorited'] == 'true'
    try:
        song = Song.objects.get(pk=int(song_id))
    except Song.DoesNotExist:
        raise Http404
    pl = Playlist.get_favorites(request.user, create=True)
    try:
        fav = PlaylistEntry.objects.get(song=song, playlist=pl)
    except PlaylistEntry.DoesNotExist:
        fav = None
    if favorited and not fav:
        pl.append_songs([song])
    elif not favorited and fav:
        fav.delete()
    return json_response.json_success("%s favorited: %r" % (song_id, favorited))
示例#13
0
def queue_songs(request):
    form = request.REQUEST
    # Get the selected songs.
    songs = get_song_list(form)
    # Queue the songs.
    channel = Channel.default()
    ctrl = channel.controller()
    referrer = request.META.get('HTTP_REFERER', '')
    referrer_path = urlparse.urlparse(referrer).path
    if 'recommendations' in referrer_path:
        good_recommendations(request)
    try:
        ctrl.add_songs(songs)
    except ControlError, err:
        if 'getupdate' in form:
            return json_error(str(err))
        else:
            return html_error(request, str(err))
示例#14
0
def favorite_song(request, song_id):
    if not request.user.is_authenticated():
        return json_response.json_error("User not authenticated.")
    favorited = request.POST["favorited"] == "true"
    try:
        song = Song.objects.get(pk=int(song_id))
    except Song.DoesNotExist:
        raise Http404
    pl = Playlist.get_favorites(request.user, create=True)
    try:
        fav = PlaylistEntry.objects.get(song=song, playlist=pl)
    except PlaylistEntry.DoesNotExist:
        fav = None
    if favorited and not fav:
        pl.append_songs([song])
    elif not favorited and fav:
        fav.delete()
    return json_response.json_success("%s favorited: %r" % (song_id, favorited))
示例#15
0
def permission_required_json(perm):
    return permission_required(perm, '', lambda r,text,act: json_error(text))
示例#16
0
def _json_control_update(request, channel):
    """Utility for returning JSON with updated channel status."""
    try:
        channel_info = json_channel_info(request, channel)
    except ControlError, err:
        return json_error(str(err))
示例#17
0
def _json_control_update(request, channel):
    """Utility for returning JSON with updated channel status."""
    try:
        channel_info = json_channel_info(request, channel)
    except ControlError, err:
        return json_error(str(err))