Merge branch 'master' into develop
This commit is contained in:
commit
57750e39ed
|
@ -1,3 +1,6 @@
|
||||||
|
"""
|
||||||
|
Documentation of Subsonic API can be found at http://www.subsonic.org/pages/api.jsp
|
||||||
|
"""
|
||||||
import datetime
|
import datetime
|
||||||
import functools
|
import functools
|
||||||
|
|
||||||
|
@ -427,7 +430,34 @@ class SubsonicViewSet(viewsets.GenericViewSet):
|
||||||
Q(tagged_items__tag__name=genre)
|
Q(tagged_items__tag__name=genre)
|
||||||
| Q(artist__tagged_items__tag__name=genre)
|
| Q(artist__tagged_items__tag__name=genre)
|
||||||
)
|
)
|
||||||
|
elif type == "byYear":
|
||||||
|
try:
|
||||||
|
boundaries = [
|
||||||
|
int(data.get("fromYear", 0)),
|
||||||
|
int(data.get("toYear", 99999999)),
|
||||||
|
]
|
||||||
|
|
||||||
|
except (TypeError, ValueError):
|
||||||
|
return response.Response(
|
||||||
|
{
|
||||||
|
"error": {
|
||||||
|
"code": 10,
|
||||||
|
"message": "Invalid fromYear or toYear parameter",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
# because, yeah, the specification explicitly state that fromYear can be greater
|
||||||
|
# than toYear, to indicate reverse ordering…
|
||||||
|
# http://www.subsonic.org/pages/api.jsp#getAlbumList2
|
||||||
|
from_year = min(boundaries)
|
||||||
|
to_year = max(boundaries)
|
||||||
|
queryset = queryset.filter(
|
||||||
|
release_date__year__gte=from_year, release_date__year__lte=to_year
|
||||||
|
)
|
||||||
|
if boundaries[0] <= boundaries[1]:
|
||||||
|
queryset = queryset.order_by("release_date")
|
||||||
|
else:
|
||||||
|
queryset = queryset.order_by("-release_date")
|
||||||
try:
|
try:
|
||||||
offset = int(data["offset"])
|
offset = int(data["offset"])
|
||||||
except (TypeError, KeyError, ValueError):
|
except (TypeError, KeyError, ValueError):
|
||||||
|
|
|
@ -469,6 +469,35 @@ def test_get_album_list2_by_genre(f, db, logged_in_api_client, factories):
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
"params, expected",
|
||||||
|
[
|
||||||
|
({"type": "byYear", "fromYear": 1902, "toYear": 1903}, [2, 3]),
|
||||||
|
# Because why not, it's supported in Subsonic API…
|
||||||
|
# http://www.subsonic.org/pages/api.jsp#getAlbumList2
|
||||||
|
({"type": "byYear", "fromYear": 1903, "toYear": 1902}, [3, 2]),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
def test_get_album_list2_by_year(params, expected, db, logged_in_api_client, factories):
|
||||||
|
albums = [
|
||||||
|
factories["music.Album"](
|
||||||
|
playable=True, release_date=datetime.date(1900 + i, 1, 1)
|
||||||
|
)
|
||||||
|
for i in range(5)
|
||||||
|
]
|
||||||
|
url = reverse("api:subsonic-get_album_list2")
|
||||||
|
base_params = {"f": "json"}
|
||||||
|
base_params.update(params)
|
||||||
|
response = logged_in_api_client.get(url, base_params)
|
||||||
|
|
||||||
|
assert response.status_code == 200
|
||||||
|
assert response.data == {
|
||||||
|
"albumList2": {
|
||||||
|
"album": serializers.get_album_list2_data([albums[i] for i in expected])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize("f", ["json"])
|
@pytest.mark.parametrize("f", ["json"])
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
"tags_field",
|
"tags_field",
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Documented how to create DB extension by hand in case of permission error during migrations (#934)
|
|
@ -0,0 +1 @@
|
||||||
|
Support byYear filtering in Subsonic API (#936)
|
|
@ -192,6 +192,12 @@ match what is described in :doc:`/installation/debian`:
|
||||||
# restart the services
|
# restart the services
|
||||||
sudo systemctl start funkwhale.target
|
sudo systemctl start funkwhale.target
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
If you see a PermissionError when running the ``migrate`` command, try running the following commands by hand, and relaunch the migrations::
|
||||||
|
|
||||||
|
sudo -u postgres psql funkwhale -c 'CREATE EXTENSION IF NOT EXISTS "citext";'
|
||||||
|
sudo -u postgres psql funkwhale -c 'CREATE EXTENSION IF NOT EXISTS "unaccent";'
|
||||||
|
|
||||||
.. warning::
|
.. warning::
|
||||||
|
|
||||||
You may sometimes get the following warning while applying migrations::
|
You may sometimes get the following warning while applying migrations::
|
||||||
|
|
|
@ -66,6 +66,7 @@ for Funkwhale to work properly:
|
||||||
.. code-block:: shell
|
.. code-block:: shell
|
||||||
|
|
||||||
sudo -u postgres psql funkwhale -c 'CREATE EXTENSION "unaccent";'
|
sudo -u postgres psql funkwhale -c 'CREATE EXTENSION "unaccent";'
|
||||||
|
sudo -u postgres psql funkwhale -c 'CREATE EXTENSION "citext";'
|
||||||
|
|
||||||
|
|
||||||
Cache setup (Redis)
|
Cache setup (Redis)
|
||||||
|
|
Loading…
Reference in New Issue