1. Faking the Web. What you need to do is to create instances of a class that has the fieldnames attribute and appropriate instance variables. One possible solution is:

    class FormData:
        def __init__(self, dict):
            for k, v in dict.items():
                setattr(self, k, v)
    class FeedbackData(FormData):
        """ A FormData generated by the comment.html form. """
        fieldnames = ('name', 'address', 'email', 'type', 'text')
        def __repr__(self):
            return "%(type)s from %(name)s on %(time)s" % vars(self)
    
    fake_entries = [
        {'name': "John Doe",
         'address': '500 Main St., SF CA 94133',
         'email': 'john@sf.org',
         'type': 'comment',
         'text': 'Great toothpaste!'},
        {'name': "Suzy Doe",
         'address': '500 Main St., SF CA 94133',
         'email': 'suzy@sf.org',
         'type': 'complaint',
         'text': "It doesn't taste good when I kiss John!"},
        ]
    
    DIRECTORY = r'C:\complaintdir'
    if __name__ == '__main__':
        import tempfile, pickle, time
        tempfile.tempdir = DIRECTORY
        for fake_entry in fake_entries:
            data = FeedbackData(fake_entry)
            filename = tempfile.mktemp()
            data.time = time.asctime(time.localtime(time.time()))
            pickle.dump(data, open(filename, 'w'))

    As you can see, the only thing you really had to change was the way the constructor for FormData works, since it has to do the setting of attributes from a dictionary as opposed to a FieldStorage object.

  2. Cleaning up. There are many ways to deal with this problem. One easy one is to modify the formletter.py program to keep a list of the filenames that it has already processed (in a pickled file, of course!). ...

Get Learning Python now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.