Opened 3 years ago

Closed 7 months ago

#19538 closed Cleanup/optimization (fixed)

Remove __admin_media_prefix__ in admin templates

Reported by: andrew@… Owned by: timgraham
Component: contrib.admin Version: master
Severity: Normal Keywords: admin S3 DateTime
Cc: Triage Stage: Ready for checkin
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by apollo13)

contrib/admin/templates/admin/base.html contains the line:

<script type="text/javascript">window.__admin_media_prefix__ = "{% filter escapejs %}{% static "admin/" %}{% endfilter %}";</script>

The __admin_media_prefix__ is used in contrib/admin/static/admin/js/admin/DateTimeShortcuts.js to form URLs by concatenation:
DateTimeShortcuts.admin_media_prefix + 'img/icon_clock.gif'

This causes a problem with certain storage backends (such as S3 Boto) which include authentication digests as part of the URL. For instance, when using the S3 Boto backend, my admin renders the following line:

<script type="text/javascript">window.__admin_media_prefix__ = "https://oca3\\u003DXIt%2FCc9wPWjaw%2F3ITNjkYE3bc%2FI%3D\u0026Expires\u003D1356844210\u0026AWSAccessKeyId\u003DAKIAIGREZ7J53KZ23QKQ";</script>

Which, when concatenated with the fixed string generates the invalid URL: https://oca3\\u003DXIt%2FCc9wPWjaw%2F3ITNjkYE3bc%2FI%3D\u0026Expires\u003D1356844210\u0026AWSAccessKeyId\u003DAKIAIGREZ7J53KZ23QKQimg/icon_clock.gif

I suspect that the assumption the DateTime widget is relying on ({% static a+b %} should be equivelant to {% static a %}b) is invalid, and it should be using a more robust method to determine the static URL of its resources. The DateTime widget appears to be the only element depending on __admin_media_prefix__, and thus the only one to fail when switching to a backend that doesn't support its assumption.

Change History (9)

comment:1 Changed 3 years ago by apollo13

  • Description modified (diff)
  • Needs documentation unset
  • Needs tests unset
  • Patch needs improvement unset

comment:2 Changed 3 years ago by aaugustin

  • Component changed from Uncategorized to contrib.admin
  • Triage Stage changed from Unreviewed to Accepted
  • Type changed from Uncategorized to Bug

comment:3 Changed 3 years ago by garanko

  • Owner changed from nobody to garanko
  • Status changed from new to assigned

comment:4 Changed 2 years ago by claudep

#21395 has been marked as a duplicate.

comment:5 Changed 22 months ago by wraus@…

Has there been any progress on this? This is causing some issues for me, since I'm looking to switch over to S3. Technically everything still works, but there shouldn't be broken images in the admin just because I want to use S3.

comment:6 Changed 7 months ago by timgraham

  • Has patch set
  • Needs documentation set
  • Owner changed from garanko to timgraham
  • Summary changed from __admin_media_prefix__ in admin templates to Remove __admin_media_prefix__ in admin templates
  • Type changed from Bug to Cleanup/optimization
  • Version changed from 1.4 to master

We can address this by moving image references to CSS and using relative paths.

Work in progress

comment:7 Changed 7 months ago by timgraham

  • Needs documentation unset

Addressed todos; ready for review now.

comment:8 Changed 7 months ago by collinanderson

  • Triage Stage changed from Accepted to Ready for checkin

I don't want to rush it, but the PR looks good.

comment:9 Changed 7 months ago by Tim Graham <timograham@…>

  • Resolution set to fixed
  • Status changed from assigned to closed

In d61ebc8fed212366340b1ed6f5d7722613801459:

Fixed #19538 -- Removed window.admin_media_prefix from admin templates.

Note: See TracTickets for help on using tickets.
Back to Top