1
0
mirror of https://github.com/django/django.git synced 2025-07-04 09:49:12 +00:00

newforms-admin: Added fieldsets(), fieldsets_add() and fieldsets_change() methods to ModelAdmin. These hooks aren't called from anywhere yet.

git-svn-id: http://code.djangoproject.com/svn/django/branches/newforms-admin@4357 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Adrian Holovaty 2007-01-19 05:59:28 +00:00
parent 7227d41f48
commit 53f94937f0

View File

@ -67,6 +67,13 @@ class AdminFieldLine(object):
def __len__(self):
return len(self.fields)
# New implementation of Fieldset
class Fieldset(object):
def __init__(self, name, field_list, classes=None, description=None):
self.name, self.field_list = name, field_list
self.classes = classes or ()
self.description = description
class ModelAdmin(object):
"Encapsulates all admin options and functionality for a given model."
@ -126,6 +133,32 @@ class ModelAdmin(object):
new_fieldset_list.append(AdminFieldSet(name, classes, opts.get_field, options['fields'], description))
return new_fieldset_list
def fieldsets(self, request):
"""
Generator that yields Fieldset objects for use on add and change admin
form pages.
This default implementation looks at self.fields, but subclasses can
override this implementation and do something special based on the
given HttpRequest object.
"""
if self.fields is None:
default_fields = [f.name for f in self.opts.fields + self.opts.many_to_many if f.editable and not isinstance(f, models.AutoField)]
yield Fieldset(fields=default_fields)
else:
for name, options in self.fields:
yield Fieldset(name, options['fields'], classes=options.get('classes'), description=options.get('description'))
def fieldsets_add(self, request):
"Hook for specifying Fieldsets for the add form."
for fs in self.fieldsets(request):
yield fs
def fieldsets_change(self, request, object_id):
"Hook for specifying Fieldsets for the change form."
for fs in self.fieldsets(request):
yield fs
def has_add_permission(self, request):
"Returns True if the given request has permission to add an object."
opts = self.opts