From 1eec5ef418b9a3e1562e0ac5d16a75b0a4708b06 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 27 Dec 2023 17:29:21 -0500 Subject: [PATCH] minor refactor of review model --- journal/api.py | 13 ++----------- journal/models/review.py | 12 +++++++++++- journal/tests.py | 2 +- journal/views/review.py | 10 ++-------- 4 files changed, 16 insertions(+), 21 deletions(-) diff --git a/journal/api.py b/journal/api.py index 84901fa8..1870fb1e 100644 --- a/journal/api.py +++ b/journal/api.py @@ -1,16 +1,11 @@ from datetime import datetime from typing import List -from django.contrib.auth.decorators import login_required -from django.utils import timezone from ninja import Field, Schema from ninja.pagination import paginate -from ninja.security import django_auth -from oauth2_provider.decorators import protected_resource from catalog.common.models import * from common.api import * -from mastodon.api import boost_toot_later, share_review from .models import Mark, Review, ShelfType, TagManager, q_item_in_category @@ -192,19 +187,15 @@ def review_item(request, item_uuid: str, review: ReviewInSchema): item = Item.get_by_url(item_uuid) if not item: return 404, {"message": "Item not found"} - r, post = Review.update_item_review( + Review.update_item_review( item, request.user.identity, review.title, review.body, review.visibility, created_time=review.created_time, + share_to_mastodon=review.post_to_fediverse, ) - if post and review.post_to_fediverse: - if request.user.preference.mastodon_repost_mode == 1: - share_review(r) - else: - boost_toot_later(request.user, post.url) return 200, {"message": "OK"} diff --git a/journal/models/review.py b/journal/models/review.py index de4be485..aa18c329 100644 --- a/journal/models/review.py +++ b/journal/models/review.py @@ -9,6 +9,7 @@ from markdownify import markdownify as md from markdownx.models import MarkdownxField from catalog.models import Item +from mastodon.api import boost_toot_later, share_review from users.models import APIdentity from .common import Content @@ -95,6 +96,7 @@ class Review(Content): body: str | None, visibility=0, created_time=None, + share_to_mastodon: bool = False, ): from takahe.utils import Takahe @@ -116,4 +118,12 @@ class Review(Content): item=item, owner=owner, defaults=defaults ) post = Takahe.post_review(review, created) - return review, post + if post and share_to_mastodon: + if ( + owner.user.preference.mastodon_repost_mode == 1 + and owner.user.mastodon_site + ): + share_review(review) + else: + boost_toot_later(owner.user, post.url) + return review diff --git a/journal/tests.py b/journal/tests.py index 66ccbea0..34b1ba90 100644 --- a/journal/tests.py +++ b/journal/tests.py @@ -175,7 +175,7 @@ class MarkTest(TestCase): self.assertEqual(mark.tags, []) def test_review(self): - review, post = Review.update_item_review( + review = Review.update_item_review( self.book1, self.user1.identity, "Critic", "Review" ) mark = Mark(self.user1.identity, self.book1) diff --git a/journal/views/review.py b/journal/views/review.py index 3ff92886..90f0fee0 100644 --- a/journal/views/review.py +++ b/journal/views/review.py @@ -15,8 +15,6 @@ from django.views.decorators.http import require_http_methods from catalog.models import * from common.utils import AuthedHttpRequest, PageLinksGenerator, get_uuid_or_404 from journal.models.renderers import convert_leading_space_in_md, render_md -from mastodon.api import boost_toot_later, share_review -from users.models import User from users.models.apidentity import APIdentity from ..forms import * @@ -76,21 +74,17 @@ def review_edit(request: AuthedHttpRequest, item_uuid, review_uuid=None): body = form.instance.body if request.POST.get("leading_space"): body = convert_leading_space_in_md(body) - review, post = Review.update_item_review( + review = Review.update_item_review( item, request.user.identity, form.cleaned_data["title"], body, form.cleaned_data["visibility"], mark_date, + form.cleaned_data["share_to_mastodon"], ) if not review: raise BadRequest() - if form.cleaned_data["share_to_mastodon"] and post: - if request.user.preference.mastodon_repost_mode == 1: - share_review(review) - else: - boost_toot_later(request.user, post.url) return redirect(reverse("journal:review_retrieve", args=[review.uuid])) else: raise BadRequest()