I'm almost certainly missing something very, very simple here, but I
haven't been able to find what it is on my own.

One view in my app should allow users to upload an OPML file, which the
app will parse and use to import feeds, but which won't otherwise be
stored.  As with most other non-model-based forms, I'm using a custom
validator for this form:

class AddFromOPMLManipulator(formfields.Manipulator):
    def __init__(self):
        self.fields = (
            formfields.FileUploadField(field_name="opml_file",
                                       is_required=True,),
            )


When the form is submitted, I get this traceback:

Traceback (most recent call last):

  File 
"/usr/lib/python2.3/site-packages/django-1.0.0-py2.3.egg/django/core/handlers/base.py",
 line 64, in get_response
    response = callback(request, **param_dict)

  File 
"/home/jmcbray/Documents/topical/business/site_test/apps/engulf/views/util.py", 
line 231, in _checklogin
    return view_func(request, *args, **kwargs)

  File 
"/home/jmcbray/Documents/topical/business/site_test/apps/engulf/views/engulf.py",
 line 333, in add
    opml_errors = opml_manipulator.get_validation_errors(opml_data)

  File 
"/usr/lib/python2.3/site-packages/django-1.0.0-py2.3.egg/django/core/formfields.py",
 line 70, in get_validation_errors
    validator(new_data.get(field.field_name, ''), new_data)

  File 
"/usr/lib/python2.3/site-packages/django-1.0.0-py2.3.egg/django/core/formfields.py",
 line 491, in isNonEmptyFile
    if not field_data['content']:

TypeError: string indices must be integers

The form enctype is multipart/form-data.  Obviously the value of the
field the validator is seeing is a string, and obviously it shouldn't
be.  So what's going wrong here?  It's surely something that should be
completely obvious, but somehow I'm just managing to miss it.

-- 
+----------------------------------------------------------------+
| Jason F. McBrayer                         [EMAIL PROTECTED]  |
|  "If you wish to make Pythocles wealthy, don't give him more   |
|   money; rather, reduce his desires."            -- Epicurus   |


Reply via email to