You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Trying to move my instance of wiki with existed database from 0.5 version to 0.7 I faced a problem when some of articles don't render. Poking around with article's content I found out that the certain sequence of markdown tags breaks down the web app causing internal server error (500).
Looking at logs and release notes I found out that there is a new plugin came out called "editsection". Traceback of crashed app leads to the same plugin. Then I tried to reproduce an error turning on and off that plugin by editing INSTALLED_APPS. That is how I came to this test scenario.
$ python --version
3.6.9
$ python ../bin/django-admin.py --version
3.1.5
$ uname -a
Linux laptop 5.4.0-58-generic #64~18.04.1-Ubuntu SMP Wed Dec 9 17:00:52 UTC 2020 i686 i686 i686 GNU/Linux
Do not return 5xx status code, if an engine cannot parse markup language or thinks that it is an incorrect markup language then it should displays user's input as is after sanitizing it, of course.
Error log
=================================================================FAILURES=================================================================____________________________________________________CreateViewTest.test_create_article____________________________________________________self=<tests.core.test_create_broken_article.CreateViewTesttestMethod=test_create_article>deftest_create_article(self):
response=self.client.post(
resolve_url("wiki:create", path=""),
{"title": "How to break Veiw by typo", "slug": "break", "content": TEST_CONTENT},
)
>self.assertRedirects(response, resolve_url("wiki:get", path="break/"))
tests/core/test_create_broken_article.py:19:
______________________________________________________________________
../lib/python3.6/site-packages/django/test/testcases.py:389: inassertRedirects**extra,
../lib/python3.6/site-packages/django/test/client.py:739: ingetresponse=super().get(path, data=data, secure=secure, **extra)
../lib/python3.6/site-packages/django/test/client.py:395: inget**extra,
../lib/python3.6/site-packages/django/test/client.py:470: ingenericreturnself.request(**r)
../lib/python3.6/site-packages/django/test/client.py:716: inrequestself.check_exception(response)
../lib/python3.6/site-packages/django/test/client.py:577: incheck_exceptionraiseexc_value
../lib/python3.6/site-packages/django/core/handlers/exception.py:47: ininnerresponse=get_response(request)
../lib/python3.6/site-packages/django/core/handlers/base.py:204: in_get_responseresponse=response.render()
../lib/python3.6/site-packages/django/template/response.py:105: inrenderself.content=self.rendered_content
../lib/python3.6/site-packages/django/template/response.py:83: inrendered_contentreturntemplate.render(context, self._request)
../lib/python3.6/site-packages/django/template/backends/django.py:61: inrenderreturnself.template.render(context)
../lib/python3.6/site-packages/django/template/base.py:170: inrenderreturnself._render(context)
../lib/python3.6/site-packages/django/test/utils.py:96: ininstrumented_test_renderreturnself.nodelist.render(context)
../lib/python3.6/site-packages/django/template/base.py:938: inrenderbit=node.render_annotated(context)
../lib/python3.6/site-packages/django/template/base.py:905: inrender_annotatedreturnself.render(context)
../lib/python3.6/site-packages/django/template/loader_tags.py:150: inrenderreturncompiled_parent._render(context)
../lib/python3.6/site-packages/django/test/utils.py:96: ininstrumented_test_renderreturnself.nodelist.render(context)
../lib/python3.6/site-packages/django/template/base.py:938: inrenderbit=node.render_annotated(context)
../lib/python3.6/site-packages/django/template/base.py:905: inrender_annotatedreturnself.render(context)
../lib/python3.6/site-packages/django/template/loader_tags.py:150: inrenderreturncompiled_parent._render(context)
../lib/python3.6/site-packages/django/test/utils.py:96: ininstrumented_test_renderreturnself.nodelist.render(context)
../lib/python3.6/site-packages/django/template/base.py:938: inrenderbit=node.render_annotated(context)
../lib/python3.6/site-packages/django/template/base.py:905: inrender_annotatedreturnself.render(context)
../lib/python3.6/site-packages/django/template/loader_tags.py:150: inrenderreturncompiled_parent._render(context)
../lib/python3.6/site-packages/django/test/utils.py:96: ininstrumented_test_renderreturnself.nodelist.render(context)
../lib/python3.6/site-packages/django/template/base.py:938: inrenderbit=node.render_annotated(context)
../lib/python3.6/site-packages/django/template/base.py:905: inrender_annotatedreturnself.render(context)
../lib/python3.6/site-packages/classytags/core.py:151: inrenderreturnself.render_tag(context, **kwargs)
../lib/python3.6/site-packages/sekizai/templatetags/sekizai_tags.py:87: inrender_tagrendered_contents=nodelist.render(context)
../lib/python3.6/site-packages/django/template/base.py:938: inrenderbit=node.render_annotated(context)
../lib/python3.6/site-packages/django/template/base.py:905: inrender_annotatedreturnself.render(context)
../lib/python3.6/site-packages/django/template/loader_tags.py:62: inrenderresult=block.nodelist.render(context)
../lib/python3.6/site-packages/django/template/base.py:938: inrenderbit=node.render_annotated(context)
../lib/python3.6/site-packages/django/template/base.py:905: inrender_annotatedreturnself.render(context)
../lib/python3.6/site-packages/django/template/loader_tags.py:62: inrenderresult=block.nodelist.render(context)
../lib/python3.6/site-packages/django/template/base.py:938: inrenderbit=node.render_annotated(context)
../lib/python3.6/site-packages/django/template/base.py:905: inrender_annotatedreturnself.render(context)
../lib/python3.6/site-packages/django/template/loader_tags.py:62: inrenderresult=block.nodelist.render(context)
../lib/python3.6/site-packages/django/template/base.py:938: inrenderbit=node.render_annotated(context)
../lib/python3.6/site-packages/django/template/base.py:905: inrender_annotatedreturnself.render(context)
../lib/python3.6/site-packages/django/template/library.py:214: inrender_dict=self.func(*resolved_args, **resolved_kwargs)
src/wiki/templatetags/wiki_tags.py:53: inwiki_rendercontent=article.get_cached_content(user=context.get("user"))
src/wiki/models/article.py:261: inget_cached_contentcached_content=self.render(user=user)
src/wiki/models/article.py:219: inrendercontent, self, preview=preview_contentisnotNone, user=usersrc/wiki/core/markdown/__init__.py:53: inarticle_markdownreturnmd.convert(text)
src/wiki/core/markdown/__init__.py:31: inconverthtml=super().convert(text, *args, **kwargs)
../lib/python3.6/site-packages/markdown/core.py:267: inconvertnewRoot=treeprocessor.run(root)
src/wiki/plugins/editsection/markdown_extensions.py:125: inrunself.add_links(root)
src/wiki/plugins/editsection/markdown_extensions.py:100: inadd_linksheader_id=get_header_id(child.text)
src/wiki/plugins/editsection/markdown_extensions.py:28: inget_header_idheader_id="".join(w[0] forwinre.findall(r"\w+", header))
______________________________________________________________________pattern='\\w+', string=None, flags=0deffindall(pattern, string, flags=0):
"""Return a list of all non-overlapping matches in the string. If one or more capturing groups are present in the pattern, return a list of groups; this will be a list of tuples if the pattern has more than one group. Empty matches are included in the result.""">return_compile(pattern, flags).findall(string)
ETypeError: expectedstringorbytes-likeobject
../lib/python3.6/re.py:222: TypeError------------------------------------------------------------Capturedlogcall-------------------------------------------------------------ERRORdjango.request:log.py:230InternalServerError: /break/Traceback (mostrecentcalllast):
File"/home/laptop/projects/django-wiki-0.7.1-dev/lib/python3.6/site-packages/django/core/handlers/exception.py", line47, ininnerresponse=get_response(request)
File"/home/laptop/projects/django-wiki-0.7.1-dev/lib/python3.6/site-packages/django/core/handlers/base.py", line204, in_get_responseresponse=response.render()
File"/home/laptop/projects/django-wiki-0.7.1-dev/lib/python3.6/site-packages/django/template/response.py", line105, inrenderself.content=self.rendered_contentFile"/home/laptop/projects/django-wiki-0.7.1-dev/lib/python3.6/site-packages/django/template/response.py", line83, inrendered_contentreturntemplate.render(context, self._request)
File"/home/laptop/projects/django-wiki-0.7.1-dev/lib/python3.6/site-packages/django/template/backends/django.py", line61, inrenderreturnself.template.render(context)
File"/home/laptop/projects/django-wiki-0.7.1-dev/lib/python3.6/site-packages/django/template/base.py", line170, inrenderreturnself._render(context)
File"/home/laptop/projects/django-wiki-0.7.1-dev/lib/python3.6/site-packages/django/test/utils.py", line96, ininstrumented_test_renderreturnself.nodelist.render(context)
File"/home/laptop/projects/django-wiki-0.7.1-dev/lib/python3.6/site-packages/django/template/base.py", line938, inrenderbit=node.render_annotated(context)
File"/home/laptop/projects/django-wiki-0.7.1-dev/lib/python3.6/site-packages/django/template/base.py", line905, inrender_annotatedreturnself.render(context)
File"/home/laptop/projects/django-wiki-0.7.1-dev/lib/python3.6/site-packages/django/template/loader_tags.py", line150, inrenderreturncompiled_parent._render(context)
File"/home/laptop/projects/django-wiki-0.7.1-dev/lib/python3.6/site-packages/django/test/utils.py", line96, ininstrumented_test_renderreturnself.nodelist.render(context)
File"/home/laptop/projects/django-wiki-0.7.1-dev/lib/python3.6/site-packages/django/template/base.py", line938, inrenderbit=node.render_annotated(context)
File"/home/laptop/projects/django-wiki-0.7.1-dev/lib/python3.6/site-packages/django/template/base.py", line905, inrender_annotatedreturnself.render(context)
File"/home/laptop/projects/django-wiki-0.7.1-dev/lib/python3.6/site-packages/django/template/loader_tags.py", line150, inrenderreturncompiled_parent._render(context)
File"/home/laptop/projects/django-wiki-0.7.1-dev/lib/python3.6/site-packages/django/test/utils.py", line96, ininstrumented_test_renderreturnself.nodelist.render(context)
File"/home/laptop/projects/django-wiki-0.7.1-dev/lib/python3.6/site-packages/django/template/base.py", line938, inrenderbit=node.render_annotated(context)
File"/home/laptop/projects/django-wiki-0.7.1-dev/lib/python3.6/site-packages/django/template/base.py", line905, inrender_annotatedreturnself.render(context)
File"/home/laptop/projects/django-wiki-0.7.1-dev/lib/python3.6/site-packages/django/template/loader_tags.py", line150, inrenderreturncompiled_parent._render(context)
File"/home/laptop/projects/django-wiki-0.7.1-dev/lib/python3.6/site-packages/django/test/utils.py", line96, ininstrumented_test_renderreturnself.nodelist.render(context)
File"/home/laptop/projects/django-wiki-0.7.1-dev/lib/python3.6/site-packages/django/template/base.py", line938, inrenderbit=node.render_annotated(context)
File"/home/laptop/projects/django-wiki-0.7.1-dev/lib/python3.6/site-packages/django/template/base.py", line905, inrender_annotatedreturnself.render(context)
File"/home/laptop/projects/django-wiki-0.7.1-dev/lib/python3.6/site-packages/classytags/core.py", line151, inrenderreturnself.render_tag(context, **kwargs)
File"/home/laptop/projects/django-wiki-0.7.1-dev/lib/python3.6/site-packages/sekizai/templatetags/sekizai_tags.py", line87, inrender_tagrendered_contents=nodelist.render(context)
File"/home/laptop/projects/django-wiki-0.7.1-dev/lib/python3.6/site-packages/django/template/base.py", line938, inrenderbit=node.render_annotated(context)
File"/home/laptop/projects/django-wiki-0.7.1-dev/lib/python3.6/site-packages/django/template/base.py", line905, inrender_annotatedreturnself.render(context)
File"/home/laptop/projects/django-wiki-0.7.1-dev/lib/python3.6/site-packages/django/template/loader_tags.py", line62, inrenderresult=block.nodelist.render(context)
File"/home/laptop/projects/django-wiki-0.7.1-dev/lib/python3.6/site-packages/django/template/base.py", line938, inrenderbit=node.render_annotated(context)
File"/home/laptop/projects/django-wiki-0.7.1-dev/lib/python3.6/site-packages/django/template/base.py", line905, inrender_annotatedreturnself.render(context)
File"/home/laptop/projects/django-wiki-0.7.1-dev/lib/python3.6/site-packages/django/template/loader_tags.py", line62, inrenderresult=block.nodelist.render(context)
File"/home/laptop/projects/django-wiki-0.7.1-dev/lib/python3.6/site-packages/django/template/base.py", line938, inrenderbit=node.render_annotated(context)
File"/home/laptop/projects/django-wiki-0.7.1-dev/lib/python3.6/site-packages/django/template/base.py", line905, inrender_annotatedreturnself.render(context)
File"/home/laptop/projects/django-wiki-0.7.1-dev/lib/python3.6/site-packages/django/template/loader_tags.py", line62, inrenderresult=block.nodelist.render(context)
File"/home/laptop/projects/django-wiki-0.7.1-dev/lib/python3.6/site-packages/django/template/base.py", line938, inrenderbit=node.render_annotated(context)
File"/home/laptop/projects/django-wiki-0.7.1-dev/lib/python3.6/site-packages/django/template/base.py", line905, inrender_annotatedreturnself.render(context)
File"/home/laptop/projects/django-wiki-0.7.1-dev/lib/python3.6/site-packages/django/template/library.py", line214, inrender_dict=self.func(*resolved_args, **resolved_kwargs)
File"/home/laptop/projects/django-wiki-0.7.1-dev/django-wiki/src/wiki/templatetags/wiki_tags.py", line53, inwiki_rendercontent=article.get_cached_content(user=context.get("user"))
File"/home/laptop/projects/django-wiki-0.7.1-dev/django-wiki/src/wiki/models/article.py", line261, inget_cached_contentcached_content=self.render(user=user)
File"/home/laptop/projects/django-wiki-0.7.1-dev/django-wiki/src/wiki/models/article.py", line219, inrendercontent, self, preview=preview_contentisnotNone, user=userFile"/home/laptop/projects/django-wiki-0.7.1-dev/django-wiki/src/wiki/core/markdown/__init__.py", line53, inarticle_markdownreturnmd.convert(text)
File"/home/laptop/projects/django-wiki-0.7.1-dev/django-wiki/src/wiki/core/markdown/__init__.py", line31, inconverthtml=super().convert(text, *args, **kwargs)
File"/home/laptop/projects/django-wiki-0.7.1-dev/lib/python3.6/site-packages/markdown/core.py", line267, inconvertnewRoot=treeprocessor.run(root)
File"/home/laptop/projects/django-wiki-0.7.1-dev/django-wiki/src/wiki/plugins/editsection/markdown_extensions.py", line125, inrunself.add_links(root)
File"/home/laptop/projects/django-wiki-0.7.1-dev/django-wiki/src/wiki/plugins/editsection/markdown_extensions.py", line100, inadd_linksheader_id=get_header_id(child.text)
File"/home/laptop/projects/django-wiki-0.7.1-dev/django-wiki/src/wiki/plugins/editsection/markdown_extensions.py", line28, inget_header_idheader_id="".join(w[0] forwinre.findall(r"\w+", header))
File"/home/laptop/projects/django-wiki-0.7.1-dev/lib/python3.6/re.py", line222, infindallreturn_compile(pattern, flags).findall(string)
TypeError: expectedstringorbytes-likeobject
The text was updated successfully, but these errors were encountered:
Trying to move my instance of wiki with existed database from 0.5 version to 0.7 I faced a problem when some of articles don't render. Poking around with article's content I found out that the certain sequence of markdown tags breaks down the web app causing internal server error (500).
Looking at logs and release notes I found out that there is a new plugin came out called "
editsection
". Traceback of crashed app leads to the same plugin. Then I tried to reproduce an error turning on and off that plugin by editingINSTALLED_APPS
. That is how I came to this test scenario.$ python --version
3.6.9
$ python ../bin/django-admin.py --version
3.1.5
$ uname -a
Linux laptop 5.4.0-58-generic #64~18.04.1-Ubuntu SMP Wed Dec 9 17:00:52 UTC 2020 i686 i686 i686 GNU/Linux
$ pip list
Package Version Location
appdirs 1.4.4
asgiref 3.3.1
attrs 20.3.0
beautifulsoup4 4.9.3
black 20.8b1
bleach 3.1.5
cfgv 3.2.0
click 7.1.2
coverage 5.3.1
cssselect 1.1.0
dataclasses 0.8
distlib 0.3.1
Django 3.1.5
django-classy-tags 2.0.0
django-functest 1.0.4
django-js-asset 1.2.2
django-mptt 0.11.0
django-nyt 1.1.6
django-sekizai 2.0.0
django-webtest 1.9.7
EasyProcess 0.3
entrypoints 0.3
filelock 3.0.12
flake8 3.7.9
furl 2.1.0
identify 1.5.11
importlib-metadata 3.3.0
importlib-resources 4.1.1
lxml 4.6.2
Markdown 3.2.2
mccabe 0.6.1
more-itertools 8.6.0
mypy-extensions 0.4.3
nodeenv 1.5.0
orderedmultidict 1.0.1
packaging 20.8
pathspec 0.8.1
Pillow 8.1.0
pip 20.3.3
pkg-resources 0.0.0
pluggy 0.13.1
pre-commit 2.9.3
py 1.10.0
pycodestyle 2.5.0
pyflakes 2.1.1
pyparsing 2.4.7
pyquery 1.4.3
pytest 5.3.5
pytest-cov 2.10.1
pytest-django 3.10.0
pytest-pythonpath 0.7.3
pytz 2020.5
PyVirtualDisplay 1.3.2
PyYAML 5.3.1
regex 2020.11.13
selenium 3.141.0
setuptools 51.1.1
six 1.15.0
sorl-thumbnail 12.7.0
soupsieve 2.1
sqlparse 0.4.1
toml 0.10.2
typed-ast 1.4.2
typing-extensions 3.7.4.3
urllib3 1.26.2
virtualenv 20.2.2
waitress 1.4.4
wcwidth 0.2.5
webencodings 0.5.1
WebOb 1.8.6
WebTest 2.0.35
wheel 0.36.2
wiki 0.7.2.dev20201229153254 /home/laptop/projects/django-wiki-0.7.1-dev/django-wiki/src
zipp 3.4.0
> Does the bug happen with a checkout of django-wiki's master branch?
Yes, with 0.7.2dev branch
> An example of how to reproduce the bug.
> The expected result.
Do not return 5xx status code, if an engine cannot parse markup language or thinks that it is an incorrect markup language then it should displays user's input as is after sanitizing it, of course.
Error log
The text was updated successfully, but these errors were encountered: