[Mailman-Developers] Exporting member info (including options)

Mark Sapiro mark at msapiro.net
Thu Aug 19 01:13:37 CEST 2010


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 at 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 at msapiro.net>        The highway is for gamblers,
San Francisco Bay Area, California    better use your sense - B. Dylan



More information about the Mailman-Developers mailing list