Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

prefilters: fix crash due to class being a string not list #173

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

ahayzen-kdab
Copy link

Some tags can be either a str or a list which can cause a crash in the existing filters.
https://beautiful-soup-4.readthedocs.io/en/latest/index.html?highlight=find_all#multi-valued-attributes

Traceback (most recent call last):
File "/var/home/andrew/Projects/web/wagtail-example/mysite/manage.py", line 10, in
execute_from_command_line(sys.argv)
File "/var/home/andrew/Projects/web/wagtail-example/mysite/env/lib/python3.10/site-packages/django/core/management/init.py", line 442, in execute_from_command_line
utility.execute()
File "/var/home/andrew/Projects/web/wagtail-example/mysite/env/lib/python3.10/site-packages/django/core/management/init.py", line 436, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/var/home/andrew/Projects/web/wagtail-example/mysite/env/lib/python3.10/site-packages/django/core/management/base.py", line 412, in run_from_argv
self.execute(*args, **cmd_options)
File "/var/home/andrew/Projects/web/wagtail-example/mysite/env/lib/python3.10/site-packages/django/core/management/base.py", line 458, in execute
output = self.handle(*args, **options)
File "/var/home/andrew/Projects/web/wagtail-example/mysite/env/lib/python3.10/site-packages/wagtail_wordpress_import/management/commands/import_xml.py", line 71, in handle
importer.run(
File "/var/home/andrew/Projects/web/wagtail-example/mysite/env/lib/python3.10/site-packages/wagtail_wordpress_import/importers/wordpress.py", line 125, in run
wp_post_id=wordpress_item.cleaned_data.get("wp_post_id")
File "/usr/lib/python3.10/functools.py", line 981, in get
val = self.func(instance)
File "/var/home/andrew/Projects/web/wagtail-example/mysite/env/lib/python3.10/site-packages/wagtail_wordpress_import/importers/wordpress.py", line 530, in cleaned_data
"body": self.body_stream_field(self.prefilter_content(self.raw_body)),
File "/var/home/andrew/Projects/web/wagtail-example/mysite/env/lib/python3.10/site-packages/wagtail_wordpress_import/importers/wordpress.py", line 373, in prefilter_content
cached_result = function(cached_result, filter.get("OPTIONS"))
File "/var/home/andrew/Projects/web/wagtail-example/mysite/env/lib/python3.10/site-packages/wagtail_wordpress_import/prefilters/transform_styles_filter.py", line 104, in filter_transform_inline_styles
filter_transform_styles(
File "/var/home/andrew/Projects/web/wagtail-example/mysite/env/lib/python3.10/site-packages/wagtail_wordpress_import/prefilters/transform_styles_filter.py", line 123, in filter_transform_styles
filter_method(soup, tag)
File "/var/home/andrew/Projects/web/wagtail-example/mysite/env/lib/python3.10/site-packages/wagtail_wordpress_import/prefilters/transform_styles_defaults.py", line 68, in transform_float_left
tag.attrs["class"].append("float-left")
AttributeError: 'str' object has no attribute 'append'

(Description)

Ticket URL:


Testing

  • CI passes
  • If necessary, tests are added for new or fixed behaviour
  • These changes do not reduce test coverage

Documentation.

  • This PR adds or updates documentation
  • Documentation changes are not necessary because:

Some tags can be either a str or a list which can cause
a crash in the existing filters.
https://beautiful-soup-4.readthedocs.io/en/latest/index.html?highlight=find_all#multi-valued-attributes

Traceback (most recent call last):
  File "/var/home/andrew/Projects/web/wagtail-example/mysite/manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/var/home/andrew/Projects/web/wagtail-example/mysite/env/lib/python3.10/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line
    utility.execute()
  File "/var/home/andrew/Projects/web/wagtail-example/mysite/env/lib/python3.10/site-packages/django/core/management/__init__.py", line 436, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/var/home/andrew/Projects/web/wagtail-example/mysite/env/lib/python3.10/site-packages/django/core/management/base.py", line 412, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/var/home/andrew/Projects/web/wagtail-example/mysite/env/lib/python3.10/site-packages/django/core/management/base.py", line 458, in execute
    output = self.handle(*args, **options)
  File "/var/home/andrew/Projects/web/wagtail-example/mysite/env/lib/python3.10/site-packages/wagtail_wordpress_import/management/commands/import_xml.py", line 71, in handle
    importer.run(
  File "/var/home/andrew/Projects/web/wagtail-example/mysite/env/lib/python3.10/site-packages/wagtail_wordpress_import/importers/wordpress.py", line 125, in run
    wp_post_id=wordpress_item.cleaned_data.get("wp_post_id")
  File "/usr/lib/python3.10/functools.py", line 981, in __get__
    val = self.func(instance)
  File "/var/home/andrew/Projects/web/wagtail-example/mysite/env/lib/python3.10/site-packages/wagtail_wordpress_import/importers/wordpress.py", line 530, in cleaned_data
    "body": self.body_stream_field(self.prefilter_content(self.raw_body)),
  File "/var/home/andrew/Projects/web/wagtail-example/mysite/env/lib/python3.10/site-packages/wagtail_wordpress_import/importers/wordpress.py", line 373, in prefilter_content
    cached_result = function(cached_result, filter.get("OPTIONS"))
  File "/var/home/andrew/Projects/web/wagtail-example/mysite/env/lib/python3.10/site-packages/wagtail_wordpress_import/prefilters/transform_styles_filter.py", line 104, in filter_transform_inline_styles
    filter_transform_styles(
  File "/var/home/andrew/Projects/web/wagtail-example/mysite/env/lib/python3.10/site-packages/wagtail_wordpress_import/prefilters/transform_styles_filter.py", line 123, in filter_transform_styles
    filter_method(soup, tag)
  File "/var/home/andrew/Projects/web/wagtail-example/mysite/env/lib/python3.10/site-packages/wagtail_wordpress_import/prefilters/transform_styles_defaults.py", line 68, in transform_float_left
    tag.attrs["class"].append("float-left")
AttributeError: 'str' object has no attribute 'append'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant