Django

Code

Changeset 6102

Show
Ignore:
Timestamp:
09/11/07 20:34:25 (1 year ago)
Author:
jkocherhans
Message:

newforms-admin: Fixed #5383.

Files:

Legend:

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

    r6100 r6102  
    180180        return db_field.formfield(**kwargs) 
    181181 
    182     def _fieldsets(self, request): 
     182    def _declared_fieldsets(self): 
    183183        if self.fieldsets: 
    184184            return self.fieldsets 
    185         if self.fields: 
     185        elif self.fields: 
    186186            return [(None, {'fields': self.fields})] 
    187         # TODO: switch this to pull from the form, not the model 
    188         fields = [f.name for f in self.opts.fields + self.opts.many_to_many if f.editable and not isinstance(f, models.AutoField)] 
    189         return [(None, {'fields': fields})] 
     187        return None 
     188    declared_fieldsets = property(_declared_fieldsets) 
    190189 
    191190    def fieldsets_add(self, request): 
    192191        "Hook for specifying fieldsets for the add form." 
    193         return list(self._fieldsets(request)) 
    194  
     192        raise NotImplementedError 
     193     
    195194    def fieldsets_change(self, request, obj): 
    196195        "Hook for specifying fieldsets for the change form." 
    197         return list(self._fieldsets(request)) 
     196        raise NotImplementedError 
    198197 
    199198class ModelAdmin(BaseModelAdmin): 
     
    310309        return self.queryset(request) 
    311310 
     311    def fieldsets_add(self, request): 
     312        "Hook for specifying fieldsets for the add form." 
     313        if self.declared_fieldsets: 
     314            return self.declared_fieldsets 
     315        form = self.form_add(request) 
     316        return [(None, {'fields': form.base_fields.keys()})] 
     317 
     318    def fieldsets_change(self, request, obj): 
     319        "Hook for specifying fieldsets for the change form." 
     320        if self.declared_fieldsets: 
     321            return self.declared_fieldsets 
     322        form = self.form_change(request, obj) 
     323        return [(None, {'fields': form.base_fields.keys()})] 
     324 
    312325    def form_add(self, request): 
    313326        """ 
    314327        Returns a Form class for use in the admin add view. 
    315328        """ 
    316         fields = flatten_fieldsets(self.fieldsets_add(request)) 
     329        if self.declared_fieldsets: 
     330            fields = flatten_fieldsets(self.declared_fieldsets) 
     331        else: 
     332            fields = None 
    317333        return forms.form_for_model(self.model, fields=fields, formfield_callback=self.formfield_for_dbfield) 
    318334 
     
    321337        Returns a Form class for use in the admin change view. 
    322338        """ 
    323         fields = flatten_fieldsets(self.fieldsets_change(request, obj)) 
     339        if self.declared_fieldsets: 
     340            fields = flatten_fieldsets(self.declared_fieldsets) 
     341        else: 
     342            fields = None 
    324343        return forms.form_for_instance(obj, fields=fields, formfield_callback=self.formfield_for_dbfield) 
    325344 
     
    679698    def formset_add(self, request): 
    680699        """Returns an InlineFormSet class for use in admin add views.""" 
    681         fields = flatten_fieldsets(self.fieldsets_add(request)) 
     700        if self.declared_fieldsets: 
     701            fields = flatten_fieldsets(self.declared_fieldsets) 
     702        else: 
     703            fields = None 
    682704        return forms.inline_formset(self.parent_model, self.model, fk_name=self.fk_name, fields=fields, formfield_callback=self.formfield_for_dbfield, extra=self.extra) 
    683705 
    684706    def formset_change(self, request, obj): 
    685707        """Returns an InlineFormSet class for use in admin change views.""" 
    686         fields = flatten_fieldsets(self.fieldsets_change(request, obj)) 
     708        if self.declared_fieldsets: 
     709            fields = flatten_fieldsets(self.declared_fieldsets) 
     710        else: 
     711            fields = None 
    687712        return forms.inline_formset(self.parent_model, self.model, fk_name=self.fk_name, fields=fields, formfield_callback=self.formfield_for_dbfield, extra=self.extra) 
    688713 
    689     def _fieldsets(self, request): 
    690         if self.fieldsets: 
    691             return self.fieldsets 
    692         if self.fields: 
    693             return [(None, {'fields': self.fields})] 
    694         fields = [f for f in self.formset_class(request).form_class.base_fields.keys()] 
    695         return [(None, {'fields': fields})] 
     714    def fieldsets_add(self, request): 
     715        if self.declared_fieldsets: 
     716            return self.declared_fieldsets 
     717        form = self.formset_add(request).form_class 
     718        return [(None, {'fields': form.base_fields.keys()})] 
     719 
     720    def fieldsets_change(self, request, obj): 
     721        if self.declared_fieldsets: 
     722            return self.declared_fieldsets 
     723        form = self.formset_change(request, obj).form_class 
     724        return [(None, {'fields': form.base_fields.keys()})] 
    696725 
    697726class StackedInline(InlineModelAdmin):