various reviews
Part-of: <https://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/2658>
This commit is contained in:
parent
17c4a92f77
commit
f45fd1e465
|
@ -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)
|
||||
)
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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),
|
||||
),
|
||||
]
|
|
@ -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")
|
||||
|
|
|
@ -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),
|
||||
),
|
||||
]
|
|
@ -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",)
|
||||
|
|
Loading…
Reference in New Issue