fix sharing error
This commit is contained in:
parent
af0e3c24a9
commit
85af2783a3
4 changed files with 29 additions and 12 deletions
|
@ -13,6 +13,7 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>{{ site_name }} - {% trans '错误' %}</title>
|
||||
{% include "common_libs.html" with jquery=0 v2=1 %}
|
||||
{% if url %}<meta http-equiv="refresh" content="3;url={{ url }}">{% endif %}
|
||||
</head>
|
||||
<body>
|
||||
{% include "_header.html" %}
|
||||
|
|
|
@ -24,6 +24,7 @@ from catalog.models import *
|
|||
from .renderers import render_md, render_text
|
||||
from catalog.common import jsondata
|
||||
from django.db import connection
|
||||
from django.core.exceptions import PermissionDenied
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
@ -1215,8 +1216,12 @@ class Mark:
|
|||
else None
|
||||
)
|
||||
self.save = lambda **args: None
|
||||
if not share_mark(self):
|
||||
raise ValueError("sharing failed")
|
||||
result, code = share_mark(self)
|
||||
if not result:
|
||||
if code == 401:
|
||||
raise PermissionDenied()
|
||||
else:
|
||||
raise ValueError(code)
|
||||
if self.shelfmember.metadata.get("shared_link") != self.shared_link:
|
||||
self.shelfmember.metadata["shared_link"] = self.shared_link
|
||||
self.shelfmember.save()
|
||||
|
|
|
@ -190,9 +190,20 @@ def mark(request, item_uuid):
|
|||
share_to_mastodon=share_to_mastodon,
|
||||
created_time=mark_date,
|
||||
)
|
||||
except ValueError as e:
|
||||
_logger.warn(f"post to mastodon error {e}")
|
||||
except PermissionDenied as e:
|
||||
_logger.warn(f"post to mastodon error 401 {request.user}")
|
||||
return render_relogin(request)
|
||||
except ValueError as e:
|
||||
_logger.warn(f"post to mastodon error {e} {request.user}")
|
||||
err = _("内容长度超出实例限制") if str(e) == "422" else str(e)
|
||||
return render(
|
||||
request,
|
||||
"common/error.html",
|
||||
{
|
||||
"msg": _("标记已保存,但是未能分享到联邦宇宙"),
|
||||
"secondary_msg": err,
|
||||
},
|
||||
)
|
||||
return HttpResponseRedirect(request.META.get("HTTP_REFERER"))
|
||||
raise BadRequest()
|
||||
|
||||
|
|
|
@ -92,12 +92,12 @@ def post_toot(
|
|||
try:
|
||||
if update_id:
|
||||
response = put(url + "/" + update_id, headers=headers, data=payload)
|
||||
if update_id is None or (response and response.status_code != 200):
|
||||
if not update_id or (response is not None and response.status_code != 200):
|
||||
headers["Idempotency-Key"] = random_string_generator(16)
|
||||
response = post(url, headers=headers, data=payload)
|
||||
if response and response.status_code == 201:
|
||||
if response is not None and response.status_code == 201:
|
||||
response.status_code = 200
|
||||
if response and response.status_code != 200:
|
||||
if response is not None and response.status_code != 200:
|
||||
logger.error(f"Error {url} {response.status_code}")
|
||||
except Exception:
|
||||
response = None
|
||||
|
@ -394,16 +394,16 @@ def share_mark(mark):
|
|||
update_id,
|
||||
spoiler_text,
|
||||
)
|
||||
if response and response.status_code in [200, 201]:
|
||||
if response is not None and response.status_code in [200, 201]:
|
||||
j = response.json()
|
||||
if "url" in j:
|
||||
mark.shared_link = j["url"]
|
||||
if mark.shared_link:
|
||||
mark.save(update_fields=["shared_link"])
|
||||
return True
|
||||
return True, 200
|
||||
else:
|
||||
logger.error(response)
|
||||
return False
|
||||
return False, response.status_code if response is not None else -1
|
||||
|
||||
|
||||
def share_review(review):
|
||||
|
@ -438,7 +438,7 @@ def share_review(review):
|
|||
response = post_toot(
|
||||
user.mastodon_site, content, visibility, user.mastodon_token, False, update_id
|
||||
)
|
||||
if response and response.status_code in [200, 201]:
|
||||
if response is not None and response.status_code in [200, 201]:
|
||||
j = response.json()
|
||||
if "url" in j:
|
||||
review.metadata["shared_link"] = j["url"]
|
||||
|
@ -473,7 +473,7 @@ def share_collection(collection, comment, user, visibility_no):
|
|||
)
|
||||
content = f"分享{user_str}的收藏单《{collection.title}》\n{collection.absolute_url}\n{comment}{tags}"
|
||||
response = post_toot(user.mastodon_site, content, visibility, user.mastodon_token)
|
||||
if response and response.status_code in [200, 201]:
|
||||
if response is not None and response.status_code in [200, 201]:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
|
Loading…
Add table
Reference in a new issue