From f45fd1e465d37614bd1a8e7b424ffd59bb848116 Mon Sep 17 00:00:00 2001 From: Petitminion Date: Wed, 13 Dec 2023 16:31:26 +0100 Subject: [PATCH] various reviews Part-of: --- .../contrib/listenbrainz/funkwhale_ready.py | 4 ++-- .../contrib/listenbrainz/tasks.py | 24 +++++++++++++++---- .../0002_trackfavorite_from_listenbrainz.py | 18 -------------- api/funkwhale_api/favorites/models.py | 2 +- .../0003_listening_from_listenbrainz.py | 18 -------------- api/funkwhale_api/history/models.py | 2 +- 6 files changed, 24 insertions(+), 44 deletions(-) delete mode 100644 api/funkwhale_api/favorites/migrations/0002_trackfavorite_from_listenbrainz.py delete mode 100644 api/funkwhale_api/history/migrations/0003_listening_from_listenbrainz.py diff --git a/api/funkwhale_api/contrib/listenbrainz/funkwhale_ready.py b/api/funkwhale_api/contrib/listenbrainz/funkwhale_ready.py index 250019d00..cd164354c 100644 --- a/api/funkwhale_api/contrib/listenbrainz/funkwhale_ready.py +++ b/api/funkwhale_api/contrib/listenbrainz/funkwhale_ready.py @@ -106,7 +106,7 @@ def sync_listenings_from_listenbrainz(user, conf): try: last_ts = ( history_models.Listening.objects.filter(user=user) - .filter(from_listenbrainz=True) + .filter(source="Listenbrainz") .latest("creation_date") .values_list("creation_date", flat=True) ) @@ -126,7 +126,7 @@ def sync_favorites_from_listenbrainz(user, conf): try: last_ts = ( favorites_models.TrackFavorite.objects.filter(user=user) - .filter(from_listenbrainz=True) + .filter(source="Listenbrainz") .latest("creation_date") .values_list("creation_date", flat=True) ) diff --git a/api/funkwhale_api/contrib/listenbrainz/tasks.py b/api/funkwhale_api/contrib/listenbrainz/tasks.py index a61a2c864..1c63100d6 100644 --- a/api/funkwhale_api/contrib/listenbrainz/tasks.py +++ b/api/funkwhale_api/contrib/listenbrainz/tasks.py @@ -8,6 +8,8 @@ from funkwhale_api.music import models as music_models from funkwhale_api.taskapp import celery from funkwhale_api.users import models +from .funkwhale_startup import PLUGIN + @celery.app.task(name="listenbrainz.trigger_listening_sync_with_listenbrainz") def trigger_listening_sync_with_listenbrainz(): @@ -64,20 +66,34 @@ def add_lb_listenings_to_db(listens, user): listen.additional_info.get("submission_client") and listen.additional_info.get("submission_client") == "Funkwhale ListenBrainz plugin" + and history_models.Listening.objects.filter( + creation_date=listen.listened_at + ).exists() ): continue + + mbid = ( + listen.mbid_mapping + if hasattr(listen, "mbid_mapping") + else listen.recording_mbid + ) + + if not mbid: + logger = PLUGIN["logger"] + logger.info("Received listening doesn't have a mbid. Skipping...") + try: - track = music_models.Track.objects.get(mbid=listen.recording_mbid) + track = music_models.Track.objects.get(mbid=mbid) except music_models.Track.DoesNotExist: - # to do : resolve non mbid listens ? + logger.info("Received listening doesn't exist in fw database. Skipping...") continue user = user fw_listen = history_models.Listening( - creation_date=listen.listened_at, + creation_date=timezone.make_aware(listen.listened_at), track=track, user=user, - from_listenbrainz=True, + source="Listenbrainz", ) fw_listens.append(fw_listen) diff --git a/api/funkwhale_api/favorites/migrations/0002_trackfavorite_from_listenbrainz.py b/api/funkwhale_api/favorites/migrations/0002_trackfavorite_from_listenbrainz.py deleted file mode 100644 index f982f38d8..000000000 --- a/api/funkwhale_api/favorites/migrations/0002_trackfavorite_from_listenbrainz.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2.20 on 2023-11-29 15:19 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('favorites', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='trackfavorite', - name='from_listenbrainz', - field=models.BooleanField(default=None, null=True), - ), - ] diff --git a/api/funkwhale_api/favorites/models.py b/api/funkwhale_api/favorites/models.py index ca8051a31..bd0f8be0b 100644 --- a/api/funkwhale_api/favorites/models.py +++ b/api/funkwhale_api/favorites/models.py @@ -12,7 +12,7 @@ class TrackFavorite(models.Model): track = models.ForeignKey( Track, related_name="track_favorites", on_delete=models.CASCADE ) - from_listenbrainz = models.BooleanField(default=None, null=True) + source = models.CharField(max_length=100, null=True, blank=True) class Meta: unique_together = ("track", "user") diff --git a/api/funkwhale_api/history/migrations/0003_listening_from_listenbrainz.py b/api/funkwhale_api/history/migrations/0003_listening_from_listenbrainz.py deleted file mode 100644 index 3a9168c05..000000000 --- a/api/funkwhale_api/history/migrations/0003_listening_from_listenbrainz.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2.20 on 2023-11-29 15:19 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('history', '0002_auto_20180325_1433'), - ] - - operations = [ - migrations.AddField( - model_name='listening', - name='from_listenbrainz', - field=models.BooleanField(default=None, null=True), - ), - ] diff --git a/api/funkwhale_api/history/models.py b/api/funkwhale_api/history/models.py index 7afcc0b2c..046115d07 100644 --- a/api/funkwhale_api/history/models.py +++ b/api/funkwhale_api/history/models.py @@ -17,7 +17,7 @@ class Listening(models.Model): on_delete=models.CASCADE, ) session_key = models.CharField(max_length=100, null=True, blank=True) - from_listenbrainz = models.BooleanField(default=None, null=True) + source = models.CharField(max_length=100, null=True, blank=True) class Meta: ordering = ("-creation_date",)