Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
jovuit
funkwhale
Commits
57750e39
Verified
Commit
57750e39
authored
Oct 16, 2019
by
Eliot Berriot
Browse files
Merge branch 'master' into develop
parents
668615a8
db807101
Changes
6
Hide whitespace changes
Inline
Side-by-side
api/funkwhale_api/subsonic/views.py
View file @
57750e39
"""
Documentation of Subsonic API can be found at http://www.subsonic.org/pages/api.jsp
"""
import
datetime
import
functools
...
...
@@ -427,7 +430,34 @@ class SubsonicViewSet(viewsets.GenericViewSet):
Q
(
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
:
offset
=
int
(
data
[
"offset"
])
except
(
TypeError
,
KeyError
,
ValueError
):
...
...
api/tests/subsonic/test_views.py
View file @
57750e39
...
...
@@ -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
(
"tags_field"
,
...
...
changes/changelog.d/934.doc
0 → 100644
View file @
57750e39
Documented how to create DB extension by hand in case of permission error during migrations (#934)
changes/changelog.d/936.enhancement
0 → 100644
View file @
57750e39
Support byYear filtering in Subsonic API (#936)
docs/admin/upgrading.rst
View file @
57750e39
...
...
@@ -192,6 +192,12 @@ match what is described in :doc:`/installation/debian`:
# restart the services
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::
You may sometimes get the following warning while applying migrations::
...
...
docs/installation/external_dependencies.rst
View file @
57750e39
...
...
@@ -66,6 +66,7 @@ for Funkwhale to work properly:
.. code-block:: shell
sudo -u postgres psql funkwhale -c 'CREATE EXTENSION "unaccent";'
sudo -u postgres psql funkwhale -c 'CREATE EXTENSION "citext";'
Cache setup (Redis)
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment