[webpages] Provide default iframe reading method

This commit is contained in:
2024-08-03 23:49:31 -04:00
parent 882367cee6
commit f29a039562
4 changed files with 49 additions and 1 deletions

View File

@ -634,7 +634,7 @@ class Scrobble(TimeStampedModel):
and user.profile.redirect_to_webpage
):
logger.info(f"Redirecting to {self.media_obj.url}")
redirect_url = self.media_obj.url
redirect_url = self.media_obj.get_read_url()
return redirect_url

View File

@ -69,6 +69,9 @@ class WebPage(ScrobblableMixin):
def get_absolute_url(self):
return reverse("webpages:webpage-detail", kwargs={"slug": self.uuid})
def get_read_url(self):
return reverse("webpages:webpage-read", kwargs={"slug": self.uuid})
@property
def estimated_time_to_read_in_seconds(self):
if not self.extract:

View File

@ -11,4 +11,9 @@ urlpatterns = [
views.WebPageDetailView.as_view(),
name="webpage-detail",
),
path(
"webpage/<slug:slug>/read/",
views.WebPageReadView.as_view(),
name="webpage-read",
),
]

View File

@ -1,6 +1,10 @@
from django.contrib.auth.mixins import LoginRequiredMixin
from django.db.models import Count
from django.http import HttpResponseRedirect
from django.shortcuts import redirect
from django.urls import reverse
from django.views import generic
from webpages.forms import WebPageReadForm
from webpages.models import WebPage
@ -26,3 +30,39 @@ class WebPageDetailView(LoginRequiredMixin, generic.DetailView):
context_data = super().get_context_data(**kwargs)
context_data["scrobbles"] = self.object.scrobbles(user)
return context_data
class WebPageReadView(
LoginRequiredMixin, generic.edit.FormView, generic.DetailView
):
model = WebPage
slug_field = "uuid"
template_name = "webpages/webpage_read.html"
form_class = WebPageReadForm
def get(self, *args, **kwargs):
user = self.request.user
webpage = WebPage.objects.get(uuid=kwargs.get("slug"))
latest_scrobble = webpage.scrobbles(user).last()
if latest_scrobble.played_to_completion:
redirect(
reverse(
"webpages:webpage-detail", kwargs={"slug": webpage.uuid}
)
)
return super().get(*args, **kwargs)
def form_valid(self, *args):
user = self.request.user
webpage = WebPage.objects.get(uuid=self.kwargs.get("slug"))
latest_scrobble = webpage.scrobbles(user).last()
if not latest_scrobble.played_to_completion:
latest_scrobble.stop()
latest_scrobble.log["notes"] = self.request.POST.get("notes")
latest_scrobble.save(update_fields=["log"])
return HttpResponseRedirect(
reverse("webpages:webpage-detail", kwargs={"slug": webpage.uuid})
)