On Aug 8, 2009, at 4:25 AM, Malveeka Tewari wrote:
I am working on writing a storm based member adaptor for mailman so that the mailman membership data can be stored in a database instead of .pck files. The reason for choosing storm is that it provides an abstraction to use anyunderlying db language- either mysql, postgresql or sqllite.
I'm a big fan of Storm. It's the ORM used in Mailman 3 and I've had a lot of good success with it.
Please note that this new member adapter cannot go officially into Mailman 2.1, but I do think it might be useful for Mailman 2.2, probably as unofficial contrib, though Mark may want to weigh in on that. Because the schema is so different in Mailman 3 and we already use Storm, this won't be relevant for that branch.
The ideal case would be to use only a database and no pickle files for Memberships data but I have not reached there.I had tried to read and use the data from the database instead of pickle files and that had broken my Mailman which leaves me with few questions
Are you using Pickle() fields for non-scalar data types? (i.e. lists and dictionaries). Of course, you don't gain from relational data that way, but it's still useful.
In OldStyleMemberships.py the lower cased email address is used as a key foraccessing the membership properties. However in my schema, I am using the (listname, case preserved email address) as the PK. Is it possible that not storing and using LCE as a key might break something.
From OldStyleMembership's (very loose) contract, I think the answer is "yes". It doesn't matter so much how you store things in the database, but you will have to honor the contract that the MemberAdapter.py promises.
I also want to make sure that in the database I am caturing all theMemberships data. Presently my database uses the following class as a stormabstraction for the database. Do I need to add/remove anything? class PgsqlMembers(object): __storm_table__ = "mailman_test" __storm_primary__ = "listname","address" listname = Unicode() address = Unicode() password = Unicode() lang = Unicode() name = Unicode() digest = Unicode() delivery_status = Int() user_options = Int() topics_userinterest = Unicode() bounce_info = Unicode() delivery_status_timestamp = Unicode()
When I was creating the schemas for MM3, I basically had to inspect OldStyleMembership.py to see what fields it requires, then fix things as tests broke. MM2 has the great disadvantage that there isn't a usable test suite. This is fixed in MM3. So I think you're left to manual testing until it basically works for you. :(
-Barry
PGP.sig
Description: This is a digitally signed message part
_______________________________________________ Mailman-Developers mailing list Mailman-Developers@python.org http://mail.python.org/mailman/listinfo/mailman-developers Mailman FAQ: http://wiki.list.org/x/AgA3 Searchable Archives: http://www.mail-archive.com/mailman-developers%40python.org/ Unsubscribe: http://mail.python.org/mailman/options/mailman-developers/archive%40jab.org Security Policy: http://wiki.list.org/x/QIA9