lib.itmens/timeline/views.py

66 lines
2.2 KiB
Python
Raw Normal View History

2022-05-30 17:54:35 -04:00
import logging
from django.shortcuts import render, get_object_or_404, redirect, reverse
from django.contrib.auth.decorators import login_required, permission_required
from django.utils.translation import gettext_lazy as _
from django.http import HttpResponseBadRequest, HttpResponseServerError
from django.core.exceptions import ObjectDoesNotExist, PermissionDenied
from django.db import IntegrityError, transaction
from django.db.models import Count
from django.utils import timezone
from django.core.paginator import Paginator
from mastodon import mastodon_request_included
from mastodon.models import MastodonApplication
from mastodon.api import post_toot, TootVisibilityEnum
from common.utils import PageLinksGenerator
from .models import *
from books.models import BookTag
from movies.models import MovieTag
from games.models import GameTag
from music.models import AlbumTag
2022-05-30 17:54:35 -04:00
from django.conf import settings
import re
from users.models import User
from django.http import HttpResponseRedirect
from django.db.models import Q
import time
from management.models import Announcement
2022-05-30 17:54:35 -04:00
logger = logging.getLogger(__name__)
mastodon_logger = logging.getLogger("django.mastodon")
PAGE_SIZE = 20
@login_required
def timeline(request):
if request.method != 'GET':
return
user = request.user
2022-05-30 17:54:35 -04:00
return render(
request,
'timeline.html',
{
'book_tags': BookTag.all_by_user(user)[:10],
'movie_tags': MovieTag.all_by_user(user)[:10],
'music_tags': AlbumTag.all_by_user(user)[:10],
'game_tags': GameTag.all_by_user(user)[:10],
'unread_announcements': Announcement.objects.filter(pk__gt=request.user.read_announcement_index).order_by('-pk'),
2022-05-30 17:54:35 -04:00
}
)
def data(request):
if request.method != 'GET':
return
q = Q(owner_id__in=request.user.following, visibility__lt=2) | Q(owner_id=request.user.id)
last = request.GET.get('last')
if last:
q = q & Q(created_time__lt=last)
activities = Activity.objects.filter(q).order_by('-created_time')[:PAGE_SIZE]
return render(
request,
'timeline_data.html',
{
'activities': activities,
}
)