summaryrefslogtreecommitdiff
path: root/django/newforms
diff options
context:
space:
mode:
authorRussell Keith-Magee <russell@keith-magee.com>2007-08-09 14:47:49 +0000
committerRussell Keith-Magee <russell@keith-magee.com>2007-08-09 14:47:49 +0000
commit0f92ac52cbf81fb2ac01755c558e2e6ad54700e8 (patch)
treee49a896d0892b77eca1566b455b2ba14bac04743 /django/newforms
parent4cc0d9375e742c68d1e1fe1ff77dfa8607c7985a (diff)
newforms-admin: Fixed handling of file uploads in inline formsets.
git-svn-id: http://code.djangoproject.com/svn/django/branches/newforms-admin@5833 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/newforms')
-rw-r--r--django/newforms/formsets.py13
-rw-r--r--django/newforms/models.py8
2 files changed, 13 insertions, 8 deletions
diff --git a/django/newforms/formsets.py b/django/newforms/formsets.py
index eb8eb309f3..b6e142ed95 100644
--- a/django/newforms/formsets.py
+++ b/django/newforms/formsets.py
@@ -20,15 +20,16 @@ class ManagementForm(Form):
class BaseFormSet(object):
"""A collection of instances of the same Form class."""
- def __init__(self, data=None, auto_id='id_%s', prefix=None, initial=None):
- self.is_bound = data is not None
+ def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None, initial=None):
+ self.is_bound = data is not None and files is not None
self.prefix = prefix or 'form'
self.auto_id = auto_id
self.data = data
+ self.files = files
self.initial = initial
# initialization is different depending on whether we recieved data, initial, or nothing
- if data:
- self.management_form = ManagementForm(data, auto_id=self.auto_id, prefix=self.prefix)
+ if data or files:
+ self.management_form = ManagementForm(data, files, auto_id=self.auto_id, prefix=self.prefix)
if self.management_form.is_valid():
self.total_forms = self.management_form.cleaned_data[FORM_COUNT_FIELD_NAME]
self.required_forms = self.total_forms - self.num_extra
@@ -56,6 +57,8 @@ class BaseFormSet(object):
kwargs = {'auto_id': self.auto_id, 'prefix': self.add_prefix(i)}
if self.data:
kwargs['data'] = self.data
+ if self.files:
+ kwargs['files'] = self.files
add_form = FormClass(**kwargs)
self.add_fields(add_form, i)
add_forms.append(add_form)
@@ -72,6 +75,8 @@ class BaseFormSet(object):
kwargs = {'auto_id': self.auto_id, 'prefix': self.add_prefix(i)}
if self.data:
kwargs['data'] = self.data
+ if self.files:
+ kwargs['files'] = self.files
if self.initial:
kwargs['initial'] = self.initial[i]
change_form = FormClass(**kwargs)
diff --git a/django/newforms/models.py b/django/newforms/models.py
index 4ae8eee20a..16800dfdbf 100644
--- a/django/newforms/models.py
+++ b/django/newforms/models.py
@@ -234,9 +234,9 @@ class BaseModelFormSet(BaseFormSet):
"""
model = None
- def __init__(self, data=None, auto_id='id_%s', prefix=None, instances=None):
+ def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None, instances=None):
self.instances = instances
- kwargs = {'data': data, 'auto_id': auto_id, 'prefix': prefix}
+ kwargs = {'data': data, 'files': files, 'auto_id': auto_id, 'prefix': prefix}
if instances:
kwargs['initial'] = [initial_data(instance) for instance in instances]
super(BaseModelFormSet, self).__init__(**kwargs)
@@ -287,12 +287,12 @@ def formset_for_model(model, form=BaseForm, formfield_callback=lambda f: f.formf
class InlineFormset(BaseModelFormSet):
"""A formset for child objects related to a parent."""
- def __init__(self, instance=None, data=None):
+ def __init__(self, instance=None, data=None, files=None):
from django.db.models.fields.related import RelatedObject
self.instance = instance
# is there a better way to get the object descriptor?
self.rel_name = RelatedObject(self.fk.rel.to, self.model, self.fk).get_accessor_name()
- super(InlineFormset, self).__init__(data, instances=self.get_inline_objects(), prefix=self.rel_name)
+ super(InlineFormset, self).__init__(data, files, instances=self.get_inline_objects(), prefix=self.rel_name)
def get_inline_objects(self):
if self.instance is None: