Django

Code

Changeset 4357

Show
Ignore:
Timestamp:
01/18/07 23:59:28 (2 years ago)
Author:
adrian
Message:

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

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/branches/newforms-admin/django/contrib/admin/options.py

    r4356 r4357  
    6868        return len(self.fields) 
    6969 
     70# New implementation of Fieldset 
     71class Fieldset(object): 
     72    def __init__(self, name, field_list, classes=None, description=None): 
     73        self.name, self.field_list = name, field_list 
     74        self.classes = classes or () 
     75        self.description = description 
     76 
    7077class ModelAdmin(object): 
    7178    "Encapsulates all admin options and functionality for a given model." 
     
    126133            new_fieldset_list.append(AdminFieldSet(name, classes, opts.get_field, options['fields'], description)) 
    127134        return new_fieldset_list 
     135 
     136    def fieldsets(self, request): 
     137        """ 
     138        Generator that yields Fieldset objects for use on add and change admin 
     139        form pages. 
     140 
     141        This default implementation looks at self.fields, but subclasses can 
     142        override this implementation and do something special based on the 
     143        given HttpRequest object. 
     144        """ 
     145        if self.fields is None: 
     146            default_fields = [f.name for f in self.opts.fields + self.opts.many_to_many if f.editable and not isinstance(f, models.AutoField)] 
     147            yield Fieldset(fields=default_fields) 
     148        else: 
     149            for name, options in self.fields: 
     150                yield Fieldset(name, options['fields'], classes=options.get('classes'), description=options.get('description')) 
     151 
     152    def fieldsets_add(self, request): 
     153        "Hook for specifying Fieldsets for the add form." 
     154        for fs in self.fieldsets(request): 
     155            yield fs 
     156 
     157    def fieldsets_change(self, request, object_id): 
     158        "Hook for specifying Fieldsets for the change form." 
     159        for fs in self.fieldsets(request): 
     160            yield fs 
    128161 
    129162    def has_add_permission(self, request):