diff --git a/vrobbler/apps/scrobbles/models.py b/vrobbler/apps/scrobbles/models.py index a4d55d8..928dc5a 100644 --- a/vrobbler/apps/scrobbles/models.py +++ b/vrobbler/apps/scrobbles/models.py @@ -624,6 +624,20 @@ class Scrobble(TimeStampedModel): return metadata_cls.from_dict(self.log) + def redirect_url(self, user_id) -> str: + user = User.objects.filter(id=user_id).first() + redirect_url = self.media_obj.get_absolute_url() + + if ( + self.media_type == self.MediaType.WEBPAGE + and user + and user.profile.redirect_to_webpage + ): + logger.info(f"Redirecting to {self.media_obj.url}") + redirect_url = self.media_obj.url + + return redirect_url + @property def tzinfo(self): return pytz.timezone(self.timezone) diff --git a/vrobbler/apps/scrobbles/views.py b/vrobbler/apps/scrobbles/views.py index 9775125..d682e17 100644 --- a/vrobbler/apps/scrobbles/views.py +++ b/vrobbler/apps/scrobbles/views.py @@ -67,12 +67,10 @@ class RecentScrobbleList(ListView): user = self.request.user if user.is_authenticated: if scrobble_url := self.request.GET.get("scrobble_url"): - scrobble = manual_scrobble_webpage(scrobble_url, self.request.user.id) - if self.request.user.profile.redirect_to_webpage: - logger.info(f"Redirecting to {scrobble.media_obj} detail page") - return HttpResponseRedirect(scrobble.media_obj.get_absolute_url()) - else: - return HttpResponseRedirect(reverse_lazy("vrobbler-home")) + scrobble = manual_scrobble_webpage( + scrobble_url, self.request.user.id + ) + return HttpResponseRedirect(scrobble.redirect_url(user.id)) return super().get(*args, **kwargs) def get_context_data(self, **kwargs): @@ -237,11 +235,9 @@ class ManualScrobbleView(FormView): scrobble_fn = MANUAL_SCROBBLE_FNS[key] scrobble = eval(scrobble_fn)(item_id, self.request.user.id) - if self.request.user.profile.redirect_to_webpage and key == "-w": - logger.info(f"Redirecting to {scrobble.media_obj} detail page") - return HttpResponseRedirect(scrobble.media_obj.get_absolute_url()) - - return HttpResponseRedirect(self.request.META.get("HTTP_REFERER")) + return HttpResponseRedirect( + scrobble.redirect_url(self.request.user.id) + ) class JsonableResponseMixin: @@ -473,7 +469,8 @@ def scrobble_start(request, uuid): and media_obj.__class__.__name__ == Scrobble.MediaType.WEBPAGE ): logger.info(f"Redirecting to {media_obj} detail apge") - return HttpResponseRedirect(media_obj.get_absolute_url()) + return HttpResponseRedirect(media_obj.url) + return HttpResponseRedirect(success_url)