fix mark length bug & add more loggers

This commit is contained in:
doubaniux 2020-08-28 22:22:07 +08:00
parent f8bc3023e9
commit fcf2800b86
3 changed files with 155 additions and 11 deletions

View file

@ -1,10 +1,10 @@
from django import forms
from common.forms import KeyValueInput
from django.contrib.postgres.forms import SimpleArrayField
from django.utils.translation import gettext_lazy as _
from .models import Book, BookMark, BookReview
from common.models import MarkStatusEnum
from common.forms import RadioBooleanField, RatingValidator, TagField, TagInput
from common.forms import KeyValueInput
from common.forms import PreviewImageInput
@ -84,6 +84,7 @@ class BookMarkForm(forms.ModelForm):
(False, _("公开")),
]
STATUS_CHOICES = [(v, BookMarkStatusTranslator(v)) for v in MarkStatusEnum.values]
id = forms.IntegerField(required=False, widget=forms.HiddenInput())
share_to_mastodon = forms.BooleanField(label=_("分享到长毛象"), initial=True, required=False)
rating = forms.IntegerField(validators=[RatingValidator()], widget=forms.HiddenInput(), required=False)
@ -102,6 +103,18 @@ class BookMarkForm(forms.ModelForm):
widget=TagInput(attrs={'placeholder': _("回车增加标签")}),
label = _("标签")
)
text = forms.CharField(
required=False,
widget=forms.Textarea(
attrs={
"placeholder": _("最多只能写360字哦~"),
"maxlength": 360
}
),
label = _("短评"),
)
class Meta:
model = BookMark
fields = [
@ -114,11 +127,9 @@ class BookMarkForm(forms.ModelForm):
]
labels = {
'rating': _("评分"),
'text': _("短评"),
}
widgets = {
'book': forms.TextInput(attrs={"hidden": ""}),
'text': forms.Textarea(attrs={"placeholder": _("最多只能写500字哦~")}),
}

View file

@ -20,7 +20,7 @@ from .forms import BookMarkStatusTranslator
from boofilsic.settings import MASTODON_TAGS
logger = logging.getLogger(__name__)
mastodon_logger = logging.getLogger("django.mastodon")
@ -197,6 +197,7 @@ def retrieve(request, id):
)
else:
return HttpResponseBadRequest()
logger.warning('non-GET method at /book/<id>')
@login_required
@ -270,7 +271,8 @@ def create_update_mark(request):
mark=form.instance
)
except IntegrityError as e:
return HttpResponseServerError()
return HttpResponseServerError("integrity error")
logger.error(e.__str__())
if form.cleaned_data['share_to_mastodon']:
if form.cleaned_data['is_private']:
@ -283,13 +285,14 @@ def create_update_mark(request):
f"{book.title}" + \
rating_to_emoji(form.cleaned_data['rating'])
tags = MASTODON_TAGS % {'category': '', 'type': '标记'}
# tags = MASTODON_TAGS % {'category': '书', 'type': '标记'}
tags = ''
content = words + '\n' + url + '\n' + \
form.cleaned_data['text'] + '\n' + tags
response = post_toot(content, visibility, request.session['oauth_token'])
if response.status_code != 200:
mastodon_logger.error(f"CODE:{response.status_code} {response.text}")
return HttpResponseServerError("publishing mastodon status failed")
mastodon_logger.error(response.text)
else:
return HttpResponseBadRequest("invalid form data")
@ -370,13 +373,15 @@ def create_review(request, book_id):
url = "https://" + request.get_host() + reverse("books:retrieve_review",
args=[form.instance.id])
words = "发布了关于" + f"{form.instance.book.title}" + "的评论"
tags = MASTODON_TAGS % {'category': '', 'type': '评论'}
# tags = MASTODON_TAGS % {'category': '书', 'type': '评论'}
tags = ''
content = words + '\n' + url + \
'\n' + form.cleaned_data['title'] + '\n' + tags
response = post_toot(content, visibility, request.session['oauth_token'])
if response.status_code != 200:
mastodon_logger.error(
f"CODE:{response.status_code} {response.text}")
return HttpResponseServerError("publishing mastodon status failed")
mastodon_logger.error(response.text)
return redirect(reverse("books:retrieve_review", args=[form.instance.id]))
else:
return HttpResponseBadRequest()
@ -421,13 +426,14 @@ def update_review(request, id):
url = "https://" + request.get_host() + reverse("books:retrieve_review",
args=[form.instance.id])
words = "发布了关于" + f"{form.instance.book.title}" + "的评论"
tags = MASTODON_TAGS % {'category': '', 'type': '评论'}
# tags = MASTODON_TAGS % {'category': '书', 'type': '评论'}
tags = ''
content = words + '\n' + url + \
'\n' + form.cleaned_data['title'] + '\n' + tags
response = post_toot(content, visibility, request.session['oauth_token'])
if response.status_code != 200:
mastodon_logger.error(f"CODE:{response.status_code} {response.text}")
return HttpResponseServerError("publishing mastodon status failed")
mastodon_logger.error(response.text)
return redirect(reverse("books:retrieve_review", args=[form.instance.id]))
else:
return HttpResponseBadRequest()

127
log
View file

@ -0,0 +1,127 @@
[ERROR] 2020-08-28 21:50:15,820 django.request log Internal Server Error: /books/mark/
[ERROR] 2020-08-28 21:50:15,822 django.server basehttp "POST /books/mark/ HTTP/1.1" 500 33
[INFO] 2020-08-28 21:52:27,064 django.server basehttp "GET /books/48/ HTTP/1.1" 200 23125
[INFO] 2020-08-28 21:52:27,157 django.server basehttp "GET /static/lib/css/rating-star.css HTTP/1.1" 200 591
[INFO] 2020-08-28 21:52:27,159 django.server basehttp "GET /static/css/boofilsic.css HTTP/1.1" 200 40956
[INFO] 2020-08-28 21:52:27,187 django.server basehttp "GET /static/js/detail.js HTTP/1.1" 200 4350
[INFO] 2020-08-28 21:52:27,188 django.server basehttp "GET /static/lib/js/rating-star.js HTTP/1.1" 200 11577
[INFO] 2020-08-28 21:52:27,208 django.server basehttp "GET /static/lib/css/tag-input.css HTTP/1.1" 200 1198
[INFO] 2020-08-28 21:52:27,223 django.server basehttp "GET /static/lib/js/tag-input.js HTTP/1.1" 200 5193
[INFO] 2020-08-28 21:52:27,236 django.server basehttp "GET /static/img/logo.svg HTTP/1.1" 200 3051
[WARNING] 2020-08-28 21:52:27,260 django.request log Not Found: /media/book/default.svg
[WARNING] 2020-08-28 21:52:27,261 django.server basehttp "GET /media/book/default.svg HTTP/1.1" 404 2967
[INFO] 2020-08-28 21:52:27,456 django.server basehttp "GET /search/?page=2&q= HTTP/1.1" 200 19741
[INFO] 2020-08-28 21:52:27,527 django.server basehttp "GET /static/lib/css/rating-star.css HTTP/1.1" 200 591
[INFO] 2020-08-28 21:52:27,529 django.server basehttp "GET /static/css/boofilsic.css HTTP/1.1" 200 40956
[INFO] 2020-08-28 21:52:27,556 django.server basehttp "GET /static/js/rating-star-readonly.js HTTP/1.1" 200 325
[INFO] 2020-08-28 21:52:27,558 django.server basehttp "GET /static/lib/js/rating-star.js HTTP/1.1" 200 11577
[INFO] 2020-08-28 21:52:27,576 django.server basehttp "GET /static/img/logo.svg HTTP/1.1" 200 3051
[WARNING] 2020-08-28 21:52:27,597 django.request log Not Found: /media/book/default.svg
[WARNING] 2020-08-28 21:52:27,598 django.server basehttp "GET /media/book/default.svg HTTP/1.1" 404 2967
[WARNING] 2020-08-28 21:52:27,622 django.request log Not Found: /media/book/2020/05/154fedf015-edc3-4079-8552-43775f276470.jpg
[WARNING] 2020-08-28 21:52:27,631 django.server basehttp "GET /media/book/2020/05/154fedf015-edc3-4079-8552-43775f276470.jpg HTTP/1.1" 404 3084
[WARNING] 2020-08-28 21:52:27,643 django.request log Not Found: /media/book/default.svg
[WARNING] 2020-08-28 21:52:27,649 django.server basehttp "GET /media/book/default.svg HTTP/1.1" 404 2967
[WARNING] 2020-08-28 21:52:27,659 django.request log Not Found: /media/book/2020/05/15a543b2c6-3a8f-4248-bdf8-f673b771a3f4.jpg
[WARNING] 2020-08-28 21:52:27,660 django.server basehttp "GET /media/book/2020/05/15a543b2c6-3a8f-4248-bdf8-f673b771a3f4.jpg HTTP/1.1" 404 3084
[INFO] 2020-08-28 21:52:31,695 django.server basehttp "GET /books/48/ HTTP/1.1" 200 23125
[INFO] 2020-08-28 21:52:31,767 django.server basehttp "GET /static/lib/js/rating-star.js HTTP/1.1" 200 11577
[INFO] 2020-08-28 21:52:31,769 django.server basehttp "GET /static/css/boofilsic.css HTTP/1.1" 200 40956
[INFO] 2020-08-28 21:52:31,784 django.server basehttp "GET /static/lib/css/rating-star.css HTTP/1.1" 200 591
[WARNING] 2020-08-28 21:52:31,850 django.request log Not Found: /media/book/default.svg
[INFO] 2020-08-28 21:52:31,852 django.server basehttp "GET /static/js/detail.js HTTP/1.1" 200 4350
[WARNING] 2020-08-28 21:52:31,854 django.server basehttp "GET /media/book/default.svg HTTP/1.1" 404 2967
[INFO] 2020-08-28 21:52:31,867 django.server basehttp "GET /static/lib/css/tag-input.css HTTP/1.1" 200 1198
[INFO] 2020-08-28 21:52:31,878 django.server basehttp "GET /static/lib/js/tag-input.js HTTP/1.1" 200 5193
[INFO] 2020-08-28 21:52:31,890 django.server basehttp "GET /static/img/logo.svg HTTP/1.1" 200 3051
[WARNING] 2020-08-28 21:52:31,912 django.request log Not Found: /media/book/default.svg
[WARNING] 2020-08-28 21:52:31,913 django.server basehttp "GET /media/book/default.svg HTTP/1.1" 404 2967
[ERROR] 2020-08-28 21:52:36,532 django.request log Internal Server Error: /books/mark/
Traceback (most recent call last):
File "E:\venvs\boofilsic\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
response = get_response(request)
File "E:\venvs\boofilsic\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "E:\venvs\boofilsic\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "E:\Workspace\boofilsic\common\mastodon\decorators.py", line 13, in wrapper
return func(*args, **kwargs)
File "E:\venvs\boofilsic\lib\site-packages\django\contrib\auth\decorators.py", line 21, in _wrapped_view
return view_func(request, *args, **kwargs)
File "E:\Workspace\boofilsic\books\views.py", line 293, in create_update_mark
mastodon_logger.error(response.status_code + '|' + response.text)
TypeError: unsupported operand type(s) for +: 'int' and 'str'
[ERROR] 2020-08-28 21:52:36,536 django.server basehttp "POST /books/mark/ HTTP/1.1" 500 89092
[WARNING] 2020-08-28 21:52:36,672 django.request log Not Found: /media/book/default.svg
[WARNING] 2020-08-28 21:52:36,674 django.server basehttp "GET /media/book/default.svg HTTP/1.1" 404 2967
[ERROR] 2020-08-28 21:53:04,573 django.mastodon views 422|{"error":"验证失败: Text超过了 500 字的限制"}
[ERROR] 2020-08-28 21:53:04,576 django.request log Internal Server Error: /books/mark/
[ERROR] 2020-08-28 21:53:04,579 django.server basehttp "POST /books/mark/ HTTP/1.1" 500 33
[WARNING] 2020-08-28 21:53:04,716 django.request log Not Found: /media/book/default.svg
[WARNING] 2020-08-28 21:53:04,717 django.server basehttp "GET /media/book/default.svg HTTP/1.1" 404 2967
[INFO] 2020-08-28 21:54:50,966 django.server basehttp "GET /books/48/ HTTP/1.1" 200 23125
[INFO] 2020-08-28 21:54:51,049 django.server basehttp "GET /static/css/boofilsic.css HTTP/1.1" 200 40956
[INFO] 2020-08-28 21:54:51,058 django.server basehttp "GET /static/lib/css/rating-star.css HTTP/1.1" 200 591
[INFO] 2020-08-28 21:54:51,074 django.server basehttp "GET /static/lib/js/rating-star.js HTTP/1.1" 200 11577
[INFO] 2020-08-28 21:54:51,083 django.server basehttp "GET /static/js/detail.js HTTP/1.1" 200 4350
[INFO] 2020-08-28 21:54:51,097 django.server basehttp "GET /static/lib/css/tag-input.css HTTP/1.1" 200 1198
[WARNING] 2020-08-28 21:54:51,118 django.request log Not Found: /media/book/default.svg
[WARNING] 2020-08-28 21:54:51,119 django.server basehttp "GET /media/book/default.svg HTTP/1.1" 404 2967
[INFO] 2020-08-28 21:54:51,127 django.server basehttp "GET /static/lib/js/tag-input.js HTTP/1.1" 200 5193
[INFO] 2020-08-28 21:54:51,138 django.server basehttp "GET /static/img/logo.svg HTTP/1.1" 200 3051
[WARNING] 2020-08-28 21:54:51,162 django.request log Not Found: /media/book/default.svg
[WARNING] 2020-08-28 21:54:51,163 django.server basehttp "GET /media/book/default.svg HTTP/1.1" 404 2967
[ERROR] 2020-08-28 21:54:59,328 django.mastodon views 422|{"error":"验证失败: Text超过了 500 字的限制"}
[ERROR] 2020-08-28 21:54:59,328 django.request log Internal Server Error: /books/mark/
[ERROR] 2020-08-28 21:54:59,329 django.server basehttp "POST /books/mark/ HTTP/1.1" 500 33
[INFO] 2020-08-28 21:55:04,092 django.server basehttp "GET /books/48/ HTTP/1.1" 200 23116
[INFO] 2020-08-28 21:55:04,167 django.server basehttp "GET /static/lib/js/rating-star.js HTTP/1.1" 200 11577
[INFO] 2020-08-28 21:55:04,177 django.server basehttp "GET /static/css/boofilsic.css HTTP/1.1" 200 40956
[INFO] 2020-08-28 21:55:04,187 django.server basehttp "GET /static/lib/css/rating-star.css HTTP/1.1" 200 591
[INFO] 2020-08-28 21:55:04,197 django.server basehttp "GET /static/js/detail.js HTTP/1.1" 200 4350
[INFO] 2020-08-28 21:55:04,211 django.server basehttp "GET /static/lib/css/tag-input.css HTTP/1.1" 200 1198
[INFO] 2020-08-28 21:55:04,224 django.server basehttp "GET /static/lib/js/tag-input.js HTTP/1.1" 200 5193
[INFO] 2020-08-28 21:55:04,239 django.server basehttp "GET /static/img/logo.svg HTTP/1.1" 200 3051
[WARNING] 2020-08-28 21:55:04,265 django.request log Not Found: /media/book/default.svg
[WARNING] 2020-08-28 21:55:04,266 django.server basehttp "GET /media/book/default.svg HTTP/1.1" 404 2967
[INFO] 2020-08-28 22:09:13,443 django.server basehttp "GET /books/48/ HTTP/1.1" 200 23116
[INFO] 2020-08-28 22:09:13,574 django.server basehttp "GET /static/lib/css/rating-star.css HTTP/1.1" 200 591
[INFO] 2020-08-28 22:09:13,575 django.server basehttp "GET /static/css/boofilsic.css HTTP/1.1" 200 40956
[INFO] 2020-08-28 22:09:13,588 django.server basehttp "GET /static/js/detail.js HTTP/1.1" 200 4350
[INFO] 2020-08-28 22:09:13,589 django.server basehttp "GET /static/lib/js/rating-star.js HTTP/1.1" 200 11577
[INFO] 2020-08-28 22:09:13,602 django.server basehttp "GET /static/lib/css/tag-input.css HTTP/1.1" 200 1198
[INFO] 2020-08-28 22:09:13,620 django.server basehttp "GET /static/lib/js/tag-input.js HTTP/1.1" 200 5193
[INFO] 2020-08-28 22:09:13,623 django.server basehttp "GET /static/img/logo.svg HTTP/1.1" 200 3051
[WARNING] 2020-08-28 22:09:13,658 django.request log Not Found: /media/book/default.svg
[WARNING] 2020-08-28 22:09:13,660 django.server basehttp "GET /media/book/default.svg HTTP/1.1" 404 2967
[INFO] 2020-08-28 22:09:45,386 django.server basehttp "GET /books/48/ HTTP/1.1" 200 23116
[INFO] 2020-08-28 22:09:45,456 django.server basehttp "GET /static/lib/css/rating-star.css HTTP/1.1" 200 591
[INFO] 2020-08-28 22:09:45,458 django.server basehttp "GET /static/css/boofilsic.css HTTP/1.1" 200 40956
[INFO] 2020-08-28 22:09:45,476 django.server basehttp "GET /static/lib/js/rating-star.js HTTP/1.1" 200 11577
[INFO] 2020-08-28 22:09:45,477 django.server basehttp "GET /static/js/detail.js HTTP/1.1" 200 4350
[INFO] 2020-08-28 22:09:45,507 django.server basehttp "GET /static/lib/css/tag-input.css HTTP/1.1" 200 1198
[INFO] 2020-08-28 22:09:45,524 django.server basehttp "GET /static/lib/js/tag-input.js HTTP/1.1" 200 5193
[INFO] 2020-08-28 22:09:45,540 django.server basehttp "GET /static/img/logo.svg HTTP/1.1" 200 3051
[WARNING] 2020-08-28 22:09:45,562 django.request log Not Found: /media/book/default.svg
[WARNING] 2020-08-28 22:09:45,563 django.server basehttp "GET /media/book/default.svg HTTP/1.1" 404 2967
[INFO] 2020-08-28 22:09:59,284 django.server basehttp "POST /books/mark/ HTTP/1.1" 302 0
[INFO] 2020-08-28 22:10:03,692 django.server basehttp "GET /books/48/ HTTP/1.1" 200 20641
[INFO] 2020-08-28 22:10:03,760 django.server basehttp "GET /static/lib/js/rating-star.js HTTP/1.1" 200 11577
[INFO] 2020-08-28 22:10:03,760 django.server basehttp "GET /static/js/detail.js HTTP/1.1" 200 4350
[INFO] 2020-08-28 22:10:03,776 django.server basehttp "GET /static/lib/css/rating-star.css HTTP/1.1" 200 591
[INFO] 2020-08-28 22:10:03,778 django.server basehttp "GET /static/css/boofilsic.css HTTP/1.1" 200 40956
[INFO] 2020-08-28 22:10:03,807 django.server basehttp "GET /static/lib/css/tag-input.css HTTP/1.1" 200 1198
[INFO] 2020-08-28 22:10:03,865 django.server basehttp "GET /static/lib/js/tag-input.js HTTP/1.1" 200 5193
[INFO] 2020-08-28 22:10:03,879 django.server basehttp "GET /static/img/logo.svg HTTP/1.1" 200 3051
[WARNING] 2020-08-28 22:10:03,898 django.request log Not Found: /media/book/default.svg
[WARNING] 2020-08-28 22:10:03,899 django.server basehttp "GET /media/book/default.svg HTTP/1.1" 404 2967
[INFO] 2020-08-28 22:20:39,951 django.server basehttp "GET /books/48/ HTTP/1.1" 200 20641
[INFO] 2020-08-28 22:20:40,022 django.server basehttp "GET /static/lib/css/rating-star.css HTTP/1.1" 200 591
[INFO] 2020-08-28 22:20:40,024 django.server basehttp "GET /static/css/boofilsic.css HTTP/1.1" 200 40956
[INFO] 2020-08-28 22:20:40,039 django.server basehttp "GET /static/lib/js/rating-star.js HTTP/1.1" 200 11577
[INFO] 2020-08-28 22:20:40,040 django.server basehttp "GET /static/js/detail.js HTTP/1.1" 200 4350
[INFO] 2020-08-28 22:20:40,085 django.server basehttp "GET /static/lib/css/tag-input.css HTTP/1.1" 200 1198
[INFO] 2020-08-28 22:20:40,100 django.server basehttp "GET /static/lib/js/tag-input.js HTTP/1.1" 200 5193
[INFO] 2020-08-28 22:20:40,112 django.server basehttp "GET /static/img/logo.svg HTTP/1.1" 200 3051
[WARNING] 2020-08-28 22:20:40,132 django.request log Not Found: /media/book/default.svg
[WARNING] 2020-08-28 22:20:40,132 django.server basehttp "GET /media/book/default.svg HTTP/1.1" 404 2967