Django

Code

Changeset 5833

Show
Ignore:
Timestamp:
08/09/07 09:47:49 (1 year ago)
Author:
russellm
Message:

newforms-admin: Fixed handling of file uploads in inline formsets.

Files:

Legend:

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

    r5830 r5833  
    421421            form = ModelForm(request.POST, request.FILES) 
    422422            for FormSet in self.get_inline_formsets(): 
    423                 inline_formset = FormSet(data=request.POST
     423                inline_formset = FormSet(data=request.POST, files=request.FILES
    424424                inline_formsets.append(inline_formset) 
    425425            if all_valid(inline_formsets) and form.is_valid(): 
     
    471471            form = ModelForm(request.POST, request.FILES) 
    472472            for FormSet in self.get_inline_formsets(): 
    473                 inline_formset = FormSet(obj, request.POST
     473                inline_formset = FormSet(obj, request.POST, request.FILES
    474474                inline_formsets.append(inline_formset) 
    475475 
  • django/branches/newforms-admin/django/contrib/admin/views/main.py

    r5828 r5833  
    125125        'has_delete_permission': context['perms'][app_label][opts.get_delete_permission()], 
    126126        'has_change_permission': context['perms'][app_label][opts.get_change_permission()], 
    127         'has_file_field': opts.has_field_type(models.FileField)
     127        'has_file_field': True, # FIXME - this should check if form or formsets have a FileField
    128128        'has_absolute_url': hasattr(model, 'get_absolute_url'), 
    129129        'ordered_objects': ordered_objects, 
  • django/branches/newforms-admin/django/newforms/formsets.py

    r5578 r5833  
    2121    """A collection of instances of the same Form class.""" 
    2222 
    23     def __init__(self, data=None, auto_id='id_%s', prefix=None, initial=None): 
    24         self.is_bound = data is not None 
     23    def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None, initial=None): 
     24        self.is_bound = data is not None and files is not None 
    2525        self.prefix = prefix or 'form' 
    2626        self.auto_id = auto_id 
    2727        self.data = data 
     28        self.files = files 
    2829        self.initial = initial 
    2930        # initialization is different depending on whether we recieved data, initial, or nothing 
    30         if data
    31             self.management_form = ManagementForm(data, auto_id=self.auto_id, prefix=self.prefix) 
     31        if data or files
     32            self.management_form = ManagementForm(data, files, auto_id=self.auto_id, prefix=self.prefix) 
    3233            if self.management_form.is_valid(): 
    3334                self.total_forms = self.management_form.cleaned_data[FORM_COUNT_FIELD_NAME] 
     
    5758                if self.data: 
    5859                    kwargs['data'] = self.data 
     60                if self.files: 
     61                    kwargs['files'] = self.files 
    5962                add_form = FormClass(**kwargs) 
    6063                self.add_fields(add_form, i) 
     
    7376                if self.data: 
    7477                    kwargs['data'] = self.data 
     78                if self.files: 
     79                    kwargs['files'] = self.files 
    7580                if self.initial: 
    7681                    kwargs['initial'] = self.initial[i] 
  • django/branches/newforms-admin/django/newforms/models.py

    r5828 r5833  
    235235    model = None 
    236236     
    237     def __init__(self, data=None, auto_id='id_%s', prefix=None, instances=None): 
     237    def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None, instances=None): 
    238238        self.instances = instances 
    239         kwargs = {'data': data, 'auto_id': auto_id, 'prefix': prefix} 
     239        kwargs = {'data': data, 'files': files, 'auto_id': auto_id, 'prefix': prefix} 
    240240        if instances: 
    241241            kwargs['initial'] = [initial_data(instance) for instance in instances] 
     
    288288class InlineFormset(BaseModelFormSet): 
    289289    """A formset for child objects related to a parent.""" 
    290     def __init__(self, instance=None, data=None): 
     290    def __init__(self, instance=None, data=None, files=None): 
    291291        from django.db.models.fields.related import RelatedObject 
    292292        self.instance = instance 
    293293        # is there a better way to get the object descriptor? 
    294294        self.rel_name = RelatedObject(self.fk.rel.to, self.model, self.fk).get_accessor_name() 
    295         super(InlineFormset, self).__init__(data, instances=self.get_inline_objects(), prefix=self.rel_name) 
     295        super(InlineFormset, self).__init__(data, files, instances=self.get_inline_objects(), prefix=self.rel_name) 
    296296 
    297297    def get_inline_objects(self):