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.")
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))
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))
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))
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))
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)
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))
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.")
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))
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))
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))
def permission_required_json(perm): return permission_required(perm, '', lambda r,text,act: json_error(text))
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))