[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 and user.profile.redirect_to_webpage
): ):
logger.info(f"Redirecting to {self.media_obj.url}") 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 return redirect_url

View File

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

View File

@ -11,4 +11,9 @@ urlpatterns = [
views.WebPageDetailView.as_view(), views.WebPageDetailView.as_view(),
name="webpage-detail", 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.contrib.auth.mixins import LoginRequiredMixin
from django.db.models import Count 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 django.views import generic
from webpages.forms import WebPageReadForm
from webpages.models import WebPage from webpages.models import WebPage
@ -26,3 +30,39 @@ class WebPageDetailView(LoginRequiredMixin, generic.DetailView):
context_data = super().get_context_data(**kwargs) context_data = super().get_context_data(**kwargs)
context_data["scrobbles"] = self.object.scrobbles(user) context_data["scrobbles"] = self.object.scrobbles(user)
return context_data 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})
)