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):  #Create new playlist
   current_user = utils.get_current_user()
   playlist = models.Playlist(name = self.request.get("name"),owner=current_user, smart = utils.convert_javascript_bool_to_python(self.request.get("smart")), share_hash = utils.generate_share_hash())
   
   if playlist.smart:
     utils.parse_smart_filters(playlist, self.request)
   
   playlist.put()
   
   library_item = models.Library(user=current_user, playlist=playlist, is_owner=True, position = int(self.request.get("position")))
   library_item.put()
   
   self.response.out.write(library_item.serialize())
Example #3
0
    def post(self):  #Create new playlist
        current_user = utils.get_current_user()

        playlist = models.Playlist(
            name=self.request.get("name"),
            owner=current_user,
            smart=utils.convert_javascript_bool_to_python(
                self.request.get("smart")),
            share_hash=utils.generate_share_hash())

        if playlist.smart:
            utils.parse_smart_filters(playlist, self.request)

        playlist.put()

        library_item = models.Library(user=current_user,
                                      playlist=playlist,
                                      is_owner=True,
                                      position=int(
                                          self.request.get("position")))
        library_item.put()

        self.response.out.write(library_item.serialize())
Example #4
0
    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))