fix sharing error for email only users

This commit is contained in:
Your Name 2023-07-20 22:59:21 -04:00 committed by Henri Dickson
parent a2523fae1c
commit 35fc702728
3 changed files with 32 additions and 44 deletions

View file

@ -313,7 +313,7 @@ class Review(Content):
review, created = cls.objects.update_or_create(
item=item, owner=user, defaults=defaults
)
if share_to_mastodon:
if share_to_mastodon and user.mastodon_username:
share_review(review)
return review
@ -1162,6 +1162,7 @@ class Mark:
# silence=False means update is logged.
share = (
share_to_mastodon
and self.owner.mastodon_username
and shelf_type is not None
and (
shelf_type != self.shelf_type

View file

@ -1,34 +1,34 @@
import logging
from django.shortcuts import render, get_object_or_404, redirect
from django.urls import reverse
from datetime import datetime
from django.conf import settings
from django.contrib.auth.decorators import login_required
from django.utils.translation import gettext_lazy as _
from django.http import Http404, HttpResponse
from django.core.exceptions import BadRequest, ObjectDoesNotExist, PermissionDenied
from django.core.paginator import Paginator
from django.db.models import Count
from django.http import Http404, HttpResponse, HttpResponseRedirect
from django.shortcuts import get_object_or_404, redirect, render
from django.urls import reverse
from django.utils import timezone
from django.utils.dateparse import parse_datetime
from django.core.paginator import Paginator
from django.utils.translation import gettext_lazy as _
from user_messages import api as msg
from common.utils import PageLinksGenerator, get_uuid_or_404
from journal.renderers import convert_leading_space_in_md
from .models import *
from django.conf import settings
from django.http import HttpResponseRedirect
from management.models import Announcement
from .forms import *
from mastodon.api import (
get_spoiler_text,
share_review,
share_collection,
get_status_id_by_url,
post_toot,
get_visibility,
post_toot,
share_collection,
share_review,
)
from users.models import User
from users.views import render_user_blocked, render_user_not_found
from users.models import User, Report, Preference
from common.utils import PageLinksGenerator, get_uuid_or_404
from user_messages import api as msg
from datetime import datetime
from .forms import *
from .models import *
_logger = logging.getLogger(__name__)
PAGE_SIZE = 10
@ -215,7 +215,7 @@ def mark(request, item_uuid):
raise BadRequest()
def post_comment(user, item, text, visibility, shared_link=None, position=None):
def share_comment(user, item, text, visibility, shared_link=None, position=None):
post_error = False
status_id = get_status_id_by_url(shared_link)
link = (
@ -245,21 +245,6 @@ def post_comment(user, item, text, visibility, shared_link=None, position=None):
return post_error, shared_link
@login_required
def comment_select_episode(request, item_uuid):
item = get_object_or_404(Item, uid=get_uuid_or_404(item_uuid))
if request.method == "GET":
return render(
request,
"comment_select_episode.html",
{
"item": item,
"comment": comment,
},
)
raise BadRequest()
@login_required
def mark_log(request, item_uuid, log_id):
"""
@ -321,8 +306,8 @@ def comment(request, item_uuid):
share_to_mastodon = bool(request.POST.get("share_to_mastodon", default=False))
shared_link = comment.metadata.get("shared_link") if comment else None
post_error = False
if share_to_mastodon:
post_error, shared_link = post_comment(
if share_to_mastodon and request.user.mastodon_username:
post_error, shared_link = share_comment(
request.user, item, text, visibility, shared_link, position
)
Comment.objects.update_or_create(

View file

@ -1,16 +1,18 @@
import requests
import string
import random
import functools
import logging
from django.conf import settings
from django.urls import reverse
from urllib.parse import quote
from .models import MastodonApplication
from mastodon.utils import rating_to_emoji
import random
import re
import string
from urllib.parse import quote
import requests
from django.conf import settings
from loguru import logger
from mastodon.utils import rating_to_emoji
from .models import MastodonApplication
# See https://docs.joinmastodon.org/methods/accounts/
# returns user info