
Aaron Kreider wrote:
This worked. Now I get a JSON error:
File "pickle2json.py", line 21, in ? open(opts.json_data_path, 'w').write(json.dumps(unpickled_data)) File "build/bdist.linux-x86_64/egg/simplejson/__init__.py", line 261, in dumps File "build/bdist.linux-x86_64/egg/simplejson/encoder.py", line 214, in encode File "build/bdist.linux-x86_64/egg/simplejson/encoder.py", line 282, in iterencode File "build/bdist.linux-x86_64/egg/simplejson/encoder.py", line 190, in default TypeError: <bounce info for member email@domain.org current score: 1.0 last bounce date: (2007, 1, 8) email notices left: 3 last notice date: (1970, 1, 1) confirmation cookie: None
is not JSON serializable
The problem is that a member's bounce_info is an instance of the Mailman.Bouncer._BounceInfo class (this is why your script needs to be able to find the Mailman.Bouncer module to unpickle a list with bounce_info).
JSON can't represent this class instance directly, just as MysqlMemberships.py can't store it directly in the MySQL database. This is why MysqlMemberships.py takes the class instances attributes score, date, noticesleft, lastnotice and cookie and stores them as separate fields bi_score, bi_date, bi_noticesleft, bi_lastnotice and bi_cookie in the MySQL database table.
Your script needs to do a similar thing since it's the attribute values you need to put in the database anyway.
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan