Skip to content
Snippets Groups Projects
Commit 11a42e36 authored by Eliot Berriot's avatar Eliot Berriot
Browse files

Merge branch 'nodeinfo-care' into 'develop'

Include only local content in nodeinfo stats, added downloads count

See merge request funkwhale/funkwhale!1028
parents 8d59d8f2 f146c0ae
No related branches found
No related tags found
No related merge requests found
...@@ -87,6 +87,7 @@ def get(): ...@@ -87,6 +87,7 @@ def get():
data["metadata"]["usage"] = { data["metadata"]["usage"] = {
"favorites": {"tracks": {"total": statistics["track_favorites"]}}, "favorites": {"tracks": {"total": statistics["track_favorites"]}},
"listenings": {"total": statistics["listenings"]}, "listenings": {"total": statistics["listenings"]},
"downloads": {"total": statistics["downloads"]},
} }
if not auth_required: if not auth_required:
data["metadata"]["knownNodesListUrl"] = federation_utils.full_url( data["metadata"]["knownNodesListUrl"] = federation_utils.full_url(
......
...@@ -17,6 +17,7 @@ def get(): ...@@ -17,6 +17,7 @@ def get():
"artists": get_artists(), "artists": get_artists(),
"track_favorites": get_track_favorites(), "track_favorites": get_track_favorites(),
"listenings": get_listenings(), "listenings": get_listenings(),
"downloads": get_downloads(),
"music_duration": get_music_duration(), "music_duration": get_music_duration(),
} }
...@@ -43,15 +44,19 @@ def get_track_favorites(): ...@@ -43,15 +44,19 @@ def get_track_favorites():
def get_tracks(): def get_tracks():
return models.Track.objects.count() return models.Track.objects.local().count()
def get_albums(): def get_albums():
return models.Album.objects.count() return models.Album.objects.local().count()
def get_artists(): def get_artists():
return models.Artist.objects.count() return models.Artist.objects.local().count()
def get_downloads():
return models.Track.objects.aggregate(d=Sum("downloads_count"))["d"] or 0
def get_music_duration(): def get_music_duration():
......
...@@ -27,6 +27,7 @@ def test_nodeinfo_dump(preferences, mocker, avatar): ...@@ -27,6 +27,7 @@ def test_nodeinfo_dump(preferences, mocker, avatar):
"track_favorites": 5, "track_favorites": 5,
"music_duration": 6, "music_duration": 6,
"listenings": 7, "listenings": 7,
"downloads": 42,
} }
mocker.patch("funkwhale_api.instance.stats.get", return_value=stats) mocker.patch("funkwhale_api.instance.stats.get", return_value=stats)
...@@ -61,6 +62,7 @@ def test_nodeinfo_dump(preferences, mocker, avatar): ...@@ -61,6 +62,7 @@ def test_nodeinfo_dump(preferences, mocker, avatar):
"usage": { "usage": {
"favorites": {"tracks": {"total": stats["track_favorites"]}}, "favorites": {"tracks": {"total": stats["track_favorites"]}},
"listenings": {"total": stats["listenings"]}, "listenings": {"total": stats["listenings"]},
"downloads": {"total": stats["downloads"]},
}, },
"supportedUploadExtensions": music_utils.SUPPORTED_EXTENSIONS, "supportedUploadExtensions": music_utils.SUPPORTED_EXTENSIONS,
"allowList": {"enabled": False, "domains": None}, "allowList": {"enabled": False, "domains": None},
......
...@@ -34,17 +34,17 @@ def test_get_track_favorites(mocker): ...@@ -34,17 +34,17 @@ def test_get_track_favorites(mocker):
def test_get_tracks(mocker): def test_get_tracks(mocker):
mocker.patch("funkwhale_api.music.models.Track.objects.count", return_value=42) mocker.patch("funkwhale_api.music.models.TrackQuerySet.count", return_value=42)
assert stats.get_tracks() == 42 assert stats.get_tracks() == 42
def test_get_albums(mocker): def test_get_albums(mocker):
mocker.patch("funkwhale_api.music.models.Album.objects.count", return_value=42) mocker.patch("funkwhale_api.music.models.AlbumQuerySet.count", return_value=42)
assert stats.get_albums() == 42 assert stats.get_albums() == 42
def test_get_artists(mocker): def test_get_artists(mocker):
mocker.patch("funkwhale_api.music.models.Artist.objects.count", return_value=42) mocker.patch("funkwhale_api.music.models.ArtistQuerySet.count", return_value=42)
assert stats.get_artists() == 42 assert stats.get_artists() == 42
...@@ -57,6 +57,7 @@ def test_get(mocker): ...@@ -57,6 +57,7 @@ def test_get(mocker):
"track_favorites", "track_favorites",
"listenings", "listenings",
"music_duration", "music_duration",
"downloads",
] ]
[ [
mocker.patch.object(stats, "get_{}".format(k), return_value=i) mocker.patch.object(stats, "get_{}".format(k), return_value=i)
......
Include only local content in nodeinfo stats, added downloads count
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment