1
0
mirror of https://github.com/django/django.git synced 2025-10-26 23:26:08 +00:00

newforms-admin: Finished migrating AdminOptions to ModelForm. AdminOptions no longer exists. Things are still a bit messy.

git-svn-id: http://code.djangoproject.com/svn/django/branches/newforms-admin@4343 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Adrian Holovaty
2007-01-17 05:39:29 +00:00
parent 4fc14c6f7a
commit d41320d2e5
8 changed files with 108 additions and 131 deletions

View File

@@ -30,6 +30,43 @@ def unquote(s):
myappend('_' + item)
return "".join(res)
class AdminFieldSet(object):
def __init__(self, name, classes, field_locator_func, line_specs, description):
self.name = name
self.field_lines = [AdminFieldLine(field_locator_func, line_spec) for line_spec in line_specs]
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, linespec):
if isinstance(linespec, basestring):
self.fields = [field_locator_func(linespec)]
else:
self.fields = [field_locator_func(field_name) for field_name in linespec]
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 ModelAdmin(object):
"Encapsulates all admin options and functionality for a given model."
@@ -44,6 +81,7 @@ class ModelAdmin(object):
save_on_top = False
ordering = None
js = None
fields = None
def __init__(self, model):
self.model = model
@@ -74,6 +112,21 @@ class ModelAdmin(object):
else:
return self.change_view(request, unquote(url))
def get_field_sets(self, opts):
"Returns a list of AdminFieldSet objects."
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 fieldset in field_struct:
fs_options = fieldset[1]
classes = fs_options.get('classes', ())
description = fs_options.get('description', '')
new_fieldset_list.append(AdminFieldSet(fieldset[0], classes,
opts.get_field, fs_options['fields'], description))
return new_fieldset_list
def has_add_permission(self, request):
"Returns True if the given request has permission to add an object."
opts = self.opts
@@ -173,7 +226,7 @@ class ModelAdmin(object):
if object_id_override is not None:
c['object_id'] = object_id_override
return render_change_form(model, manipulator, c, add=True)
return render_change_form(self, model, manipulator, c, add=True)
def change_view(self, request, object_id):
"The 'change' admin view for this model."
@@ -272,7 +325,7 @@ class ModelAdmin(object):
'original': manipulator.original_object,
'is_popup': request.REQUEST.has_key('_popup'),
})
return render_change_form(model, manipulator, c, change=True)
return render_change_form(self, model, manipulator, c, change=True)
def change_list_view(self, request):
"The 'change list' admin view for this model."