def get(self): google_user = users.get_current_user() if not google_user: self.redirect(users.create_login_url(self.request.uri)) else: app_user = utils.get_current_user() if google_user and not app_user: app_user = utils.init_new_user(google_user) share_hash = utils.url_to_entity_key(self.request.uri) q = db.GqlQuery("SELECT * FROM Playlist WHERE share_hash = :share_hash", share_hash=share_hash) playlist = q.get() if playlist: if not app_user.has_playlist(playlist): last_position = app_user.last_lib_position() library_item = models.Library(user=app_user, position=last_position+1 , playlist=playlist, is_owner=False) library_item.put() flash = "add_shared_playlist" else: flash = "playlist_already_in_lib" else: flash = "playlist_not_found" self.redirect("/?flash="+flash)
def get(self): key = utils.url_to_entity_key(self.request.uri) if key: playlist = db.get(db.Key(key)) if playlist: library_item = playlist.library_item_for_current_user() self.response.out.write(library_item.serialize())
def post(self): method = self.request.get("_method") key = utils.url_to_entity_key(self.request.uri) if key: playlist = db.get(db.Key(key)) if playlist: current_user = utils.get_current_user() #Get corresponding link library_item = playlist.library_item_for_user(current_user) if method == "PUT": need_version_control = False playlist_changed = False if(self.request.get('position')): #Rights: Can always update this current_user.re_sort_playlists(library_item, int(self.request.get('position'))) if (playlist.collaborative or library_item.is_owner): #Rights: Owner or collaborators can update this if playlist.smart: utils.parse_smart_filters(playlist, self.request) playlist_changed = True if self.request.get('tracks'): playlist.tracks = self.request.get('tracks') playlist_changed = True need_version_control = playlist.collaborative if library_item.is_owner: #Rights: Only owner can update this if(self.request.get('name') and len(self.request.get('name')) > 0): playlist.name = utils.strip_html(self.request.get('name')) playlist_changed = True if(self.request.get('collaborative')): playlist.collaborative = utils.convert_javascript_bool_to_python(self.request.get('collaborative')) playlist_changed = True if playlist_changed: if need_version_control: if self.request.get('version') and not int(self.request.get('version')) < playlist.version: playlist.version += 1 playlist.put() self.response.out.write(utils.status_code_json(200)) else: self.response.out.write(library_item.serialize()) else: playlist.put() self.response.out.write(utils.status_code_json(200)) else: self.response.out.write(utils.status_code_json(200)) elif method == "DELETE": library_item.delete() current_user.re_index_playlists() if not playlist.has_user(): playlist.delete() self.response.out.write(utils.status_code_json(200))
def post(self): method = self.request.get("_method") key = utils.url_to_entity_key(self.request.uri) if key: playlist = db.get(db.Key(key)) if playlist: current_user = utils.get_current_user() #Get corresponding link library_item = playlist.library_item_for_user(current_user) if method == "PUT": need_version_control = False playlist_changed = False if (self.request.get('position') ): #Rights: Can always update this current_user.re_sort_playlists( library_item, int(self.request.get('position'))) if (playlist.collaborative or library_item.is_owner ): #Rights: Owner or collaborators can update this if playlist.smart: utils.parse_smart_filters(playlist, self.request) playlist_changed = True if self.request.get('tracks'): playlist.tracks = self.request.get('tracks') playlist_changed = True need_version_control = playlist.collaborative if library_item.is_owner: #Rights: Only owner can update this if (self.request.get('name') and len(self.request.get('name')) > 0): playlist.name = utils.strip_html( self.request.get('name')) playlist_changed = True if (self.request.get('collaborative')): playlist.collaborative = utils.convert_javascript_bool_to_python( self.request.get('collaborative')) playlist_changed = True if playlist_changed: if need_version_control: if self.request.get('version') and not int( self.request.get( 'version')) < playlist.version: playlist.version += 1 playlist.put() self.response.out.write( utils.status_code_json(200)) else: self.response.out.write( library_item.serialize()) else: playlist.put() self.response.out.write( utils.status_code_json(200)) else: self.response.out.write(utils.status_code_json(200)) elif method == "DELETE": library_item.delete() current_user.re_index_playlists() if not playlist.has_user(): playlist.delete() self.response.out.write(utils.status_code_json(200))