lib.itmens/journal/views/post.py

77 lines
2.8 KiB
Python
Raw Normal View History

2023-08-15 15:46:11 -04:00
from django.contrib.auth.decorators import login_required
from django.core.exceptions import BadRequest, ObjectDoesNotExist, PermissionDenied
from django.shortcuts import get_object_or_404, redirect, render
from django.urls import reverse
from django.utils.translation import gettext_lazy as _
2023-12-29 16:03:31 -05:00
from django.views.decorators.http import require_http_methods
2023-08-15 15:46:11 -04:00
2023-12-30 22:20:15 -05:00
from common.utils import AuthedHttpRequest, get_uuid_or_404, target_identity_required
2023-12-29 16:03:31 -05:00
from mastodon.api import boost_toot_later
2023-08-15 15:46:11 -04:00
from takahe.utils import Takahe
from ..forms import *
from ..models import *
@login_required
def piece_replies(request: AuthedHttpRequest, piece_uuid: str):
piece = get_object_or_404(Piece, uid=get_uuid_or_404(piece_uuid))
if not piece.is_visible_to(request.user):
raise PermissionDenied()
replies = piece.get_replies(request.user.identity)
return render(
request, "replies.html", {"post": piece.latest_post, "replies": replies}
)
2023-08-15 15:46:11 -04:00
@login_required
def post_replies(request: AuthedHttpRequest, post_id: int):
replies = Takahe.get_replies_for_posts([post_id], request.user.identity.pk)
2023-08-15 15:46:11 -04:00
return render(
request, "replies.html", {"post": Takahe.get_post(post_id), "replies": replies}
)
2023-12-29 16:03:31 -05:00
@require_http_methods(["POST"])
2023-08-15 15:46:11 -04:00
@login_required
def post_reply(request: AuthedHttpRequest, post_id: int):
content = request.POST.get("content", "").strip()
visibility = Takahe.Visibilities(int(request.POST.get("visibility", -1)))
2023-12-29 16:03:31 -05:00
if not content:
2023-08-15 15:46:11 -04:00
raise BadRequest()
Takahe.reply_post(post_id, request.user.identity.pk, content, visibility)
replies = Takahe.get_replies_for_posts([post_id], request.user.identity.pk)
2023-08-15 15:46:11 -04:00
return render(
request, "replies.html", {"post": Takahe.get_post(post_id), "replies": replies}
)
2023-12-29 16:03:31 -05:00
@require_http_methods(["POST"])
@login_required
def post_boost(request: AuthedHttpRequest, post_id: int):
2023-12-29 17:21:46 -05:00
# classic_repost = request.user.preference.mastodon_repost_mode == 1
post = Takahe.get_post(post_id)
if not post:
raise BadRequest()
if request.user.mastodon_site:
boost_toot_later(request.user, post.object_uri)
else:
Takahe.boost_post(post_id, request.user.identity.pk)
return render(request, "action_boost_post.html", {"post": post})
2023-12-29 16:03:31 -05:00
@require_http_methods(["POST"])
2023-08-15 15:46:11 -04:00
@login_required
def post_like(request: AuthedHttpRequest, post_id: int):
Takahe.like_post(post_id, request.user.identity.pk)
return render(request, "action_like_post.html", {"post": Takahe.get_post(post_id)})
2023-12-29 16:03:31 -05:00
@require_http_methods(["POST"])
2023-08-15 15:46:11 -04:00
@login_required
def post_unlike(request: AuthedHttpRequest, post_id: int):
if request.method != "POST":
raise BadRequest()
Takahe.unlike_post(post_id, request.user.identity.pk)
return render(request, "action_like_post.html", {"post": Takahe.get_post(post_id)})