'Move the item to its designated location within the library
directory (provided by destination()). Subdirectories are
created as needed. If the operation succeeds, the item\'s path
field is updated to reflect the new location.
If `copy` is true, moving the file is copied rather than moved.
Similarly, `link` creates a symlink instead, and `hardlink`
creates a hardlink.
basedir overrides the library base directory for the
destination.
If the item is in an album, the album is given an opportunity to
move its art. (This can be disabled by passing
with_album=False.)
By default, the item is stored to the database if it is in the
database, so any dirty fields prior to the move() call will be written
as a side effect. You probably want to call save() to commit the DB
transaction. If `store` is true however, the item won\'t be stored, and
you\'ll have to manually store it after invoking this method.'

def move(self, copy=False, link=False, hardlink=False, basedir=None, with_album=True, store=True):

    self._check_db()
    dest = self.destination(basedir=basedir)
    util.mkdirall(dest)
    old_path = self.path
    self.move_file(dest, copy, link, hardlink)
    if store:
        self.store()
    if with_album:
        album = self.get_album()
        if album:
            album.move_art(copy)
            if store:
                album.store()
    if (not copy):
        util.prune_dirs(os.path.dirname(old_path), self._db.directory)
