summaryrefslogtreecommitdiff
path: root/django/contrib
diff options
context:
space:
mode:
authorJohannes Hoppe <info@johanneshoppe.com>2017-07-20 17:06:30 +0200
committerTim Graham <timograham@gmail.com>2017-07-20 11:06:30 -0400
commitc19b56f633e172b3c02094cbe12d28865ee57772 (patch)
tree698bf39231100f9a95ab87aa37b416eb7056e4e0 /django/contrib
parentf86b6f351d45c366f733c586127251c598dfd541 (diff)
Fixed #28377 -- Made combining form Media retain relative asset order.
Thanks Florian Apolloner, Mariusz Felisiak, and Tim Graham for reviews.
Diffstat (limited to 'django/contrib')
-rw-r--r--django/contrib/admin/helpers.py2
-rw-r--r--django/contrib/admin/options.py2
-rw-r--r--django/contrib/admin/widgets.py26
-rw-r--r--django/contrib/gis/admin/options.py6
4 files changed, 27 insertions, 9 deletions
diff --git a/django/contrib/admin/helpers.py b/django/contrib/admin/helpers.py
index 58e92c9689..2b47ed07fa 100644
--- a/django/contrib/admin/helpers.py
+++ b/django/contrib/admin/helpers.py
@@ -304,7 +304,7 @@ class InlineAdminFormSet:
@property
def media(self):
- media = self.opts.media + self.formset.media
+ media = self.formset.media + self.opts.media
for fs in self:
media = media + fs.media
return media
diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py
index edd0d7c3ad..714a27e994 100644
--- a/django/contrib/admin/options.py
+++ b/django/contrib/admin/options.py
@@ -579,9 +579,9 @@ class ModelAdmin(BaseModelAdmin):
def media(self):
extra = '' if settings.DEBUG else '.min'
js = [
- 'core.js',
'vendor/jquery/jquery%s.js' % extra,
'jquery.init.js',
+ 'core.js',
'admin/RelatedObjectLookups.js',
'actions%s.js' % extra,
'urlify.js',
diff --git a/django/contrib/admin/widgets.py b/django/contrib/admin/widgets.py
index 4b932f2c01..7cf71bb6ce 100644
--- a/django/contrib/admin/widgets.py
+++ b/django/contrib/admin/widgets.py
@@ -4,6 +4,7 @@ Form Widget classes specific to the Django admin site.
import copy
from django import forms
+from django.conf import settings
from django.db.models.deletion import CASCADE
from django.urls import reverse
from django.urls.exceptions import NoReverseMatch
@@ -22,7 +23,14 @@ class FilteredSelectMultiple(forms.SelectMultiple):
"""
@property
def media(self):
- js = ["core.js", "SelectBox.js", "SelectFilter2.js"]
+ extra = '' if settings.DEBUG else '.min'
+ js = [
+ 'vendor/jquery/jquery%s.js' % extra,
+ 'jquery.init.js',
+ 'core.js',
+ 'SelectBox.js',
+ 'SelectFilter2.js',
+ ]
return forms.Media(js=["admin/js/%s" % path for path in js])
def __init__(self, verbose_name, is_stacked, attrs=None, choices=()):
@@ -43,7 +51,13 @@ class FilteredSelectMultiple(forms.SelectMultiple):
class AdminDateWidget(forms.DateInput):
@property
def media(self):
- js = ["calendar.js", "admin/DateTimeShortcuts.js"]
+ extra = '' if settings.DEBUG else '.min'
+ js = [
+ 'vendor/jquery/jquery%s.js' % extra,
+ 'jquery.init.js',
+ 'calendar.js',
+ 'admin/DateTimeShortcuts.js',
+ ]
return forms.Media(js=["admin/js/%s" % path for path in js])
def __init__(self, attrs=None, format=None):
@@ -56,7 +70,13 @@ class AdminDateWidget(forms.DateInput):
class AdminTimeWidget(forms.TimeInput):
@property
def media(self):
- js = ["calendar.js", "admin/DateTimeShortcuts.js"]
+ extra = '' if settings.DEBUG else '.min'
+ js = [
+ 'vendor/jquery/jquery%s.js' % extra,
+ 'jquery.init.js',
+ 'calendar.js',
+ 'admin/DateTimeShortcuts.js',
+ ]
return forms.Media(js=["admin/js/%s" % path for path in js])
def __init__(self, attrs=None, format=None):
diff --git a/django/contrib/gis/admin/options.py b/django/contrib/gis/admin/options.py
index 431f138f1b..fe74df36ff 100644
--- a/django/contrib/gis/admin/options.py
+++ b/django/contrib/gis/admin/options.py
@@ -2,6 +2,7 @@ from django.contrib.admin import ModelAdmin
from django.contrib.gis.admin.widgets import OpenLayersWidget
from django.contrib.gis.db import models
from django.contrib.gis.gdal import OGRGeomType
+from django.forms import Media
spherical_mercator_srid = 3857
@@ -46,10 +47,7 @@ class GeoModelAdmin(ModelAdmin):
@property
def media(self):
"Injects OpenLayers JavaScript into the admin."
- media = super().media
- media.add_js([self.openlayers_url])
- media.add_js(self.extra_js)
- return media
+ return super().media + Media(js=[self.openlayers_url] + self.extra_js)
def formfield_for_dbfield(self, db_field, request, **kwargs):
"""