mirror of
https://github.com/spl0k/supysonic.git
synced 2024-12-22 17:06:17 +00:00
Some housekeeping
Trying to make flake8 happy
This commit is contained in:
parent
36cea89b26
commit
f8018b2751
@ -15,9 +15,10 @@ from flask import Blueprint
|
|||||||
from pony.orm import ObjectNotFound
|
from pony.orm import ObjectNotFound
|
||||||
from pony.orm import commit
|
from pony.orm import commit
|
||||||
|
|
||||||
|
from ..db import ClientPrefs, Folder
|
||||||
from ..managers.user import UserManager
|
from ..managers.user import UserManager
|
||||||
|
|
||||||
from .exceptions import Unauthorized
|
from .exceptions import GenericError, Unauthorized
|
||||||
from .formatters import JSONFormatter, JSONPFormatter, XMLFormatter
|
from .formatters import JSONFormatter, JSONPFormatter, XMLFormatter
|
||||||
|
|
||||||
api = Blueprint("api", __name__)
|
api = Blueprint("api", __name__)
|
||||||
|
@ -11,10 +11,8 @@ from pony.orm import select, desc, avg, max, min, count, between
|
|||||||
|
|
||||||
from ..db import (
|
from ..db import (
|
||||||
Folder,
|
Folder,
|
||||||
Artist,
|
|
||||||
Album,
|
Album,
|
||||||
Track,
|
Track,
|
||||||
RatingFolder,
|
|
||||||
StarredFolder,
|
StarredFolder,
|
||||||
StarredArtist,
|
StarredArtist,
|
||||||
StarredAlbum,
|
StarredAlbum,
|
||||||
|
@ -5,15 +5,13 @@
|
|||||||
#
|
#
|
||||||
# Distributed under terms of the GNU AGPLv3 license.
|
# Distributed under terms of the GNU AGPLv3 license.
|
||||||
|
|
||||||
import sys
|
|
||||||
import time
|
import time
|
||||||
import uuid
|
|
||||||
|
|
||||||
from flask import current_app, request
|
from flask import current_app, request
|
||||||
from pony.orm import delete
|
from pony.orm import delete
|
||||||
from pony.orm import ObjectNotFound
|
from pony.orm import ObjectNotFound
|
||||||
|
|
||||||
from ..db import Track, Album, Artist, Folder, User
|
from ..db import Track, Album, Artist, Folder
|
||||||
from ..db import StarredTrack, StarredAlbum, StarredArtist, StarredFolder
|
from ..db import StarredTrack, StarredAlbum, StarredArtist, StarredFolder
|
||||||
from ..db import RatingTrack, RatingFolder
|
from ..db import RatingTrack, RatingFolder
|
||||||
from ..lastfm import LastFm
|
from ..lastfm import LastFm
|
||||||
@ -22,10 +20,11 @@ from . import api, get_entity, get_entity_id
|
|||||||
from .exceptions import AggregateException, GenericError, MissingParameter, NotFound
|
from .exceptions import AggregateException, GenericError, MissingParameter, NotFound
|
||||||
|
|
||||||
|
|
||||||
def star_single(cls, eid):
|
def star_single(cls, starcls, eid):
|
||||||
"""Stars an entity
|
"""Stars an entity
|
||||||
|
|
||||||
:param cls: entity class, Folder, Artist, Album or Track
|
:param cls: entity class, Folder, Artist, Album or Track
|
||||||
|
:param starcls: matching starred class, StarredFolder, StarredArtist, StarredAlbum or StarredTrack
|
||||||
:param eid: id of the entity to star
|
:param eid: id of the entity to star
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@ -34,27 +33,24 @@ def star_single(cls, eid):
|
|||||||
except ObjectNotFound:
|
except ObjectNotFound:
|
||||||
raise NotFound("{} {}".format(cls.__name__, eid))
|
raise NotFound("{} {}".format(cls.__name__, eid))
|
||||||
|
|
||||||
starred_cls = getattr(sys.modules[__name__], "Starred" + cls.__name__)
|
|
||||||
try:
|
try:
|
||||||
starred_cls[request.user, eid]
|
starcls[request.user, eid]
|
||||||
raise GenericError("{} {} already starred".format(cls.__name__, eid))
|
raise GenericError("{} {} already starred".format(cls.__name__, eid))
|
||||||
except ObjectNotFound:
|
except ObjectNotFound:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
starred_cls(user=request.user, starred=e)
|
starcls(user=request.user, starred=e)
|
||||||
|
|
||||||
|
|
||||||
def unstar_single(cls, eid):
|
def unstar_single(cls, starcls, eid):
|
||||||
"""Unstars an entity
|
"""Unstars an entity
|
||||||
|
|
||||||
:param cls: entity class, Folder, Artist, Album or Track
|
:param cls: entity class, Folder, Artist, Album or Track
|
||||||
|
:param starcls: matching starred class, StarredFolder, StarredArtist, StarredAlbum or StarredTrack
|
||||||
:param eid: id of the entity to unstar
|
:param eid: id of the entity to unstar
|
||||||
"""
|
"""
|
||||||
|
|
||||||
starred_cls = getattr(sys.modules[__name__], "Starred" + cls.__name__)
|
delete(s for s in starcls if s.user.id == request.user.id and s.starred.id == eid)
|
||||||
delete(
|
|
||||||
s for s in starred_cls if s.user.id == request.user.id and s.starred.id == eid
|
|
||||||
)
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
@ -81,12 +77,12 @@ def handle_star_request(func):
|
|||||||
|
|
||||||
if tid is not None:
|
if tid is not None:
|
||||||
try:
|
try:
|
||||||
func(Track, tid)
|
func(Track, StarredTrack, tid)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
err = e
|
err = e
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
func(Folder, fid)
|
func(Folder, StarredFolder, fid)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
err = e
|
err = e
|
||||||
|
|
||||||
@ -96,14 +92,14 @@ def handle_star_request(func):
|
|||||||
for alId in albumId:
|
for alId in albumId:
|
||||||
alb_id = get_entity_id(Album, alId)
|
alb_id = get_entity_id(Album, alId)
|
||||||
try:
|
try:
|
||||||
func(Album, alb_id)
|
func(Album, StarredAlbum, alb_id)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
errors.append(e)
|
errors.append(e)
|
||||||
|
|
||||||
for arId in artistId:
|
for arId in artistId:
|
||||||
art_id = get_entity_id(Artist, arId)
|
art_id = get_entity_id(Artist, arId)
|
||||||
try:
|
try:
|
||||||
func(Artist, art_id)
|
func(Artist, StarredArtist, art_id)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
errors.append(e)
|
errors.append(e)
|
||||||
|
|
||||||
|
@ -7,7 +7,6 @@
|
|||||||
|
|
||||||
import re
|
import re
|
||||||
import string
|
import string
|
||||||
import uuid
|
|
||||||
|
|
||||||
from flask import current_app, request
|
from flask import current_app, request
|
||||||
from pony.orm import ObjectNotFound, select, count
|
from pony.orm import ObjectNotFound, select, count
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
from flask import request
|
from flask import request
|
||||||
|
|
||||||
from ..db import ChatMessage, User
|
from ..db import ChatMessage
|
||||||
from . import api
|
from . import api
|
||||||
|
|
||||||
|
|
||||||
|
@ -5,7 +5,6 @@
|
|||||||
#
|
#
|
||||||
# Distributed under terms of the GNU AGPLv3 license.
|
# Distributed under terms of the GNU AGPLv3 license.
|
||||||
|
|
||||||
from flask import current_app
|
|
||||||
from pony.orm import rollback
|
from pony.orm import rollback
|
||||||
from pony.orm import ObjectNotFound
|
from pony.orm import ObjectNotFound
|
||||||
from werkzeug.exceptions import BadRequestKeyError
|
from werkzeug.exceptions import BadRequestKeyError
|
||||||
@ -27,7 +26,7 @@ def key_error(e):
|
|||||||
|
|
||||||
|
|
||||||
@api.errorhandler(ObjectNotFound)
|
@api.errorhandler(ObjectNotFound)
|
||||||
def not_found(e):
|
def object_not_found(e):
|
||||||
rollback()
|
rollback()
|
||||||
return NotFound(e.entity.__name__)
|
return NotFound(e.entity.__name__)
|
||||||
|
|
||||||
|
@ -7,7 +7,6 @@
|
|||||||
# Distributed under terms of the GNU AGPLv3 license.
|
# Distributed under terms of the GNU AGPLv3 license.
|
||||||
|
|
||||||
import hashlib
|
import hashlib
|
||||||
import io
|
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
import mediafile
|
import mediafile
|
||||||
@ -16,7 +15,6 @@ import os.path
|
|||||||
import requests
|
import requests
|
||||||
import shlex
|
import shlex
|
||||||
import subprocess
|
import subprocess
|
||||||
import uuid
|
|
||||||
import zlib
|
import zlib
|
||||||
|
|
||||||
from flask import request, Response, send_file
|
from flask import request, Response, send_file
|
||||||
@ -27,14 +25,12 @@ from xml.etree import ElementTree
|
|||||||
from zipfile import ZIP_DEFLATED
|
from zipfile import ZIP_DEFLATED
|
||||||
from zipstream import ZipFile
|
from zipstream import ZipFile
|
||||||
|
|
||||||
from .. import scanner
|
|
||||||
from ..cache import CacheMiss
|
from ..cache import CacheMiss
|
||||||
from ..db import Track, Album, Artist, Folder, User, ClientPrefs, now
|
from ..db import Track, Album, Folder, now
|
||||||
|
|
||||||
from . import api, get_entity, get_entity_id
|
from . import api, get_entity, get_entity_id
|
||||||
from .exceptions import (
|
from .exceptions import (
|
||||||
GenericError,
|
GenericError,
|
||||||
MissingParameter,
|
|
||||||
NotFound,
|
NotFound,
|
||||||
ServerError,
|
ServerError,
|
||||||
UnsupportedParameter,
|
UnsupportedParameter,
|
||||||
@ -168,7 +164,7 @@ def stream_media():
|
|||||||
yield data
|
yield data
|
||||||
|
|
||||||
def kill_processes():
|
def kill_processes():
|
||||||
if dec_proc != None:
|
if dec_proc is not None:
|
||||||
dec_proc.kill()
|
dec_proc.kill()
|
||||||
proc.kill()
|
proc.kill()
|
||||||
|
|
||||||
@ -194,7 +190,7 @@ def stream_media():
|
|||||||
kill_processes()
|
kill_processes()
|
||||||
raise
|
raise
|
||||||
finally:
|
finally:
|
||||||
if dec_proc != None:
|
if dec_proc is not None:
|
||||||
dec_proc.stdout.close()
|
dec_proc.stdout.close()
|
||||||
dec_proc.wait()
|
dec_proc.wait()
|
||||||
proc.stdout.close()
|
proc.stdout.close()
|
||||||
|
@ -10,7 +10,7 @@ from flask import request
|
|||||||
from ..db import RadioStation
|
from ..db import RadioStation
|
||||||
|
|
||||||
from . import api, get_entity
|
from . import api, get_entity
|
||||||
from .exceptions import Forbidden, MissingParameter, NotFound
|
from .exceptions import Forbidden, MissingParameter
|
||||||
|
|
||||||
|
|
||||||
@api.route("/getInternetRadioStations.view", methods=["GET", "POST"])
|
@api.route("/getInternetRadioStations.view", methods=["GET", "POST"])
|
||||||
|
@ -12,7 +12,7 @@ from ..db import User
|
|||||||
from ..managers.user import UserManager
|
from ..managers.user import UserManager
|
||||||
|
|
||||||
from . import api, decode_password
|
from . import api, decode_password
|
||||||
from .exceptions import Forbidden, GenericError, NotFound
|
from .exceptions import Forbidden, NotFound
|
||||||
|
|
||||||
|
|
||||||
def admin_only(f):
|
def admin_only(f):
|
||||||
|
@ -16,7 +16,7 @@ from hashlib import sha1
|
|||||||
from pony.orm import Database, Required, Optional, Set, PrimaryKey, LongStr
|
from pony.orm import Database, Required, Optional, Set, PrimaryKey, LongStr
|
||||||
from pony.orm import ObjectNotFound, DatabaseError
|
from pony.orm import ObjectNotFound, DatabaseError
|
||||||
from pony.orm import buffer
|
from pony.orm import buffer
|
||||||
from pony.orm import min, max, avg, sum, count, exists
|
from pony.orm import min, avg, sum, count, exists
|
||||||
from pony.orm import db_session
|
from pony.orm import db_session
|
||||||
from urllib.parse import urlparse, parse_qsl
|
from urllib.parse import urlparse, parse_qsl
|
||||||
from uuid import UUID, uuid4
|
from uuid import UUID, uuid4
|
||||||
|
@ -6,7 +6,15 @@
|
|||||||
#
|
#
|
||||||
# Distributed under terms of the GNU AGPLv3 license.
|
# Distributed under terms of the GNU AGPLv3 license.
|
||||||
|
|
||||||
from flask import current_app, redirect, request, session, url_for
|
from flask import (
|
||||||
|
current_app,
|
||||||
|
flash,
|
||||||
|
redirect,
|
||||||
|
request,
|
||||||
|
render_template,
|
||||||
|
session,
|
||||||
|
url_for,
|
||||||
|
)
|
||||||
from flask import Blueprint
|
from flask import Blueprint
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
from pony.orm import ObjectNotFound
|
from pony.orm import ObjectNotFound
|
||||||
|
@ -12,7 +12,7 @@ from flask import current_app
|
|||||||
from functools import wraps
|
from functools import wraps
|
||||||
from pony.orm import ObjectNotFound
|
from pony.orm import ObjectNotFound
|
||||||
|
|
||||||
from ..db import User, ClientPrefs
|
from ..db import User
|
||||||
from ..lastfm import LastFm
|
from ..lastfm import LastFm
|
||||||
from ..managers.user import UserManager
|
from ..managers.user import UserManager
|
||||||
|
|
||||||
|
@ -6,7 +6,6 @@
|
|||||||
# Distributed under terms of the GNU AGPLv3 license.
|
# Distributed under terms of the GNU AGPLv3 license.
|
||||||
|
|
||||||
import os.path
|
import os.path
|
||||||
import uuid
|
|
||||||
|
|
||||||
from pony.orm import select
|
from pony.orm import select
|
||||||
from pony.orm import ObjectNotFound
|
from pony.orm import ObjectNotFound
|
||||||
|
@ -6,7 +6,8 @@
|
|||||||
# Distributed under terms of the GNU AGPLv3 license.
|
# Distributed under terms of the GNU AGPLv3 license.
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import os, os.path
|
import os
|
||||||
|
import os.path
|
||||||
import mediafile
|
import mediafile
|
||||||
import time
|
import time
|
||||||
|
|
||||||
@ -16,9 +17,7 @@ from queue import Queue, Empty as QueueEmpty
|
|||||||
from threading import Thread, Event
|
from threading import Thread, Event
|
||||||
|
|
||||||
from .covers import find_cover_in_folder, CoverFile
|
from .covers import find_cover_in_folder, CoverFile
|
||||||
from .db import Folder, Artist, Album, Track, User
|
from .db import Folder, Artist, Album, Track
|
||||||
from .db import StarredFolder, StarredArtist, StarredAlbum, StarredTrack
|
|
||||||
from .db import RatingFolder, RatingTrack
|
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
@ -212,7 +211,6 @@ class Scanner(Thread):
|
|||||||
return
|
return
|
||||||
|
|
||||||
mtime = int(stat.st_mtime)
|
mtime = int(stat.st_mtime)
|
||||||
size = stat.st_size
|
|
||||||
|
|
||||||
tr = Track.get(path=path)
|
tr = Track.get(path=path)
|
||||||
if tr is not None:
|
if tr is not None:
|
||||||
|
@ -32,7 +32,7 @@ def process_table(connection, table, fields, nullable_fields=()):
|
|||||||
c.execute("SELECT {1} FROM {0}".format(table, ",".join(fields + nullable_fields)))
|
c.execute("SELECT {1} FROM {0}".format(table, ",".join(fields + nullable_fields)))
|
||||||
for row in c:
|
for row in c:
|
||||||
for field, value in zip(fields + nullable_fields, row):
|
for field, value in zip(fields + nullable_fields, row):
|
||||||
if value is None or not isinstance(value, basestring):
|
if value is None or not isinstance(value, str):
|
||||||
continue
|
continue
|
||||||
to_update[field].add(value)
|
to_update[field].add(value)
|
||||||
|
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
import argparse
|
import argparse
|
||||||
import hashlib
|
import hashlib
|
||||||
import psycopg2
|
import psycopg2
|
||||||
import uuid
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
bytes = buffer
|
bytes = buffer
|
||||||
|
@ -23,13 +23,13 @@ def process_table(connection, table, fields):
|
|||||||
c = connection.cursor()
|
c = connection.cursor()
|
||||||
for row in c.execute("SELECT {1} FROM {0}".format(table, ",".join(fields))):
|
for row in c.execute("SELECT {1} FROM {0}".format(table, ",".join(fields))):
|
||||||
for field, value in zip(fields, row):
|
for field, value in zip(fields, row):
|
||||||
if value is None or not isinstance(value, basestring):
|
if value is None or not isinstance(value, str):
|
||||||
continue
|
continue
|
||||||
to_update[field].add(value)
|
to_update[field].add(value)
|
||||||
|
|
||||||
for field, values in to_update.iteritems():
|
for field, values in to_update.iteritems():
|
||||||
sql = "UPDATE {0} SET {1}=? WHERE {1}=?".format(table, field)
|
sql = "UPDATE {0} SET {1}=? WHERE {1}=?".format(table, field)
|
||||||
c.executemany(sql, map(lambda v: (buffer(UUID(v).bytes), v), values))
|
c.executemany(sql, map(lambda v: (UUID(v).bytes, v), values))
|
||||||
|
|
||||||
connection.commit()
|
connection.commit()
|
||||||
|
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
import argparse
|
import argparse
|
||||||
import hashlib
|
import hashlib
|
||||||
import sqlite3
|
import sqlite3
|
||||||
import uuid
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
bytes = buffer
|
bytes = buffer
|
||||||
|
@ -7,7 +7,6 @@
|
|||||||
#
|
#
|
||||||
# Distributed under terms of the GNU AGPLv3 license.
|
# Distributed under terms of the GNU AGPLv3 license.
|
||||||
|
|
||||||
import io
|
|
||||||
import logging
|
import logging
|
||||||
import mimetypes
|
import mimetypes
|
||||||
|
|
||||||
|
@ -8,7 +8,6 @@
|
|||||||
import re
|
import re
|
||||||
|
|
||||||
from lxml import etree
|
from lxml import etree
|
||||||
from supysonic.managers.user import UserManager
|
|
||||||
|
|
||||||
from ..testbase import TestBase
|
from ..testbase import TestBase
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
#
|
#
|
||||||
# Distributed under terms of the GNU AGPLv3 license.
|
# Distributed under terms of the GNU AGPLv3 license.
|
||||||
|
|
||||||
import uuid
|
import unittest
|
||||||
|
|
||||||
from pony.orm import db_session
|
from pony.orm import db_session
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
#
|
#
|
||||||
# Distributed under terms of the GNU AGPLv3 license.
|
# Distributed under terms of the GNU AGPLv3 license.
|
||||||
|
|
||||||
|
import unittest
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
from pony.orm import db_session
|
from pony.orm import db_session
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
import base64
|
import base64
|
||||||
import flask.json
|
import flask.json
|
||||||
|
import unittest
|
||||||
|
|
||||||
from xml.etree import ElementTree
|
from xml.etree import ElementTree
|
||||||
|
|
||||||
|
@ -6,9 +6,9 @@
|
|||||||
# Distributed under terms of the GNU AGPLv3 license.
|
# Distributed under terms of the GNU AGPLv3 license.
|
||||||
|
|
||||||
import time
|
import time
|
||||||
|
import unittest
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
from lxml import etree
|
|
||||||
from pony.orm import db_session
|
from pony.orm import db_session
|
||||||
|
|
||||||
from supysonic.db import Folder, Artist, Album, Track
|
from supysonic.db import Folder, Artist, Album, Track
|
||||||
@ -43,7 +43,7 @@ class BrowseTestCase(ApiTestBase):
|
|||||||
album = Album(name=letter + lether + "lbum", artist=artist)
|
album = Album(name=letter + lether + "lbum", artist=artist)
|
||||||
|
|
||||||
for num, song in enumerate(["One", "Two", "Three"]):
|
for num, song in enumerate(["One", "Two", "Three"]):
|
||||||
track = Track(
|
Track(
|
||||||
disc=1,
|
disc=1,
|
||||||
number=num,
|
number=num,
|
||||||
title=song,
|
title=song,
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
import flask.json
|
import flask.json
|
||||||
import os.path
|
import os.path
|
||||||
import requests
|
import requests
|
||||||
|
import unittest
|
||||||
|
|
||||||
from pony.orm import db_session
|
from pony.orm import db_session
|
||||||
|
|
||||||
@ -32,7 +33,7 @@ class LyricsTestCase(ApiTestBase):
|
|||||||
artist = Artist(name="Artist")
|
artist = Artist(name="Artist")
|
||||||
album = Album(artist=artist, name="Album")
|
album = Album(artist=artist, name="Album")
|
||||||
|
|
||||||
track = Track(
|
Track(
|
||||||
title="23bytes",
|
title="23bytes",
|
||||||
number=1,
|
number=1,
|
||||||
disc=1,
|
disc=1,
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
# Distributed under terms of the GNU AGPLv3 license.
|
# Distributed under terms of the GNU AGPLv3 license.
|
||||||
|
|
||||||
import os.path
|
import os.path
|
||||||
|
import unittest
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
from contextlib import closing
|
from contextlib import closing
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
#
|
#
|
||||||
# Distributed under terms of the GNU AGPLv3 license.
|
# Distributed under terms of the GNU AGPLv3 license.
|
||||||
|
|
||||||
|
import unittest
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
from pony.orm import db_session
|
from pony.orm import db_session
|
||||||
|
@ -87,18 +87,18 @@ class ResponseHelperJsonTestCase(TestBase, UnwrapperMixin.create_from(JSONFormat
|
|||||||
self.assertIn("dict", resp)
|
self.assertIn("dict", resp)
|
||||||
self.assertIn("list", resp)
|
self.assertIn("list", resp)
|
||||||
|
|
||||||
d = resp["dict"]
|
dct = resp["dict"]
|
||||||
l = resp["list"]
|
lst = resp["list"]
|
||||||
|
|
||||||
self.assertIn("value", d)
|
self.assertIn("value", dct)
|
||||||
self.assertIn("list", d)
|
self.assertIn("list", dct)
|
||||||
self.assertNotIn("emptyList", d)
|
self.assertNotIn("emptyList", dct)
|
||||||
self.assertIn("subdict", d)
|
self.assertIn("subdict", dct)
|
||||||
self.assertIsInstance(d["value"], str)
|
self.assertIsInstance(dct["value"], str)
|
||||||
self.assertIsInstance(d["list"], list)
|
self.assertIsInstance(dct["list"], list)
|
||||||
self.assertIsInstance(d["subdict"], dict)
|
self.assertIsInstance(dct["subdict"], dict)
|
||||||
|
|
||||||
self.assertEqual(l, [{"b": "B"}, {"c": "C"}, [4, 5, 6], "final string"])
|
self.assertEqual(lst, [{"b": "B"}, {"c": "C"}, [4, 5, 6], "final string"])
|
||||||
|
|
||||||
|
|
||||||
class ResponseHelperJsonpTestCase(TestBase, UnwrapperMixin.create_from(JSONPFormatter)):
|
class ResponseHelperJsonpTestCase(TestBase, UnwrapperMixin.create_from(JSONPFormatter)):
|
||||||
|
@ -40,7 +40,7 @@ class SearchTestCase(ApiTestBase):
|
|||||||
album = Album(name=letter + lether + "lbum", artist=artist)
|
album = Album(name=letter + lether + "lbum", artist=artist)
|
||||||
|
|
||||||
for num, song in enumerate(["One", "Two", "Three"]):
|
for num, song in enumerate(["One", "Two", "Three"]):
|
||||||
track = Track(
|
Track(
|
||||||
disc=1,
|
disc=1,
|
||||||
number=num,
|
number=num,
|
||||||
title=song,
|
title=song,
|
||||||
|
@ -6,6 +6,8 @@
|
|||||||
#
|
#
|
||||||
# Distributed under terms of the GNU AGPLv3 license.
|
# Distributed under terms of the GNU AGPLv3 license.
|
||||||
|
|
||||||
|
import unittest
|
||||||
|
|
||||||
from .apitestbase import ApiTestBase
|
from .apitestbase import ApiTestBase
|
||||||
|
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ import sys
|
|||||||
from flask import current_app
|
from flask import current_app
|
||||||
from pony.orm import db_session
|
from pony.orm import db_session
|
||||||
|
|
||||||
from supysonic.db import Folder, Track
|
from supysonic.db import Track
|
||||||
from supysonic.managers.folder import FolderManager
|
from supysonic.managers.folder import FolderManager
|
||||||
from supysonic.scanner import Scanner
|
from supysonic.scanner import Scanner
|
||||||
|
|
||||||
@ -23,7 +23,7 @@ class TranscodingTestCase(ApiTestBase):
|
|||||||
super().setUp()
|
super().setUp()
|
||||||
|
|
||||||
with db_session:
|
with db_session:
|
||||||
folder = FolderManager.add("Folder", "tests/assets/folder")
|
FolderManager.add("Folder", "tests/assets/folder")
|
||||||
scanner = Scanner()
|
scanner = Scanner()
|
||||||
scanner.queue_folder("Folder")
|
scanner.queue_folder("Folder")
|
||||||
scanner.run()
|
scanner.run()
|
||||||
|
@ -6,6 +6,8 @@
|
|||||||
#
|
#
|
||||||
# Distributed under terms of the GNU AGPLv3 license.
|
# Distributed under terms of the GNU AGPLv3 license.
|
||||||
|
|
||||||
|
import unittest
|
||||||
|
|
||||||
from ..utils import hexlify
|
from ..utils import hexlify
|
||||||
from .apitestbase import ApiTestBase
|
from .apitestbase import ApiTestBase
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ class DbTestCase(unittest.TestCase):
|
|||||||
def create_some_folders(self):
|
def create_some_folders(self):
|
||||||
root_folder = db.Folder(root=True, name="Root folder", path="tests")
|
root_folder = db.Folder(root=True, name="Root folder", path="tests")
|
||||||
|
|
||||||
child_folder = db.Folder(
|
db.Folder(
|
||||||
root=False,
|
root=False,
|
||||||
name="Child folder",
|
name="Child folder",
|
||||||
path="tests/assets",
|
path="tests/assets",
|
||||||
@ -40,7 +40,7 @@ class DbTestCase(unittest.TestCase):
|
|||||||
parent=root_folder,
|
parent=root_folder,
|
||||||
)
|
)
|
||||||
|
|
||||||
child_2 = db.Folder(
|
db.Folder(
|
||||||
root=False,
|
root=False,
|
||||||
name="Child folder (No Art)",
|
name="Child folder (No Art)",
|
||||||
path="tests/formats",
|
path="tests/formats",
|
||||||
@ -158,10 +158,10 @@ class DbTestCase(unittest.TestCase):
|
|||||||
root_folder, child_folder, _ = self.create_some_folders()
|
root_folder, child_folder, _ = self.create_some_folders()
|
||||||
|
|
||||||
user = self.create_user()
|
user = self.create_user()
|
||||||
star = db.StarredFolder(user=user, starred=root_folder)
|
db.StarredFolder(user=user, starred=root_folder)
|
||||||
rating_user = db.RatingFolder(user=user, rated=root_folder, rating=2)
|
db.RatingFolder(user=user, rated=root_folder, rating=2)
|
||||||
other = self.create_user("Other")
|
other = self.create_user("Other")
|
||||||
rating_other = db.RatingFolder(user=other, rated=root_folder, rating=5)
|
db.RatingFolder(user=other, rated=root_folder, rating=5)
|
||||||
|
|
||||||
root = root_folder.as_subsonic_child(user)
|
root = root_folder.as_subsonic_child(user)
|
||||||
self.assertIn("starred", root)
|
self.assertIn("starred", root)
|
||||||
@ -180,7 +180,7 @@ class DbTestCase(unittest.TestCase):
|
|||||||
artist = db.Artist(name="Test Artist")
|
artist = db.Artist(name="Test Artist")
|
||||||
|
|
||||||
user = self.create_user()
|
user = self.create_user()
|
||||||
star = db.StarredArtist(user=user, starred=artist)
|
db.StarredArtist(user=user, starred=artist)
|
||||||
|
|
||||||
artist_dict = artist.as_subsonic_artist(user)
|
artist_dict = artist.as_subsonic_artist(user)
|
||||||
self.assertIsInstance(artist_dict, dict)
|
self.assertIsInstance(artist_dict, dict)
|
||||||
@ -204,7 +204,7 @@ class DbTestCase(unittest.TestCase):
|
|||||||
album = db.Album(artist=artist, name="Test Album")
|
album = db.Album(artist=artist, name="Test Album")
|
||||||
|
|
||||||
user = self.create_user()
|
user = self.create_user()
|
||||||
star = db.StarredAlbum(user=user, starred=album)
|
db.StarredAlbum(user=user, starred=album)
|
||||||
|
|
||||||
# No tracks, shouldn't be stored under normal circumstances
|
# No tracks, shouldn't be stored under normal circumstances
|
||||||
self.assertRaises(ValueError, album.as_subsonic_album, user)
|
self.assertRaises(ValueError, album.as_subsonic_album, user)
|
||||||
|
@ -5,7 +5,6 @@
|
|||||||
#
|
#
|
||||||
# Distributed under terms of the GNU AGPLv3 license.
|
# Distributed under terms of the GNU AGPLv3 license.
|
||||||
|
|
||||||
import io
|
|
||||||
import mutagen
|
import mutagen
|
||||||
import os
|
import os
|
||||||
import os.path
|
import os.path
|
||||||
@ -131,8 +130,6 @@ class ScannerTestCase(unittest.TestCase):
|
|||||||
|
|
||||||
@db_session
|
@db_session
|
||||||
def test_rescan_corrupt_file(self):
|
def test_rescan_corrupt_file(self):
|
||||||
track = db.Track.select().first()
|
|
||||||
|
|
||||||
with self.__temporary_track_copy() as tf:
|
with self.__temporary_track_copy() as tf:
|
||||||
self.__scan()
|
self.__scan()
|
||||||
self.assertEqual(db.Track.select().count(), 2)
|
self.assertEqual(db.Track.select().count(), 2)
|
||||||
@ -147,8 +144,6 @@ class ScannerTestCase(unittest.TestCase):
|
|||||||
|
|
||||||
@db_session
|
@db_session
|
||||||
def test_rescan_removed_file(self):
|
def test_rescan_removed_file(self):
|
||||||
track = db.Track.select().first()
|
|
||||||
|
|
||||||
with self.__temporary_track_copy():
|
with self.__temporary_track_copy():
|
||||||
self.__scan()
|
self.__scan()
|
||||||
self.assertEqual(db.Track.select().count(), 2)
|
self.assertEqual(db.Track.select().count(), 2)
|
||||||
@ -158,8 +153,6 @@ class ScannerTestCase(unittest.TestCase):
|
|||||||
|
|
||||||
@db_session
|
@db_session
|
||||||
def test_scan_tag_change(self):
|
def test_scan_tag_change(self):
|
||||||
folder = db.Folder[self.folderid]
|
|
||||||
|
|
||||||
with self.__temporary_track_copy() as tf:
|
with self.__temporary_track_copy() as tf:
|
||||||
self.__scan()
|
self.__scan()
|
||||||
copy = db.Track.get(path=tf)
|
copy = db.Track.get(path=tf)
|
||||||
|
@ -277,7 +277,7 @@ class CoverWatcherTestCase(WatcherTestCase):
|
|||||||
self.assertIsNone(Folder.select().first().cover_art)
|
self.assertIsNone(Folder.select().first().cover_art)
|
||||||
|
|
||||||
def test_naming_add_good(self):
|
def test_naming_add_good(self):
|
||||||
bad = os.path.basename(self._addcover())
|
self._addcover()
|
||||||
self._sleep()
|
self._sleep()
|
||||||
good = os.path.basename(self._addcover("cover"))
|
good = os.path.basename(self._addcover("cover"))
|
||||||
self._sleep()
|
self._sleep()
|
||||||
@ -288,7 +288,7 @@ class CoverWatcherTestCase(WatcherTestCase):
|
|||||||
def test_naming_add_bad(self):
|
def test_naming_add_bad(self):
|
||||||
good = os.path.basename(self._addcover("cover"))
|
good = os.path.basename(self._addcover("cover"))
|
||||||
self._sleep()
|
self._sleep()
|
||||||
bad = os.path.basename(self._addcover())
|
self._addcover()
|
||||||
self._sleep()
|
self._sleep()
|
||||||
|
|
||||||
with db_session:
|
with db_session:
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
#
|
#
|
||||||
# Distributed under terms of the GNU AGPLv3 license.
|
# Distributed under terms of the GNU AGPLv3 license.
|
||||||
|
|
||||||
import uuid
|
import unittest
|
||||||
|
|
||||||
from pony.orm import db_session
|
from pony.orm import db_session
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
#
|
#
|
||||||
# Distributed under terms of the GNU AGPLv3 license.
|
# Distributed under terms of the GNU AGPLv3 license.
|
||||||
|
|
||||||
|
import unittest
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
from pony.orm import db_session
|
from pony.orm import db_session
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
#
|
#
|
||||||
# Distributed under terms of the GNU AGPLv3 license.
|
# Distributed under terms of the GNU AGPLv3 license.
|
||||||
|
|
||||||
|
import unittest
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
from pony.orm import db_session
|
from pony.orm import db_session
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
#
|
#
|
||||||
# Distributed under terms of the GNU AGPLv3 license.
|
# Distributed under terms of the GNU AGPLv3 license.
|
||||||
|
|
||||||
|
import unittest
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
from flask import escape
|
from flask import escape
|
||||||
|
@ -13,7 +13,6 @@ import unittest
|
|||||||
from pony.orm import db_session
|
from pony.orm import db_session
|
||||||
|
|
||||||
from supysonic.db import init_database, release_database
|
from supysonic.db import init_database, release_database
|
||||||
from supysonic.db import Folder
|
|
||||||
from supysonic.managers.folder import FolderManager
|
from supysonic.managers.folder import FolderManager
|
||||||
from supysonic.scanner import Scanner
|
from supysonic.scanner import Scanner
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ class Issue129TestCase(TestBase):
|
|||||||
super().setUp()
|
super().setUp()
|
||||||
|
|
||||||
with db_session:
|
with db_session:
|
||||||
folder = FolderManager.add("folder", os.path.abspath("tests/assets/folder"))
|
FolderManager.add("folder", os.path.abspath("tests/assets/folder"))
|
||||||
scanner = Scanner()
|
scanner = Scanner()
|
||||||
scanner.queue_folder("folder")
|
scanner.queue_folder("folder")
|
||||||
scanner.run()
|
scanner.run()
|
||||||
|
@ -12,7 +12,7 @@ import unittest
|
|||||||
from pony.orm import db_session
|
from pony.orm import db_session
|
||||||
|
|
||||||
from supysonic.db import init_database, release_database
|
from supysonic.db import init_database, release_database
|
||||||
from supysonic.db import Folder, Track
|
from supysonic.db import Track
|
||||||
from supysonic.managers.folder import FolderManager
|
from supysonic.managers.folder import FolderManager
|
||||||
from supysonic.scanner import Scanner
|
from supysonic.scanner import Scanner
|
||||||
|
|
||||||
|
@ -12,7 +12,6 @@ import unittest
|
|||||||
from pony.orm import db_session
|
from pony.orm import db_session
|
||||||
|
|
||||||
from supysonic.db import init_database, release_database
|
from supysonic.db import init_database, release_database
|
||||||
from supysonic.db import Folder, Track
|
|
||||||
from supysonic.managers.folder import FolderManager
|
from supysonic.managers.folder import FolderManager
|
||||||
from supysonic.scanner import Scanner
|
from supysonic.scanner import Scanner
|
||||||
|
|
||||||
|
@ -14,7 +14,6 @@ import unittest
|
|||||||
from pony.orm import db_session
|
from pony.orm import db_session
|
||||||
|
|
||||||
from supysonic.db import init_database, release_database
|
from supysonic.db import init_database, release_database
|
||||||
from supysonic.db import Folder
|
|
||||||
from supysonic.managers.folder import FolderManager
|
from supysonic.managers.folder import FolderManager
|
||||||
from supysonic.scanner import Scanner
|
from supysonic.scanner import Scanner
|
||||||
|
|
||||||
|
@ -13,7 +13,6 @@ import os
|
|||||||
import shutil
|
import shutil
|
||||||
import tempfile
|
import tempfile
|
||||||
import unittest
|
import unittest
|
||||||
import uuid
|
|
||||||
|
|
||||||
from pony.orm import db_session, ObjectNotFound
|
from pony.orm import db_session, ObjectNotFound
|
||||||
|
|
||||||
@ -37,7 +36,7 @@ class FolderManagerTestCase(unittest.TestCase):
|
|||||||
self.assertIsNotNone(FolderManager.add("media", self.media_dir))
|
self.assertIsNotNone(FolderManager.add("media", self.media_dir))
|
||||||
self.assertIsNotNone(FolderManager.add("music", self.music_dir))
|
self.assertIsNotNone(FolderManager.add("music", self.music_dir))
|
||||||
|
|
||||||
folder = db.Folder(
|
db.Folder(
|
||||||
root=False, name="non-root", path=os.path.join(self.music_dir, "subfolder")
|
root=False, name="non-root", path=os.path.join(self.music_dir, "subfolder")
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -45,7 +44,7 @@ class FolderManagerTestCase(unittest.TestCase):
|
|||||||
album = db.Album(name="Album", artist=artist)
|
album = db.Album(name="Album", artist=artist)
|
||||||
|
|
||||||
root = db.Folder.get(name="media")
|
root = db.Folder.get(name="media")
|
||||||
track = db.Track(
|
db.Track(
|
||||||
title="Track",
|
title="Track",
|
||||||
artist=artist,
|
artist=artist,
|
||||||
album=album,
|
album=album,
|
||||||
|
@ -9,7 +9,6 @@
|
|||||||
from supysonic import db
|
from supysonic import db
|
||||||
from supysonic.managers.user import UserManager
|
from supysonic.managers.user import UserManager
|
||||||
|
|
||||||
import io
|
|
||||||
import unittest
|
import unittest
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user