merge in some fixes from wlof's repository

This commit is contained in:
Adrian Sampson 2011-03-23 15:50:11 -07:00
commit f69f69cecf
12 changed files with 49 additions and 26 deletions

View file

@ -95,9 +95,9 @@ ALBUM_KEYS_ITEM = [f[0] for f in ALBUM_FIELDS if f[2]]
# Default search fields for various granularities.
ARTIST_DEFAULT_FIELDS = ('artist',)
ALBUM_DEFAULT_FIELDS = ARTIST_DEFAULT_FIELDS + ('album', 'genre')
ITEM_DEFAULT_FIELDS = ALBUM_DEFAULT_FIELDS + \
('albumartist', 'title', 'comments')
ALBUM_DEFAULT_FIELDS = ('album', 'albumartist', 'genre')
ITEM_DEFAULT_FIELDS = ARTIST_DEFAULT_FIELDS + ALBUM_DEFAULT_FIELDS + \
('title', 'comments')
# Logger.
log = logging.getLogger('beets')
@ -1004,12 +1004,23 @@ class Library(BaseLibrary):
self.conn.execute(query, subvars)
item._clear_dirty()
def remove(self, item, delete=False):
def _remove(self, item, delete=False):
"""Removes this item from the library. If delete, then item's file
is also deleted from disk.
"""
self.conn.execute('DELETE FROM items WHERE id=?', (item.id,))
if delete:
os.unlink(_syspath(item.path))
def remove(self, item, delete=False):
"""Removes this item, and the associated album if the removed item
was the last associated item of the album.
"""
album = self.get_album(item)
self._remove(item, delete)
if album and not album.items():
album._remove(delete)
# Browsing.
def artists(self, query=None):
@ -1190,6 +1201,27 @@ class Album(BaseAlbum):
)
return ResultIterator(c, self._library)
def _remove(self, delete=False):
"""Removes this album from the library. If delete, then album
art is deleted from disk, and the directories are removed
recursively (if empty).
"""
# Delete art and directory if empty.
if delete:
artpath = self.artpath
if artpath:
os.unlink(_syspath(artpath))
try:
os.removedirs(_syspath(os.path.dirname(artpath)))
except OSError:
pass
# Remove album from database.
self._library.conn.execute(
'DELETE FROM albums WHERE id=?',
(self.id,)
)
def remove(self, delete=False):
"""Removes this album and all its associated items from the
library. If delete, then the items' files are also deleted
@ -1197,19 +1229,10 @@ class Album(BaseAlbum):
"""
# Remove items.
for item in self.items():
self._library.remove(item, delete)
# Delete art.
if delete:
artpath = self.artpath
if artpath:
os.unlink(_syspath(artpath))
self._library._remove(item, delete)
# Remove album.
self._library.conn.execute(
'DELETE FROM albums WHERE id=?',
(self.id,)
)
self._remove(delete)
def move(self, copy=False):
"""Moves (or copies) all items to their destination. Any

Binary file not shown.

View file

@ -17,7 +17,7 @@
import unittest
import sys
sys.path.append('..')
sys.path.insert(0, '..')
from beets.autotag import art
class MockHeaders(object):

View file

@ -20,7 +20,7 @@ import sys
import os
import shutil
import re
sys.path.append('..')
sys.path.insert(0, '..')
from beets import autotag
from beets.library import Item

View file

@ -21,7 +21,7 @@ import os
import sqlite3
import ntpath
import posixpath
sys.path.append('..')
sys.path.insert(0, '..')
import beets.library
def lib(): return beets.library.Library('rsrc' + os.sep + 'test.blb')

View file

@ -21,7 +21,7 @@ import sys
import os
import stat
from os.path import join
sys.path.append('..')
sys.path.insert(0, '..')
import beets.library
from test_db import item

View file

@ -21,7 +21,7 @@ import time
import musicbrainz2.model
import musicbrainz2.webservice as mbws
import _common
sys.path.append('..')
sys.path.insert(0, '..')
from beets.autotag import mb
def nullfun(): pass

View file

@ -16,7 +16,7 @@
"""
import unittest, sys, os, shutil, datetime
sys.path.append('..')
sys.path.insert(0, '..')
import beets.mediafile
class EdgeTest(unittest.TestCase):

View file

@ -17,7 +17,7 @@ layer.
"""
import unittest, sys, os, shutil, datetime
sys.path.append('..')
sys.path.insert(0, '..')
import beets.mediafile

View file

@ -17,7 +17,7 @@
import unittest
import sys
sys.path.append('..')
sys.path.insert(0, '..')
from beetsplug import bpd
class FauxPathTest(unittest.TestCase):

View file

@ -16,7 +16,7 @@
"""
import unittest, sys, os
sys.path.append('..')
sys.path.insert(0, '..')
import beets.library
import test_db

View file

@ -23,7 +23,7 @@ import textwrap
from StringIO import StringIO
import logging
import _common
sys.path.append('..')
sys.path.insert(0, '..')
from beets import library
from beets import ui
from beets.ui import commands