This commit is contained in:
@ -909,6 +909,28 @@ def scrobble_longplay_finish(request, uuid):
|
||||
if not user.is_authenticated:
|
||||
return HttpResponseRedirect(success_url)
|
||||
|
||||
# Try scrobble UUID first
|
||||
scrobble = Scrobble.objects.filter(uuid=uuid, user=user).first()
|
||||
if scrobble:
|
||||
if scrobble.long_play_complete == True:
|
||||
scrobble.long_play_complete = None
|
||||
scrobble.save(update_fields=["long_play_complete"])
|
||||
messages.add_message(
|
||||
request,
|
||||
messages.INFO,
|
||||
f"Long play of {scrobble.media_obj} marked as not complete.",
|
||||
)
|
||||
else:
|
||||
scrobble.long_play_complete = True
|
||||
scrobble.save(update_fields=["long_play_complete"])
|
||||
messages.add_message(
|
||||
request,
|
||||
messages.SUCCESS,
|
||||
f"Long play of {scrobble.media_obj} finished.",
|
||||
)
|
||||
return HttpResponseRedirect(success_url)
|
||||
|
||||
# Fall back to media UUID (existing behavior)
|
||||
media_obj = None
|
||||
for app, model in LONG_PLAY_MEDIA.items():
|
||||
media_model = apps.get_model(app_label=app, model_name=model)
|
||||
@ -917,10 +939,21 @@ def scrobble_longplay_finish(request, uuid):
|
||||
break
|
||||
|
||||
if not media_obj:
|
||||
return
|
||||
messages.add_message(
|
||||
request, messages.ERROR, f"Media with uuid {uuid} not found."
|
||||
)
|
||||
return HttpResponseRedirect(success_url)
|
||||
|
||||
last_scrobble = media_obj.last_long_play_scrobble_for_user(user)
|
||||
if last_scrobble and last_scrobble.long_play_complete == False:
|
||||
if last_scrobble and last_scrobble.long_play_complete == True:
|
||||
last_scrobble.long_play_complete = None
|
||||
last_scrobble.save(update_fields=["long_play_complete"])
|
||||
messages.add_message(
|
||||
request,
|
||||
messages.INFO,
|
||||
f"Long play of {media_obj} marked as not complete.",
|
||||
)
|
||||
elif last_scrobble:
|
||||
last_scrobble.long_play_complete = True
|
||||
last_scrobble.save(update_fields=["long_play_complete"])
|
||||
messages.add_message(
|
||||
@ -928,12 +961,6 @@ def scrobble_longplay_finish(request, uuid):
|
||||
messages.SUCCESS,
|
||||
f"Long play of {media_obj} finished.",
|
||||
)
|
||||
elif last_scrobble and last_scrobble.long_play_complete == True:
|
||||
messages.add_message(
|
||||
request,
|
||||
messages.INFO,
|
||||
f"Long play of {media_obj} was already completed.",
|
||||
)
|
||||
else:
|
||||
messages.add_message(
|
||||
request, messages.ERROR, f"Media with uuid {uuid} not found."
|
||||
|
||||
Reference in New Issue
Block a user