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 !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