From 797b1e31f4cf37b9dbb12b130c882aebc13febc1 Mon Sep 17 00:00:00 2001 From: Holger Brunn Date: Tue, 27 Jan 2015 15:27:54 +0100 Subject: [PATCH] [IMP] make manual attach wizard usable again --- .../wizard/attach_mail_manually.py | 73 +++++++++---------- .../wizard/attach_mail_manually.xml | 29 ++++---- 2 files changed, 50 insertions(+), 52 deletions(-) diff --git a/fetchmail_attach_from_folder/wizard/attach_mail_manually.py b/fetchmail_attach_from_folder/wizard/attach_mail_manually.py index 0c22f0c86..6e24a5234 100644 --- a/fetchmail_attach_from_folder/wizard/attach_mail_manually.py +++ b/fetchmail_attach_from_folder/wizard/attach_mail_manually.py @@ -19,22 +19,17 @@ # along with this program. If not, see . # ############################################################################## - -from openerp.osv import fields -from openerp.osv.orm import TransientModel +from openerp import fields, models import logging -logger = logging.getLogger(__name__) -class attach_mail_manually(TransientModel): +class attach_mail_manually(models.TransientModel): _name = 'fetchmail.attach.mail.manually' - _columns = { - 'folder_id': fields.many2one('fetchmail.server.folder', 'Folder', - readonly=True), - 'mail_ids': fields.one2many( - 'fetchmail.attach.mail.manually.mail', 'wizard_id', 'Emails'), - } + folder_id = fields.Many2one( + 'fetchmail.server.folder', 'Folder', readonly=True) + mail_ids = fields.One2many( + 'fetchmail.attach.mail.manually.mail', 'wizard_id', 'Emails') def default_get(self, cr, uid, fields_list, context=None): if context is None: @@ -54,15 +49,13 @@ class attach_mail_manually(TransientModel): None, 'FLAGGED' if folder.flag_nonmatching else 'UNDELETED') if result != 'OK': - logger.error('Could not search mailbox %s on %s' % ( + logging.error('Could not search mailbox %s on %s' % ( folder.path, folder.server_id.name)) continue - attach_mail_manually_mail._columns['object_id'].selection = [ - (folder.model_id.model, folder.model_id.name)] for msgid in msgids[0].split(): result, msgdata = connection.fetch(msgid, '(RFC822)') if result != 'OK': - logger.error('Could not fetch %s in %s on %s' % ( + logging.error('Could not fetch %s in %s on %s' % ( msgid, folder.path, folder.server_id.name)) continue mail_message = self.pool.get('mail.thread').message_parse( @@ -74,7 +67,7 @@ class attach_mail_manually(TransientModel): 'msgid': msgid, 'subject': mail_message.get('subject', ''), 'date': mail_message.get('date', ''), - 'object_id': folder.model_id.model + ',False' + 'object_id': '%s,-1' % folder.model_id.model, })) connection.close() @@ -87,7 +80,7 @@ class attach_mail_manually(TransientModel): connection.select(this.folder_id.path) result, msgdata = connection.fetch(mail.msgid, '(RFC822)') if result != 'OK': - logger.error('Could not fetch %s in %s on %s' % ( + logging.error('Could not fetch %s in %s on %s' % ( mail.msgid, this.folder_id.path, this.server)) continue @@ -104,26 +97,32 @@ class attach_mail_manually(TransientModel): connection.close() return {'type': 'ir.actions.act_window_close'} + def fields_view_get(self, cr, user, view_id=None, view_type='form', + context=None, toolbar=False, submenu=False): + result = super(attach_mail_manually, self).fields_view_get( + cr, user, view_id, view_type, context, toolbar, submenu) + + tree = result['fields']['mail_ids']['views']['tree'] + for folder in self.pool['fetchmail.server.folder'].browse( + cr, user, [context.get('default_folder_id')], context): + tree['fields']['object_id']['selection'] = [ + (folder.model_id.model, folder.model_id.name) + ] + + return result -class attach_mail_manually_mail(TransientModel): + +class attach_mail_manually_mail(models.TransientModel): _name = 'fetchmail.attach.mail.manually.mail' - _columns = { - 'wizard_id': fields.many2one('fetchmail.attach.mail.manually', - readonly=True), - 'msgid': fields.char('Message id', size=16, readonly=True), - 'subject': fields.char('Subject', size=128, readonly=True), - 'date': fields.datetime('Date', readonly=True), - 'object_id': fields.reference( - 'Object', - selection=lambda self, cr, uid, context: [ - (m.model, m.name) - for m in self.pool.get('ir.model').browse( - cr, uid, - self.pool.get('ir.model').search(cr, uid, []), - context - ) - ], - size=128, - ), - } + wizard_id = fields.Many2one( + 'fetchmail.attach.mail.manually', readonly=True) + msgid = fields.Char('Message id', readonly=True) + subject = fields.Char('Subject', readonly=True) + date = fields.Datetime('Date', readonly=True) + object_id = fields.Reference( + lambda self: [ + (m.model, m.name) + for m in self.env['ir.model'].search([]) + ], + string='Object') diff --git a/fetchmail_attach_from_folder/wizard/attach_mail_manually.xml b/fetchmail_attach_from_folder/wizard/attach_mail_manually.xml index fbe82eea7..320ccaf4a 100644 --- a/fetchmail_attach_from_folder/wizard/attach_mail_manually.xml +++ b/fetchmail_attach_from_folder/wizard/attach_mail_manually.xml @@ -5,22 +5,21 @@ fetchmail.attach.mail.manually fetchmail.attach.mail.manually -
- - - - - - - - - - - - + + + + + + + + + + +