Add sports as a preliminary scobble type
This commit is contained in:
@ -23,7 +23,7 @@ class ScrobbleAdmin(admin.ModelAdmin):
|
||||
"is_paused",
|
||||
"played_to_completion",
|
||||
)
|
||||
raw_id_fields = ('video', 'podcast_episode', 'track')
|
||||
raw_id_fields = ('video', 'podcast_episode', 'track', 'sport_event')
|
||||
list_filter = ("is_paused", "in_progress", "source", "track__artist")
|
||||
ordering = ("-timestamp",)
|
||||
|
||||
@ -34,6 +34,8 @@ class ScrobbleAdmin(admin.ModelAdmin):
|
||||
return obj.track
|
||||
if obj.podcast_episode:
|
||||
return obj.podcast_episode
|
||||
if obj.sport_event:
|
||||
return obj.sport_event
|
||||
|
||||
def media_type(self, obj):
|
||||
if obj.video:
|
||||
@ -42,6 +44,8 @@ class ScrobbleAdmin(admin.ModelAdmin):
|
||||
return "Track"
|
||||
if obj.podcast_episode:
|
||||
return "Podcast"
|
||||
if obj.sport_event:
|
||||
return "Sport Event"
|
||||
|
||||
def playback_percent(self, obj):
|
||||
return obj.percent_played
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
from django import forms
|
||||
|
||||
|
||||
class ImdbScrobbleForm(forms.Form):
|
||||
imdb_id = forms.CharField(
|
||||
class ScrobbleForm(forms.Form):
|
||||
item_id = forms.CharField(
|
||||
label="",
|
||||
widget=forms.TextInput(
|
||||
attrs={
|
||||
|
||||
@ -0,0 +1,25 @@
|
||||
# Generated by Django 4.1.5 on 2023-01-14 21:23
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('sports', '0002_rename_start_utc_sportevent_start'),
|
||||
('scrobbles', '0007_scrobble_podcast_episode'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='scrobble',
|
||||
name='sport_event',
|
||||
field=models.ForeignKey(
|
||||
blank=True,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.DO_NOTHING,
|
||||
to='sports.sportevent',
|
||||
),
|
||||
),
|
||||
]
|
||||
@ -11,6 +11,7 @@ from music.models import Track
|
||||
from podcasts.models import Episode
|
||||
from scrobbles.utils import check_scrobble_for_finish
|
||||
from videos.models import Video
|
||||
from sports.models import SportEvent
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
User = get_user_model()
|
||||
@ -27,6 +28,9 @@ class Scrobble(TimeStampedModel):
|
||||
podcast_episode = models.ForeignKey(
|
||||
Episode, on_delete=models.DO_NOTHING, **BNULL
|
||||
)
|
||||
sport_event = models.ForeignKey(
|
||||
SportEvent, on_delete=models.DO_NOTHING, **BNULL
|
||||
)
|
||||
user = models.ForeignKey(
|
||||
User, blank=True, null=True, on_delete=models.DO_NOTHING
|
||||
)
|
||||
@ -73,6 +77,8 @@ class Scrobble(TimeStampedModel):
|
||||
media_obj = self.track
|
||||
if self.podcast_episode:
|
||||
media_obj = self.podcast_episode
|
||||
if self.sport_event:
|
||||
media_obj = self.sport_event
|
||||
return media_obj
|
||||
|
||||
def __str__(self):
|
||||
@ -179,14 +185,14 @@ class Scrobble(TimeStampedModel):
|
||||
return scrobble.resume()
|
||||
|
||||
# We're not changing the scrobble, but we don't want to walk over an existing one
|
||||
scrobble_is_finished = (
|
||||
not scrobble.in_progress and scrobble.modified < backoff
|
||||
)
|
||||
if scrobble_is_finished:
|
||||
logger.info(
|
||||
'Found a very recent scrobble for this item, holding off scrobbling again'
|
||||
)
|
||||
return
|
||||
# scrobble_is_finished = (
|
||||
# not scrobble.in_progress and scrobble.modified < backoff
|
||||
# )
|
||||
# if scrobble_is_finished:
|
||||
# logger.info(
|
||||
# 'Found a very recent scrobble for this item, holding off scrobbling again'
|
||||
# )
|
||||
# return
|
||||
|
||||
if not scrobble:
|
||||
# If we default this to "" we can probably remove this
|
||||
|
||||
@ -33,7 +33,7 @@ from vrobbler.apps.music.aggregators import (
|
||||
top_tracks,
|
||||
week_of_scrobbles,
|
||||
)
|
||||
from scrobbles.forms import ImdbScrobbleForm
|
||||
from scrobbles.forms import ScrobbleForm
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@ -77,7 +77,7 @@ class RecentScrobbleList(ListView):
|
||||
|
||||
data["weekly_data"] = week_of_scrobbles()
|
||||
data['counts'] = scrobble_counts()
|
||||
data['imdb_form'] = ImdbScrobbleForm
|
||||
data['imdb_form'] = ScrobbleForm
|
||||
return data
|
||||
|
||||
def get_queryset(self):
|
||||
|
||||
Reference in New Issue
Block a user