Skip to Content
Menu
This question has been flagged
1 Reply
21455 Views

good afternoon, I'm trying a module to eliminate followers, but when I select the codes of 0-8, I get this error, what can be wrong?
thanks,

Odoo Server Error
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 654, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 312, in _handle_exception
    raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
  File "/usr/lib/python3/dist-packages/odoo/tools/pycompat.py", line 87, in reraise
    raise value
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 696, in dispatch
    result = self._call_function(**self.params)
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 344, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "/usr/lib/python3/dist-packages/odoo/service/model.py", line 97, in wrapper
    return f(dbname, *args, **kwargs)
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 337, in checked_call
    result = self.endpoint(*a, **kw)
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 939, in __call__
    return self.method(*args, **kw)
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 517, in response_wrap
    response = f(*args, **kw)
  File "/usr/lib/python3/dist-packages/odoo/addons/web/controllers/main.py", line 966, in call_button
    action = self._call_kw(model, method, args, {})
  File "/usr/lib/python3/dist-packages/odoo/addons/web/controllers/main.py", line 954, in _call_kw
    return call_kw(request.env[model], method, args, kwargs)
  File "/usr/lib/python3/dist-packages/odoo/api.py", line 749, in call_kw
    return _call_kw_multi(method, model, args, kwargs)
  File "/usr/lib/python3/dist-packages/odoo/api.py", line 736, in _call_kw_multi
    result = method(recs, *args, **kwargs)
  File "/usr/lib/python3/dist-packages/odoo/addons/mail/wizard/mail_compose_message.py", line 193, in action_send_mail
    self.send_mail()
  File "/mnt/extra-addons/prt_followers_partners/models/mail.py", line 92, in send_mail
    super(PRTMailComposer, self).send_mail(auto_commit=auto_commit)
  File "/usr/lib/python3/dist-packages/odoo/addons/mail/wizard/mail_compose_message.py", line 267, in send_mail
    ActiveModel.browse(res_id).message_post(**post_params)
  File "/usr/lib/python3/dist-packages/odoo/addons/sale/models/sale.py", line 643, in message_post
    return super(SaleOrder, self.with_context(mail_post_autofollow=True)).message_post(**kwargs)
  File "/usr/lib/python3/dist-packages/odoo/addons/mail/models/mail_thread.py", line 2007, in message_post
    self.message_subscribe(list(partner_to_subscribe))
  File "/mnt/extra-addons/prt_followers_partners/models/mail.py", line 23, in message_subscribe
    subtype_ids=subtype_ids, force=force)
TypeError: message_subscribe() got an unexpected keyword argument 'force'

class PRTMailThread(models.AbstractModel):

    _name = "mail.thread"

    _inherit = "mail.thread"

 

    """

     Check subscribers

     """

    @api.multi

    def message_subscribe(self, partner_ids=None, channel_ids=None, subtype_ids=None, force=True):

        # Check whom to subscribe

        subscribe_option = self._context.get('subscribe_option', False)

         # Everyone

        if not subscribe_option or subscribe_option == '0':

            return super(PRTMailThread, self).message_subscribe(partner_ids=partner_ids, channel_ids=channel_ids,

                                                                subtype_ids=subtype_ids, force=force)

        # Only me

        if subscribe_option == '8':

            return super(PRTMailThread, self).message_subscribe(partner_ids=[self.env.user.partner_id.id], channel_ids=channel_ids, subtype_ids=subtype_ids, force=force)

        # No one

       if subscribe_option == '9':

            return True

         # Some users

        new_ids = []

        partners = self.env['res.partner'].sudo().browse(partner_ids)

         # Scan partners

        for partner in partners:

            users = partner.user_ids

            if not users or len(users) == 0:

                continue

             # Remove users that are not Employees if such and option was selected

            if subscribe_option in ['3', '4']:

                for user in users:

                    if not user.has_group('base.group_user'):

                        users -= user

                if len(users) == 0:

                    continue

             # Users only

            if subscribe_option in ['1', '3']:

                new_ids.append(partner.id)

             # Users of same company

            elif subscribe_option in ['2', '4']:

                same_company = True

                our_company_id = self.env.user.company_id.id

                for company in users.mapped('company_id'):

                    if company.id != our_company_id:

                        same_company = False

                        break

                if same_company:

                    new_ids.append(partner.id)

         return super(PRTMailThread, self).message_subscribe(partner_ids=new_ids, channel_ids=channel_ids,

                                                            subtype_ids=subtype_ids, force=force)

 ########################

# Mail.Compose Message #

########################

class PRTMailComposer(models.TransientModel):

    _inherit = 'mail.compose.message'

    _name = 'mail.compose.message'

    subscribe_option = fields.Selection([

        ('0', 'Everyone'),

        ('1', 'Users only'),

        ('2', 'Users of current company only'),

        ('3', 'Employees only'),

        ('4', 'Employees of current company only'),

        ('8', 'Only me'),

        ('9', 'No one'),

    ], string="Auto subscribe", required=True,

        default='0',

        help="Choose partners to be subscribed to this thread")

 

# -- Send mail

    @api.multi

    def send_mail(self, auto_commit=False):

        self = self.with_context(subscribe_option=self.subscribe_option)

        super(PRTMailComposer, self).send_mail(auto_commit=auto_commit)

 


Avatar
Discard

please provide odoo versions because mail API change a log during version to versions

Author

release: odoo12

Best Answer

Hello, the problem as the error describes you are calling the  method message_subscribe with an extra parameter force:

TypeError: message_subscribe() got an unexpected keyword argument 'force'

you need to change your line:

    def message_subscribe(self, partner_ids=None, channel_ids=None, subtype_ids=None, force=True):

to:

    def message_subscribe(self, partner_ids=None, channel_ids=None, subtype_ids=None):


here is the definition of that method so you can understan better what's going on:

https://github.com/odoo/odoo/blob/13.0/addons/mail/models/mail_thread.py#L2693

hope it helps.

Avatar
Discard
Author

thanks,

Related Posts Replies Views Activity
3
Nov 23
15311
3
Nov 24
21075
1
Apr 23
4569
2
Dec 22
5497
1
Nov 22
2661