lib.itmens/social/views.py
2023-10-22 17:46:34 -04:00

74 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 catalog.models import *
from journal.models import *
from .models import *
_logger = logging.getLogger(__name__)
PAGE_SIZE = 10
@login_required
def feed(request):
if request.method != "GET":
raise BadRequest()
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
def data(request):
if request.method != "GET":
raise BadRequest()
return render(
request,
"feed_data.html",
{
"activities": ActivityManager(request.user.identity).get_timeline(
before_time=request.GET.get("last")
)[:PAGE_SIZE],
},
)