Chris Haumesser wrote:
> Rudimentary dbmail classes for python?  Are they online somewhere?

In the source dbmail-2.2.x/python/...

I should rewrite them to use sqlalchemy, really. Provide a working model...

from another project, playing with Pylons:

#!/usr/bin/python

from sqlalchemy import *
from sqlalchemy.ext.assignmapper import assign_mapper

class User(object):
    content = None

    def __str__(self):
        return self.userid

class Folder(object):
    content = None

    def __str__(self):
        return self.name

class Message(object):
    content = None

    def __str__(self):
        return self.message_idnr

class Physmessage(object):
    content = None

class Messageblk(object):
    content = None

class Envelope(object):
    content = None

meta = BoundMetaData('sqlite:////home/paul/dbmail.db')
print 'opened database'

users = Table('dbmail_users', meta, autoload=True)
folders = Table('dbmail_mailboxes', meta, autoload=True)
messages = Table('dbmail_messages', meta, autoload=True)
physmessages = Table('dbmail_physmessage', meta, autoload=True)
messageblks = Table('dbmail_messageblks', meta, autoload=True)
envelopes = Table('dbmail_envelope', meta, autoload=True)

user_mapper = assign_mapper(session_context, User, users)
folder_mapper = assign_mapper(session_context, Folder, folders)
message_mapper = assign_mapper(session_context, Message, messages)
physmessage_mapper = assign_mapper(session_context, Physmessage,
physmessages)
messageblk_mapper = assign_mapper(session_context, Messageblk, messageblks)
envelope_mapper = assign_mapper(session_context, Envelope, envelopes)


> 
> Yes, I mean to move messages into folders en masse.  For instance, say I
> want to keep folders Inbox, Archive, TwoYearsOld, ThreeYearsOld, etc.  I
> want to run a daily cron job that does the following, based on the
> mail's date header:
> 
>    * Move all unflagged messages older than 30 days from Inbox to Archive

in pseudo code:


set owner_idnr=(select user_idnr from dbmail_users where userid =
'myname' );

set old_mbox=(select mailbox_idnr from dbmail_mailboxes
        where name = 'INBOX' and owner_idnr = @owner_idnr);
set new_mbox=(select mailbox_idnr from dbmail_mailboxes
        where name = 'Archive' and owner_idnr = @owner_idnr);

update dbmail_messages
set mailbox_idnr = @new_mbox
where [EMAIL PROTECTED]
and message_idnr in (
        select message_idnr from dbmail_messages m
        join dbmail_physmessage p on p.id=m.physmessage_id
        where p.internal_date < now() - interval 30 day
        and flagged_flag = 0
);



>    * Move all messages older than 365 days from Archive to TwoYearsOld
>    * Move all messages older than 730 days from TwoYearsOld to
> ThreeYearsOld
>    * . . . (creating folders as needed along the way)
> 
> That's just one example.  But the abstract idea is the same...  I'm
> looking for scripting tools to select X messages and do Y to them (move,
> delete, flag, unflag, etc).  Perhaps some simple things can be done in
> raw SQL.

sql is not a good scripting language, especially if you want to be
compatible with the different engines. Sqlalchemy would be my tool of
choice.


> 
> Regarding vfolders...
>> But you would also require some middleware for managing those views. [...] 
>> If not, we'd have to
>> design our own imap extension 'VFOLDER'.
>>   
> 
> That would be ideal, I suppose... but I would settle for server-side
> management.  Some command-line tool, or even raw SQL script, could
> configure a virtual folder that an IMAP client would see as any other
> folder.  E.g., create a mailbox and populate it with the results of an
> arbitrary SQL query.  Maybe allow for a sieve-style configuration file
> to define vfolders for a given user.  IMAP doesn't have to know a thing,
> does it?  ;-)

But neither does sieve. And sieve is a message parsing filter language.




-- 
  ________________________________________________________________
  Paul Stevens                                      paul at nfg.nl
  NET FACILITIES GROUP                     GPG/PGP: 1024D/11F8CD31
  The Netherlands________________________________http://www.nfg.nl
_______________________________________________
DBmail mailing list
[email protected]
https://mailman.fastxs.nl/mailman/listinfo/dbmail

Reply via email to