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

Pillow 10.0.0 support #4137

Open
Dufran opened this issue Jul 14, 2023 · 3 comments
Open

Pillow 10.0.0 support #4137

Dufran opened this issue Jul 14, 2023 · 3 comments

Comments

@Dufran
Copy link

Dufran commented Jul 14, 2023

10.0.0 pillow not supported

Pillow 10.0.0 removed ANTIALIAS

Steps to Reproduce

  • Install django-oscar
  • Add image to item
    Any other relevant information. For example, why do you consider this a bug and what did you expect to happen instead?

Technical details

  • Python version: Run Python 3.11.0.
  • Django version: Look in your requirements.txt, or run 3.2.20.
  • Oscar version: Look in your requirements.txt, or run 3.2.
@rodrigo-pedro
Copy link

i have no idea how to work around this issue, I tried adding Pillow==9.5.0 to the requirements file but it keeps happening

@viggo-devries
Copy link
Contributor

What is the bug here? I just tried to recreate but don't see anything wrong. Can you maybe be a bit more specific about what's happening or paste the stack trace in here?

@TheBreaken
Copy link

TheBreaken commented Sep 29, 2023

I get the same error too.
Bildschirmfoto 2023-09-29 um 14 08 00

Traceback:

Environment:


Request Method: GET
Request URL: http://localhost:8000/dashboard/catalogue/

Django Version: 3.2
Python Version: 3.9.18
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.sites',
 'django.contrib.flatpages',
 'oscar.config.Shop',
 'oscar.apps.analytics.apps.AnalyticsConfig',
 'oscar.apps.checkout.apps.CheckoutConfig',
 'oscar.apps.address.apps.AddressConfig',
 'oscar.apps.shipping.apps.ShippingConfig',
 'oscar.apps.catalogue.apps.CatalogueConfig',
 'oscar.apps.catalogue.reviews.apps.CatalogueReviewsConfig',
 'oscar.apps.communication.apps.CommunicationConfig',
 'oscar.apps.partner.apps.PartnerConfig',
 'oscar.apps.basket.apps.BasketConfig',
 'oscar.apps.payment.apps.PaymentConfig',
 'oscar.apps.offer.apps.OfferConfig',
 'oscar.apps.order.apps.OrderConfig',
 'oscar.apps.customer.apps.CustomerConfig',
 'oscar.apps.search.apps.SearchConfig',
 'oscar.apps.voucher.apps.VoucherConfig',
 'oscar.apps.wishlists.apps.WishlistsConfig',
 'oscar.apps.dashboard.apps.DashboardConfig',
 'oscar.apps.dashboard.reports.apps.ReportsDashboardConfig',
 'oscar.apps.dashboard.users.apps.UsersDashboardConfig',
 'oscar.apps.dashboard.orders.apps.OrdersDashboardConfig',
 'oscar.apps.dashboard.catalogue.apps.CatalogueDashboardConfig',
 'oscar.apps.dashboard.offers.apps.OffersDashboardConfig',
 'oscar.apps.dashboard.partners.apps.PartnersDashboardConfig',
 'oscar.apps.dashboard.pages.apps.PagesDashboardConfig',
 'oscar.apps.dashboard.ranges.apps.RangesDashboardConfig',
 'oscar.apps.dashboard.reviews.apps.ReviewsDashboardConfig',
 'oscar.apps.dashboard.vouchers.apps.VouchersDashboardConfig',
 'oscar.apps.dashboard.communications.apps.CommunicationsDashboardConfig',
 'oscar.apps.dashboard.shipping.apps.ShippingDashboardConfig',
 'widget_tweaks',
 'haystack',
 'treebeard',
 'sorl.thumbnail',
 'django_tables2']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'oscar.apps.basket.middleware.BasketMiddleware',
 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware']


Template error:
In template /usr/local/lib/python3.9/site-packages/oscar/templates/oscar/dashboard/catalogue/product_row_image.html, error at line 4
   module 'PIL.Image' has no attribute 'ANTIALIAS'
   1 : {% load image_tags %}
   2 : {% if record.primary_image.original.url %}
   3 :     {% with image=record.primary_image %}
   4 :          {% oscar_thumbnail image.original "70x70" upscale=False as thumb %} 
   5 :         <a href="#" data-original="{{ image.original.url }}" class="sub-image">
   6 :             <img src="{{ thumb.url }}" alt="{% if image.caption %}{{ image.caption }}{% else %}{{ record.get_title }}{% endif %}">
   7 :         </a>
   8 :     {% endwith %}
   9 : {% else %}
   10 :     —
   11 : {% endif %}
   12 : 

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "/usr/local/lib/python3.9/site-packages/django/core/handlers/base.py", line 204, in _get_response
    response = response.render()
  File "/usr/local/lib/python3.9/site-packages/django/template/response.py", line 105, in render
    self.content = self.rendered_content
  File "/usr/local/lib/python3.9/site-packages/django/template/response.py", line 83, in rendered_content
    return template.render(context, self._request)
  File "/usr/local/lib/python3.9/site-packages/django/template/backends/django.py", line 61, in render
    return self.template.render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 170, in render
    return self._render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/loader_tags.py", line 62, in render
    result = block.nodelist.render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/loader_tags.py", line 62, in render
    result = block.nodelist.render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/loader_tags.py", line 62, in render
    result = block.nodelist.render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/defaulttags.py", line 312, in render
    return nodelist.render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/loader_tags.py", line 62, in render
    result = block.nodelist.render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "/usr/local/lib/python3.9/site-packages/django_tables2/templatetags/django_tables2.py", line 167, in render
    return template.render(context={"table": table}, request=request)
  File "/usr/local/lib/python3.9/site-packages/django/template/backends/django.py", line 61, in render
    return self.template.render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 170, in render
    return self._render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/loader_tags.py", line 62, in render
    result = block.nodelist.render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/loader_tags.py", line 62, in render
    result = block.nodelist.render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/loader_tags.py", line 62, in render
    result = block.nodelist.render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/defaulttags.py", line 211, in render
    nodelist.append(node.render_annotated(context))
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/loader_tags.py", line 62, in render
    result = block.nodelist.render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/defaulttags.py", line 167, in render
    values = list(values)
  File "/usr/local/lib/python3.9/site-packages/django_tables2/rows.py", line 244, in items
    column.current_value = self.get_cell(column.name)
  File "/usr/local/lib/python3.9/site-packages/django_tables2/rows.py", line 197, in get_cell
    return self._get_and_render_with(
  File "/usr/local/lib/python3.9/site-packages/django_tables2/rows.py", line 173, in _get_and_render_with
    return render_func(bound_column, value)
  File "/usr/local/lib/python3.9/site-packages/django_tables2/rows.py", line 206, in _call_render
    content = call_with_appropriate(bound_column.render, render_kwargs)
  File "/usr/local/lib/python3.9/site-packages/django_tables2/utils.py", line 572, in call_with_appropriate
    return fn(**kwargs)
  File "/usr/local/lib/python3.9/site-packages/django_tables2/columns/templatecolumn.py", line 68, in render
    return get_template(self.template_name).render(context.flatten())
  File "/usr/local/lib/python3.9/site-packages/django/template/backends/django.py", line 61, in render
    return self.template.render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 170, in render
    return self._render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/defaulttags.py", line 312, in render
    return nodelist.render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/defaulttags.py", line 516, in render
    return self.nodelist.render(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "/usr/local/lib/python3.9/site-packages/oscar/templatetags/image_tags.py", line 113, in render
    raise e
  File "/usr/local/lib/python3.9/site-packages/oscar/templatetags/image_tags.py", line 110, in render
    return self._render(context)
  File "/usr/local/lib/python3.9/site-packages/oscar/templatetags/image_tags.py", line 126, in _render
    thumbnail = thumbnailer.generate_thumbnail(source, **options)
  File "/usr/local/lib/python3.9/site-packages/oscar/core/thumbnails.py", line 30, in generate_thumbnail
    return get_thumbnail(source, size, **opts)
  File "/usr/local/lib/python3.9/site-packages/sorl/thumbnail/shortcuts.py", line 8, in get_thumbnail
    return default.backend.get_thumbnail(file_, geometry_string, **options)
  File "/usr/local/lib/python3.9/site-packages/sorl/thumbnail/base.py", line 126, in get_thumbnail
    self._create_thumbnail(source_image, geometry_string, options,
  File "/usr/local/lib/python3.9/site-packages/sorl/thumbnail/base.py", line 159, in _create_thumbnail
    image = default.engine.create(source_image, geometry, options)
  File "/usr/local/lib/python3.9/site-packages/sorl/thumbnail/engines/base.py", line 20, in create
    image = self.scale(image, geometry, options)
  File "/usr/local/lib/python3.9/site-packages/sorl/thumbnail/engines/base.py", line 86, in scale
    image = self._scale(image, width, height)
  File "/usr/local/lib/python3.9/site-packages/sorl/thumbnail/engines/pil_engine.py", line 233, in _scale
    return image.resize((width, height), resample=Image.ANTIALIAS)

Exception Type: AttributeError at /dashboard/catalogue/
Exception Value: module 'PIL.Image' has no attribute 'ANTIALIAS'

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

No branches or pull requests

4 participants