Odoo Help

Welcome!

This community is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.

0

Inherit mail.message..., is posible?

By
Antonio
on 3/13/15, 3:11 PM 978 views

I want to make a module that change the email_from in some scenarios when i click "Send a message" in social. I try inherit from mail.message to override _get_default_from but i can't. Anybody can help me?

Thanks a lot.

1

Cyril Gaspard (GEM)

--Cyril Gaspard (GEM)--
4136
| 5 6 8
Paris, France
--Cyril Gaspard (GEM)--

Forum contributor since 2008

Cyril Gaspard (GEM)
On 3/14/15, 9:07 AM

Hi,

override create or default_get  function:


from openerp.osv import orm

class MailMessage(orm.Model):

    _inherit = 'mail.message'

   

    def _update_email_from(self, cr, uid, message_id, context=None):

        email_from = ....

        self.write(cr, uid, [message_id], {'email_from': email_from}, context=context)


    def create(self, cr, uid, vals, context=None):
        context = dict(context or {})

        message_id = super(MailMessage, self).create(cr, uid, vals, context=context)

        self._update_email_from(cr, uid, message_id, context=context)

        return message_id

Bye

0
Antonio
On 3/14/15, 9:32 AM

That is was i tried but i have this error. Mail is installed and mail.message exits...

Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/werkzeug/serving.py", line 177, in run_wsgi
    execute(self.server.app)
  File "/usr/lib/python2.7/dist-packages/werkzeug/serving.py", line 165, in execute
    application_iter = app(environ, start_response)
  File "/opt/odoo/openerp/service/server.py", line 281, in app
    return self.app(e, s)
  File "/opt/odoo/openerp/service/wsgi_server.py", line 216, in application
    return application_unproxied(environ, start_response)
  File "/opt/odoo/openerp/service/wsgi_server.py", line 202, in application_unproxied
    result = handler(environ, start_response)
  File "/opt/odoo/openerp/http.py", line 1280, in __call__
    return self.dispatch(environ, start_response)
  File "/opt/odoo/openerp/http.py", line 1254, in __call__
    return self.app(environ, start_wrapped)
  File "/usr/lib/python2.7/dist-packages/werkzeug/wsgi.py", line 588, in __call__
    return self.app(environ, start_response)
  File "/opt/odoo/openerp/http.py", line 1412, in dispatch
    ir_http = request.registry['ir.http']
  File "/opt/odoo/openerp/http.py", line 339, in registry
    return openerp.modules.registry.RegistryManager.get(self.db) if self.db else None
  File "/opt/odoo/openerp/modules/registry.py", line 335, in get
    update_module)
  File "/opt/odoo/openerp/modules/registry.py", line 366, in new
    openerp.modules.load_modules(registry._db, force_demo, status, update_module)
  File "/opt/odoo/openerp/modules/loading.py", line 351, in load_modules
    force, status, report, loaded_modules, update_module)
  File "/opt/odoo/openerp/modules/loading.py", line 255, in load_marked_modules
    loaded, processed = load_module_graph(cr, graph, progressdict, report=report, skip_modules=loaded_modules, perform_checks=perform_checks)
  File "/opt/odoo/openerp/modules/loading.py", line 152, in load_module_graph
    models = registry.load(cr, package)
  File "/opt/odoo/openerp/modules/registry.py", line 162, in load
    model = cls._build_model(self, cr)
  File "/opt/odoo/openerp/models.py", line 592, in _build_model
    original_module = pool[name]._original_module if name in parents else cls._module
  File "/opt/odoo/openerp/modules/registry.py", line 101, in __getitem__
    return self.models[model_name]
KeyError: 'mail.message'

 

Just now, your code:

 

from openerp.osv import orm

class MailMessage(orm.Model):

    _inherit = 'mail.message'

 

    def _update_email_from(self, cr, uid, message_id, context=None):

        email_from = 'test@example.dom'

        self.write(cr, uid, [message_id], {'email_from': email_from}, context=context)


    def create(self, cr, uid, vals, context=None):
        context = dict(context or {})

        message_id = super(MailMessage, self).create(cr, uid, vals, context=context)

        self._update_email_from(cr, uid, message_id, context=context)

        return message_id

 

do you have in __opener__py module email in depends section and verify in log when you restart your openerp server if the module email is well installed. Else I don't know where is the problem ...

Cyril Gaspard (GEM)
on 3/14/15, 10:49 AM

Finally works... a stupid misspelling. Thanks

Antonio
on 3/14/15, 3:55 PM

Your Answer

Please try to give a substantial answer. If you wanted to comment on the question or answer, just use the commenting tool. Please remember that you can always revise your answers - no need to answer the same question twice. Also, please don't forget to vote - it really helps to select the best questions and answers!

About This Community

This community is for professionals and enthusiasts of our products and services. Read Guidelines

Question tools

1 follower(s)

Stats

Asked: 3/13/15, 3:11 PM
Seen: 978 times
Last updated: 3/16/15, 8:10 AM