Как я могу остановить автоматическую отправку писем подписчикам при создании записи? - PullRequest
3 голосов
/ 28 мая 2019

Всякий раз, когда я создаю запись, как в подписке, или изменяю состояния в записи, отправляется сообщение по электронной почте для подписчиков, присутствующих в записи с журналами.Как остановить автоматическую отправку этих писем, при которых регистрируются журналы, созданные в представлении формы?

Ответы [ 2 ]

1 голос
/ 01 июня 2019

Просто зайдите в настройки-> технические настройки-> подтип-> отключить уведомление для вашей модели.

В вашем случае для продажи подписки, просто отключите модель, установив флажок по умолчанию.

1 голос
/ 28 мая 2019

Вот create() из mail.thread, откуда это берется:

    @api.model
    def create(self, values):
        """ Chatter override :
            - subscribe uid
            - subscribe followers of parent
            - log a creation message
        """
        if self._context.get('tracking_disable'):
            return super(MailThread, self).create(values)

        # subscribe uid unless asked not to
        if not self._context.get('mail_create_nosubscribe'):
            message_follower_ids = values.get('message_follower_ids') or []  # webclient can send None or False
            message_follower_ids += self.env['mail.followers']._add_follower_command(self._name, [], {self.env.user.partner_id.id: None}, {}, force=True)[0]
            values['message_follower_ids'] = message_follower_ids
        thread = super(MailThread, self).create(values)

        # automatic logging unless asked not to (mainly for various testing purpose)
        if not self._context.get('mail_create_nolog'):
            doc_name = self.env['ir.model'].search([('model', '=', self._name)]).read(['name'])[0]['name']
            thread.message_post(body=_('%s created') % doc_name)

        # auto_subscribe: take values and defaults into account
        create_values = dict(values)
        for key, val in self._context.iteritems():
            if key.startswith('default_') and key[8:] not in create_values:
                create_values[key[8:]] = val
        thread.message_auto_subscribe(create_values.keys(), values=create_values)

        # track values
        if not self._context.get('mail_notrack'):
            if 'lang' not in self._context:
                track_thread = thread.with_context(lang=self.env.user.lang)
            else:
                track_thread = thread
            tracked_fields = track_thread._get_tracked_fields(values.keys())
            if tracked_fields:
                initial_values = {thread.id: dict.fromkeys(tracked_fields, False)}
                track_thread.message_track(tracked_fields, initial_values)

        return thread

Как вы можете видеть, есть некоторые контекстные флаги для обработки таких ситуаций.Для вашего требования mail_create_nolog следует использовать:

@api.model
def create(self, vals):
    return super(MyModel, self.with_context(mail_create_nolog=1)).create(vals)
...