mezzanine
が 2017/03/10 に4.2.3
にversion up
したので、
当ブログのmezzanine
を 4.2.2
から4.2.3
にupdate
してみました。
実施したことを備忘として残します。1
[1] ほぼ、文書体裁が前回update時と同じ..です。
0. 前提
以下の環境で実行しています。
-
OS
CentOS release 6.7 (Final) -
Python Version
Python 2.7.8 -
Package (必要そうなものだけ抜粋)
Django (1.10.5)
Mezzanine (4.2.2)
1. UPGRADE
現状Versionの確認
UPGRADE
前のpip list
[0.]の内容とも重複しますが、UPGRADE
前の構成情報になります。
pip list
------------------------------------
beautifulsoup4 (4.5.3)
bleach (1.5.0)
chardet (2.3.0)
Django (1.10.5)
django-appconf (1.0.2)
django-braces (1.10.0)
django-compressor (2.0)
django-contrib-comments (1.7.3)
django-crontab (0.7.1)
django-filter (1.0.1)
django-grappelli (2.8.1)
django-htmlmin (0.9.1)
django-mobile (0.7.0)
django-oauth-toolkit (0.11.0)
django-request (1.5.1)
django-rest-swagger (0.3.10)
django-robots (2.0)
django-sites (0.9)
djangorestframework (3.5.3)
filebrowser-safe (0.4.6)
funcsigs (1.0.2)
future (0.16.0)
grappelli-safe (0.4.5)
html5lib (0.9999999)
importlib (1.0.3)
Markdown (2.6.7)
Mezzanine (4.2.2)
mezzanine-api (0.5.0)
mezzanine-pagedown (1.0)
mezzanine-pubsubhubbub-pub (0.0.3)
mock (2.0.0)
oauthlib (2.0.1)
olefile (0.44)
pbr (1.10.0)
Pillow (4.0.0)
pip (9.0.1)
psycopg2 (2.6.1)
Pygments (2.0.2)
python-dateutil (2.6.0)
pytz (2016.10)
PyYAML (3.12)
rcssmin (1.0.6)
requests (2.12.4)
requests-oauthlib (0.7.0)
rjsmin (1.0.12)
setuptools (32.3.1)
six (1.10.0)
tzlocal (1.3)
wheel (0.26.0)
------------------------------------
UPGRADE
pip install Mezzanine -U
------------------------------------
Successfully installed
Mezzanine-4.2.3
appdirs-1.4.3
bleach-2.0.0
django-1.10.6
django-contrib-comments-1.8.0
filebrowser-safe-0.4.7
grappelli-safe-0.4.6
html5lib-0.999999999
packaging-16.8
pyparsing-2.2.0
requests-2.13.0
requests-oauthlib-0.8.0
setuptools-34.3.2
webencodings-0.5
------------------------------------
2. check コマンドによる確認
python2.7 manage.py check
-----------------------------------
System check identified no issues (0 silenced).
-----------------------------------
特に問題なさそうなので、サーバーを再起動してみます。
3. サーバー 起動後の確認
service httpd restart
再起動後に、画面表示したところ以下のエラーが発生しました。
File "/usr/local/lib/python2.7/site-packages/django/template/base.py", line 1044, in render
output = self.filter_expression.resolve(context)
File "/usr/local/lib/python2.7/site-packages/django/template/base.py", line 739, in resolve
new_obj = func(obj, *arg_vals)
File "/usr/local/lib/python2.7/site-packages/mezzanine/core/templatetags/mezzanine_tags.py", line 473, in richtext_filters
content = filter_func(content)
File "/usr/local/lib/python2.7/site-packages/mezzanine_pagedown/filters.py", line 42, in custom
extensions=settings.PAGEDOWN_MARKDOWN_EXTENSIONS))
File "/usr/local/lib/python2.7/site-packages/mezzanine_pagedown/filters.py", line 12, in _clean
strip_comments=False, styles=styles)
File "/usr/local/lib/python2.7/site-packages/bleach/__init__.py", line 77, in clean
return cleaner.clean(text)
File "/usr/local/lib/python2.7/site-packages/bleach/sanitizer.py", line 146, in clean
allowed_svg_properties=[],
File "/usr/local/lib/python2.7/site-packages/bleach/sanitizer.py", line 228, in __init__
self.attr_filter = attribute_filter_factory(attributes)
File "/usr/local/lib/python2.7/site-packages/bleach/sanitizer.py", line 194, in attribute_filter_factory
raise ValueError('attributes needs to be a callable, a list or a dict')
プラグイン akhayyat / mezzanine-pagedown — Bitbucket のfilterの処理で、
エラーになっているようです。
bleach
というライブラリが 1.5
から 2.0
へversion が上がっているからかと思い、
情報がないか捜したところ、以下の issue
を見つけました。
以下のように、tuple
からlist
に変換する処理が実装されていたので、
if isinstance(attrs, tuple):
attrs = list(attrs)
mezzanine_pagedown/filters.py
にも似た様な処理を組み込みました。
- mezzanine_pagedown/filters.py
def _clean(html):
tags = settings.RICHTEXT_ALLOWED_TAGS
attrs = settings.RICHTEXT_ALLOWED_ATTRIBUTES
styles = settings.RICHTEXT_ALLOWED_STYLES
# -----------------------
# bleach の version が 2.0 以上で、RICHTEXT_ALLOWED_ATTRIBUTES が tuple の場合、list に変換する
# ---------------
if LooseVersion('2.0') <= LooseVersion(bleach.__version__) and isinstance(attrs, tuple):
attrs = list(attrs)
return clean(html, tags=tags, attributes=attrs, strip=True,
strip_comments=False, styles=styles)
これで、画面が表示されるようになりました。
mezzanine に限った話ではないですが、
version up 時は サードパーティのplugin は動かなくなりますね。
以上です。
コメント