diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py
index 7e272091ee..389a73fa93 100644
--- a/django/contrib/admin/options.py
+++ b/django/contrib/admin/options.py
@@ -31,43 +31,6 @@ def unquote(s):
myappend('_' + item)
return "".join(res)
-class AdminFieldSet(object):
- def __init__(self, name, classes, field_locator_func, field_list, description):
- self.name = name
- self.field_lines = [AdminFieldLine(field_locator_func, field) for field in field_list]
- self.classes = classes
- self.description = description
-
- def __repr__(self):
- return "FieldSet: (%s, %s)" % (self.name, self.field_lines)
-
- def bind(self, field_mapping, original, bound_field_set_class):
- return bound_field_set_class(self, field_mapping, original)
-
- def __iter__(self):
- for field_line in self.field_lines:
- yield field_line
-
- def __len__(self):
- return len(self.field_lines)
-
-class AdminFieldLine(object):
- def __init__(self, field_locator_func, field_name):
- if isinstance(field_name, basestring):
- self.fields = [field_locator_func(field_name)]
- else:
- self.fields = [field_locator_func(name) for name in field_name]
-
- def bind(self, field_mapping, original, bound_field_line_class):
- return bound_field_line_class(self, field_mapping, original)
-
- def __iter__(self):
- for field in self.fields:
- yield field
-
- def __len__(self):
- return len(self.fields)
-
class AdminForm(object):
def __init__(self, form, fieldsets):
self.form, self.fieldsets = form, fieldsets
@@ -174,19 +137,37 @@ class ModelAdmin(object):
else:
return self.change_view(request, unquote(url))
- def get_field_sets(self):
- "Returns a list of AdminFieldSet objects according to self.fields."
- opts = self.opts
- if self.fields is None:
- field_struct = ((None, {'fields': [f.name for f in opts.fields + opts.many_to_many if f.editable and not isinstance(f, models.AutoField)]}),)
- else:
- field_struct = self.fields
- new_fieldset_list = []
- for name, options in field_struct:
- classes = options.get('classes', ())
- description = options.get('description', '')
- new_fieldset_list.append(AdminFieldSet(name, classes, opts.get_field, options['fields'], description))
- return new_fieldset_list
+ def javascript(self, request, fieldsets):
+ """
+ Returns a list of URLs to include via
-{% for js in javascript_imports %}{% include_admin_script js %}{% endfor %}
+{% for js in javascript_imports %}
+{% endfor %}
{% endblock %}
{% block stylesheet %}{% admin_media_prefix %}css/forms.css{% endblock %}
diff --git a/django/contrib/admin/templatetags/admin_modify.py b/django/contrib/admin/templatetags/admin_modify.py
index d36ec3389f..7e9eb41f59 100644
--- a/django/contrib/admin/templatetags/admin_modify.py
+++ b/django/contrib/admin/templatetags/admin_modify.py
@@ -15,23 +15,6 @@ word_re = re.compile('[A-Z][a-z]+')
def class_name_to_underscored(name):
return '_'.join([s.lower() for s in word_re.findall(name)[:-1]])
-def include_admin_script(script_path):
- """
- Returns an HTML script element for including a script from the admin
- media url.
-
- Example usage::
-
- {% include_admin_script js/calendar.js %}
-
- could return::
-
- ' % (settings.ADMIN_MEDIA_PREFIX, script_path)
-include_admin_script = register.simple_tag(include_admin_script)
-
def submit_row(context):
opts = context['opts']
change = context['change']
diff --git a/django/contrib/admin/views/main.py b/django/contrib/admin/views/main.py
index 455f98d9a6..3a7c334301 100644
--- a/django/contrib/admin/views/main.py
+++ b/django/contrib/admin/views/main.py
@@ -48,33 +48,6 @@ def quote(s):
res[i] = '_%02X' % ord(c)
return ''.join(res)
-def get_javascript_imports(opts, auto_populated_fields, field_sets):
-# Put in any necessary JavaScript imports.
- js = ['js/core.js', 'js/admin/RelatedObjectLookups.js']
- if auto_populated_fields:
- js.append('js/urlify.js')
- if opts.has_field_type(models.DateTimeField) or opts.has_field_type(models.TimeField) or opts.has_field_type(models.DateField):
- js.extend(['js/calendar.js', 'js/admin/DateTimeShortcuts.js'])
- if opts.get_ordered_objects():
- js.extend(['js/getElementsBySelector.js', 'js/dom-drag.js' , 'js/admin/ordering.js'])
- if opts.admin.js:
- js.extend(opts.admin.js)
- seen_collapse = False
- for field_set in field_sets:
- if not seen_collapse and 'collapse' in field_set.classes:
- seen_collapse = True
- js.append('js/admin/CollapsedFieldsets.js')
-
- for field_line in field_set:
- try:
- for f in field_line:
- if f.rel and isinstance(f, models.ManyToManyField) and f.rel.filter_interface:
- js.extend(['js/SelectBox.js' , 'js/SelectFilter2.js'])
- raise StopIteration
- except StopIteration:
- break
- return js
-
def model_admin_view(request, app_label, model_name, rest_of_url):
model = models.get_model(app_label, model_name)
if model is None:
@@ -142,7 +115,6 @@ def render_change_form(model_admin, model, manipulator, context, add=False, chan
opts = model._meta
app_label = opts.app_label
auto_populated_fields = [f for f in opts.fields if f.prepopulate_from]
- field_sets = model_admin.get_field_sets()
original = getattr(manipulator, 'original_object', None)
ordered_objects = opts.get_ordered_objects()
inline_related_objects = opts.get_followed_related_objects(manipulator.follow)
@@ -154,7 +126,6 @@ def render_change_form(model_admin, model, manipulator, context, add=False, chan
'has_file_field': opts.has_field_type(models.FileField),
'has_absolute_url': hasattr(model, 'get_absolute_url'),
'auto_populated_fields': auto_populated_fields,
- 'javascript_imports': get_javascript_imports(opts, auto_populated_fields, field_sets),
'ordered_objects': ordered_objects,
'inline_related_objects': inline_related_objects,
'form_url': form_url,