73 lines
1.9 KiB
Python
73 lines
1.9 KiB
Python
import logging
|
|
|
|
from django.contrib.auth.decorators import login_required
|
|
from django.core.exceptions import BadRequest
|
|
from django.shortcuts import redirect, render
|
|
from django.urls import reverse
|
|
from django.utils.translation import gettext_lazy as _
|
|
from django.views.decorators.http import require_http_methods
|
|
|
|
from catalog.models import *
|
|
from journal.models import *
|
|
|
|
from .models import *
|
|
|
|
_logger = logging.getLogger(__name__)
|
|
|
|
PAGE_SIZE = 10
|
|
|
|
|
|
@require_http_methods(["GET"])
|
|
@login_required
|
|
def feed(request):
|
|
if not request.user.registration_complete:
|
|
return redirect(reverse("users:register"))
|
|
user = request.user
|
|
podcast_ids = [
|
|
p.item_id
|
|
for p in user.shelf_manager.get_latest_members(
|
|
ShelfType.PROGRESS, ItemCategory.Podcast
|
|
)
|
|
]
|
|
recent_podcast_episodes = PodcastEpisode.objects.filter(
|
|
program_id__in=podcast_ids
|
|
).order_by("-pub_date")[:10]
|
|
books_in_progress = Edition.objects.filter(
|
|
id__in=[
|
|
p.item_id
|
|
for p in user.shelf_manager.get_latest_members(
|
|
ShelfType.PROGRESS, ItemCategory.Book
|
|
)[:10]
|
|
]
|
|
)
|
|
tvshows_in_progress = Item.objects.filter(
|
|
id__in=[
|
|
p.item_id
|
|
for p in user.shelf_manager.get_latest_members(
|
|
ShelfType.PROGRESS, ItemCategory.TV
|
|
)[:10]
|
|
]
|
|
)
|
|
return render(
|
|
request,
|
|
"feed.html",
|
|
{
|
|
"recent_podcast_episodes": recent_podcast_episodes,
|
|
"books_in_progress": books_in_progress,
|
|
"tvshows_in_progress": tvshows_in_progress,
|
|
},
|
|
)
|
|
|
|
|
|
@login_required
|
|
@require_http_methods(["GET"])
|
|
def data(request):
|
|
return render(
|
|
request,
|
|
"feed_data.html",
|
|
{
|
|
"activities": ActivityManager(request.user.identity).get_timeline(
|
|
before_time=request.GET.get("last")
|
|
)[:PAGE_SIZE],
|
|
},
|
|
)
|