def setUp(self): super(BrowseTestCase, self).setUp() empty = Folder() empty.root = True empty.name = 'Empty root' empty.path = '/tmp' self.store.add(empty) root = Folder() root.root = True root.name = 'Root folder' root.path = 'tests/assets' self.store.add(root) for letter in 'ABC': folder = Folder() folder.name = letter + 'rtist' folder.path = 'tests/assets/{}rtist'.format(letter) folder.parent = root artist = Artist() artist.name = letter + 'rtist' for lether in 'AB': afolder = Folder() afolder.name = letter + lether + 'lbum' afolder.path = 'tests/assets/{0}rtist/{0}{1}lbum'.format( letter, lether) afolder.parent = folder album = Album() album.name = letter + lether + 'lbum' album.artist = artist for num, song in enumerate(['One', 'Two', 'Three']): track = Track() track.disc = 1 track.number = num track.title = song track.duration = 2 track.album = album track.artist = artist track.bitrate = 320 track.path = 'tests/assets/{0}rtist/{0}{1}lbum/{2}'.format( letter, lether, song) track.content_type = 'audio/mpeg' track.last_modification = 0 track.root_folder = root track.folder = afolder self.store.add(track) self.store.commit() self.assertEqual(self.store.find(Folder).count(), 11) self.assertEqual( self.store.find(Folder, Folder.root == True).count(), 2) self.assertEqual(self.store.find(Artist).count(), 3) self.assertEqual(self.store.find(Album).count(), 6) self.assertEqual(self.store.find(Track).count(), 18)
def setUp(self): super(BrowseTestCase, self).setUp() empty = Folder() empty.root = True empty.name = 'Empty root' empty.path = '/tmp' self.store.add(empty) root = Folder() root.root = True root.name = 'Root folder' root.path = 'tests/assets' self.store.add(root) for letter in 'ABC': folder = Folder() folder.name = letter + 'rtist' folder.path = 'tests/assets/{}rtist'.format(letter) folder.parent = root artist = Artist() artist.name = letter + 'rtist' for lether in 'AB': afolder = Folder() afolder.name = letter + lether + 'lbum' afolder.path = 'tests/assets/{0}rtist/{0}{1}lbum'.format(letter, lether) afolder.parent = folder album = Album() album.name = letter + lether + 'lbum' album.artist = artist for num, song in enumerate([ 'One', 'Two', 'Three' ]): track = Track() track.disc = 1 track.number = num track.title = song track.duration = 2 track.album = album track.artist = artist track.bitrate = 320 track.path = 'tests/assets/{0}rtist/{0}{1}lbum/{2}'.format(letter, lether, song) track.content_type = 'audio/mpeg' track.last_modification = 0 track.root_folder = root track.folder = afolder self.store.add(track) self.store.commit() self.assertEqual(self.store.find(Folder).count(), 11) self.assertEqual(self.store.find(Folder, Folder.root == True).count(), 2) self.assertEqual(self.store.find(Artist).count(), 3) self.assertEqual(self.store.find(Album).count(), 6) self.assertEqual(self.store.find(Track).count(), 18)
def __find_folder(self, path): path = os.path.dirname(path) folders = self.__store.find(Folder, Folder.path == path) count = folders.count() if count > 1: raise Exception("Found multiple folders for '{}'.".format(path)) elif count == 1: return folders.one() folder = self.__store.find(Folder, Like(path, SQL("folder.path||'%'"))).order_by(Folder.path).last() full_path = folder.path path = path[len(folder.path) + 1:] for name in path.split(os.sep): full_path = os.path.join(full_path, name) fold = Folder() fold.root = False fold.name = name fold.path = full_path fold.parent = folder self.__store.add(fold) folder = fold return folder
def setUp(self): super(PlaylistTestCase, self).setUp() root = Folder() root.root = True root.name = 'Root folder' root.path = 'tests/assets' self.store.add(root) artist = Artist() artist.name = 'Artist' album = Album() album.name = 'Album' album.artist = artist songs = {} for num, song in enumerate([ 'One', 'Two', 'Three', 'Four' ]): track = Track() track.disc = 1 track.number = num track.title = song track.duration = 2 track.album = album track.artist = artist track.bitrate = 320 track.path = 'tests/assets/empty' track.content_type = 'audio/mpeg' track.last_modification = 0 track.root_folder = root track.folder = root self.store.add(track) songs[song] = track users = { u.name: u for u in self.store.find(User) } playlist = Playlist() playlist.user = users['alice'] playlist.name = "Alice's" playlist.add(songs['One']) playlist.add(songs['Three']) self.store.add(playlist) playlist = Playlist() playlist.user = users['alice'] playlist.public = True playlist.name = "Alice's public" playlist.add(songs['One']) playlist.add(songs['Two']) self.store.add(playlist) playlist = Playlist() playlist.user = users['bob'] playlist.name = "Bob's" playlist.add(songs['Two']) playlist.add(songs['Four']) self.store.add(playlist) self.store.commit()
def add(store, name, path): if not store.find(Folder, Folder.name == name, Folder.root == True).is_empty(): return FolderManager.NAME_EXISTS path = unicode(os.path.abspath(path)) if not os.path.isdir(path): return FolderManager.INVALID_PATH if not store.find(Folder, Folder.path == path).is_empty(): return FolderManager.PATH_EXISTS if any( path.startswith(p) for p in store.find(Folder).values(Folder.path)): return FolderManager.PATH_EXISTS if not store.find(Folder, Folder.path.startswith(path)).is_empty(): return FolderManager.SUBPATH_EXISTS folder = Folder() folder.root = True folder.name = name folder.path = path store.add(folder) store.commit() return FolderManager.SUCCESS
def setUp(self): super(AlbumSongsTestCase, self).setUp() folder = Folder() folder.name = 'Root' folder.root = True folder.path = 'tests/assets' artist = Artist() artist.name = 'Artist' album = Album() album.name = 'Album' album.artist = artist track = Track() track.title = 'Track' track.album = album track.artist = artist track.disc = 1 track.number = 1 track.path = 'tests/assets/empty' track.folder = folder track.root_folder = folder track.duration = 2 track.bitrate = 320 track.content_type = 'audio/mpeg' track.last_modification = 0 self.store.add(track) self.store.commit()
def test_delete(self): folder = Folder() folder.name = 'folder' folder.path = 'tests/assets' folder.root = True self.store.add(folder) self.store.commit() self._login('bob', 'B0b') rv = self.client.get('/folder/del/' + str(folder.id), follow_redirects=True) self.assertIn('There\'s nothing much to see', rv.data) self.assertEqual(self.store.find(Folder).count(), 1) self._logout() self._login('alice', 'Alic3') rv = self.client.get('/folder/del/string', follow_redirects=True) self.assertIn('Invalid', rv.data) rv = self.client.get('/folder/del/' + str(uuid.uuid4()), follow_redirects=True) self.assertIn('No such folder', rv.data) rv = self.client.get('/folder/del/' + str(folder.id), follow_redirects=True) self.assertIn('Music folders', rv.data) self.assertEqual(self.store.find(Folder).count(), 0)
def __find_folder(self, path): path = os.path.dirname(path) folders = self.__store.find(Folder, Folder.path == path) count = folders.count() if count > 1: raise Exception("Found multiple folders for '{}'.".format(path)) elif count == 1: return folders.one() db = self.__store.get_database().__module__[len('storm.databases.'):] folder = self.__store.find( Folder, Like(path, Concat(Folder.path, os.sep + u'%', db))).order_by(Folder.path).last() full_path = folder.path path = path[len(folder.path) + 1:] for name in path.split(os.sep): full_path = os.path.join(full_path, name) fold = Folder() fold.root = False fold.name = name fold.path = full_path fold.parent = folder self.__store.add(fold) folder = fold return folder
def __find_folder(self, path): path = os.path.dirname(path) folders = self.__store.find(Folder, Folder.path == path) count = folders.count() if count > 1: raise Exception("Found multiple folders for '{}'.".format(path)) elif count == 1: return folders.one() db = self.__store.get_database().__module__[len('storm.databases.'):] folder = self.__store.find(Folder, Like(path, Concat(Folder.path, os.sep + u'%', db))).order_by(Folder.path).last() full_path = folder.path path = path[len(folder.path) + 1:] for name in path.split(os.sep): full_path = os.path.join(full_path, name) fold = Folder() fold.root = False fold.name = name fold.path = full_path fold.parent = folder self.__store.add(fold) folder = fold return folder
def setUp(self): super(PlaylistTestCase, self).setUp() root = Folder() root.root = True root.name = 'Root folder' root.path = 'tests/assets' self.store.add(root) artist = Artist() artist.name = 'Artist' album = Album() album.name = 'Album' album.artist = artist songs = {} for num, song in enumerate(['One', 'Two', 'Three', 'Four']): track = Track() track.disc = 1 track.number = num track.title = song track.duration = 2 track.album = album track.artist = artist track.bitrate = 320 track.path = 'tests/assets/empty' track.content_type = 'audio/mpeg' track.last_modification = 0 track.root_folder = root track.folder = root self.store.add(track) songs[song] = track users = {u.name: u for u in self.store.find(User)} playlist = Playlist() playlist.user = users['alice'] playlist.name = "Alice's" playlist.add(songs['One']) playlist.add(songs['Three']) self.store.add(playlist) playlist = Playlist() playlist.user = users['alice'] playlist.public = True playlist.name = "Alice's public" playlist.add(songs['One']) playlist.add(songs['Two']) self.store.add(playlist) playlist = Playlist() playlist.user = users['bob'] playlist.name = "Bob's" playlist.add(songs['Two']) playlist.add(songs['Four']) self.store.add(playlist) self.store.commit()
def setUp(self): super(AnnotationTestCase, self).setUp() root = Folder() root.name = 'Root' root.root = True root.path = 'tests/assets' folder = Folder() folder.name = 'Folder' folder.path = 'tests/assets' folder.parent = root artist = Artist() artist.name = 'Artist' album = Album() album.name = 'Album' album.artist = artist track = Track() track.title = 'Track' track.album = album track.artist = artist track.disc = 1 track.number = 1 track.path = 'tests/assets/empty' track.folder = folder track.root_folder = root track.duration = 2 track.bitrate = 320 track.content_type = 'audio/mpeg' track.last_modification = 0 self.store.add(track) self.store.commit() self.folder = folder self.artist = artist self.album = album self.track = track self.user = self.store.find(User, User.name == 'alice').one()
def add(store, name, path): if not store.find(Folder, Folder.name == name, Folder.root == True).is_empty(): return FolderManager.NAME_EXISTS path = os.path.abspath(path) if not os.path.isdir(path): return FolderManager.INVALID_PATH if not store.find(Folder, Folder.path == path).is_empty(): return FolderManager.PATH_EXISTS folder = Folder() folder.root = True folder.name = name folder.path = path store.add(folder) store.commit() return FolderManager.SUCCESS
def test_scan(self): folder = Folder() folder.name = 'folder' folder.path = 'tests/assets' folder.root = True self.store.add(folder) self.store.commit() self._login('alice', 'Alic3') rv = self.client.get('/folder/scan/string', follow_redirects = True) self.assertIn('Invalid', rv.data) rv = self.client.get('/folder/scan/' + str(uuid.uuid4()), follow_redirects = True) self.assertIn('No such folder', rv.data) rv = self.client.get('/folder/scan/' + str(folder.id), follow_redirects = True) self.assertIn('Added', rv.data) self.assertIn('Deleted', rv.data) rv = self.client.get('/folder/scan', follow_redirects = True) self.assertIn('Added', rv.data) self.assertIn('Deleted', rv.data)
def test_scan(self): folder = Folder() folder.name = 'folder' folder.path = 'tests/assets' folder.root = True self.store.add(folder) self.store.commit() self._login('alice', 'Alic3') rv = self.client.get('/folder/scan/string', follow_redirects=True) self.assertIn('Invalid', rv.data) rv = self.client.get('/folder/scan/' + str(uuid.uuid4()), follow_redirects=True) self.assertIn('No such folder', rv.data) rv = self.client.get('/folder/scan/' + str(folder.id), follow_redirects=True) self.assertIn('Added', rv.data) self.assertIn('Deleted', rv.data) rv = self.client.get('/folder/scan', follow_redirects=True) self.assertIn('Added', rv.data) self.assertIn('Deleted', rv.data)
def setUp(self): super(PlaylistTestCase, self).setUp() folder = Folder() folder.name = 'Root' folder.path = 'tests/assets' folder.root = True artist = Artist() artist.name = 'Artist!' album = Album() album.name = 'Album!' album.artist = artist track = Track() track.path = 'tests/assets/23bytes' track.title = '23bytes' track.artist = artist track.album = album track.folder = folder track.root_folder = folder track.duration = 2 track.disc = 1 track.number = 1 track.content_type = 'audio/mpeg' track.bitrate = 320 track.last_modification = 0 playlist = Playlist() playlist.name = 'Playlist!' playlist.user = self.store.find(User, User.name == 'alice').one() for _ in range(4): playlist.add(track) self.store.add(track) self.store.add(playlist) self.store.commit() self.playlist = playlist
def test_delete(self): folder = Folder() folder.name = 'folder' folder.path = 'tests/assets' folder.root = True self.store.add(folder) self.store.commit() self._login('bob', 'B0b') rv = self.client.get('/folder/del/' + str(folder.id), follow_redirects = True) self.assertIn('There\'s nothing much to see', rv.data) self.assertEqual(self.store.find(Folder).count(), 1) self._logout() self._login('alice', 'Alic3') rv = self.client.get('/folder/del/string', follow_redirects = True) self.assertIn('Invalid', rv.data) rv = self.client.get('/folder/del/' + str(uuid.uuid4()), follow_redirects = True) self.assertIn('No such folder', rv.data) rv = self.client.get('/folder/del/' + str(folder.id), follow_redirects = True) self.assertIn('Music folders', rv.data) self.assertEqual(self.store.find(Folder).count(), 0)
def add(store, name, path): if not store.find(Folder, Folder.name == name, Folder.root == True).is_empty(): return FolderManager.NAME_EXISTS path = unicode(os.path.abspath(path)) if not os.path.isdir(path): return FolderManager.INVALID_PATH if not store.find(Folder, Folder.path == path).is_empty(): return FolderManager.PATH_EXISTS if any(path.startswith(p) for p in store.find(Folder).values(Folder.path)): return FolderManager.PATH_EXISTS if not store.find(Folder, Folder.path.startswith(path)).is_empty(): return FolderManager.SUBPATH_EXISTS folder = Folder() folder.root = True folder.name = name folder.path = path store.add(folder) store.commit() return FolderManager.SUCCESS
def __find_folder(self, path, folder): path = os.path.dirname(path) fold = self.__store.find(Folder, Folder.path == path).one() if fold: return fold full_path = folder.path path = path[len(folder.path) + 1:] for name in path.split(os.sep): full_path = os.path.join(full_path, name) fold = self.__store.find(Folder, Folder.path == full_path).one() if not fold: fold = Folder() fold.root = False fold.name = name fold.path = full_path fold.parent = folder self.__store.add(fold) folder = fold return folder