summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Holovaty <adrian@holovaty.com>2007-01-19 05:59:28 +0000
committerAdrian Holovaty <adrian@holovaty.com>2007-01-19 05:59:28 +0000
commit53f94937f00d43f8a4d78437d88c99e4e7e51cf5 (patch)
treec18d52f1207bb9013ac922cca01683224a989216
parent7227d41f4823efef8c51992cd1cbd51e7fca5f11 (diff)
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
-rw-r--r--django/contrib/admin/options.py33
1 files changed, 33 insertions, 0 deletions
diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py
index e4ae50eed3..e0d33d401b 100644
--- a/django/contrib/admin/options.py
+++ b/django/contrib/admin/options.py
@@ -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