odoo_dev 开发培训作业:图书管理系统
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

48 linhas
1.5KB

  1. from odoo import api, exceptions, fields, models
  2. import logging
  3. _logger = logging.getLogger(__name__)
  4. class CheckoutMassMessage(models.TransientModel):
  5. _name = 'library.checkout.massmessage'
  6. _description = 'Send Message to Borrowers'
  7. checkout_ids = fields.Many2many(
  8. 'library.checkout',
  9. string='Checkouts')
  10. message_subject = fields.Char()
  11. message_body = fields.Html()
  12. @api.model
  13. def default_get(self, field_names):
  14. defaults = super().default_get(field_names)
  15. checkout_ids = self.env.context.get('active_ids')
  16. defaults['checkout_ids'] = checkout_ids
  17. return defaults
  18. def button_send(self):
  19. self.ensure_one()
  20. if not self.checkout_ids:
  21. raise exceptions.UserError(
  22. '请至少选择一条借阅记录来发送消息!')
  23. if not self.message_body:
  24. raise exceptions.UserError(
  25. '请填写要发送的消息体!')
  26. for checkout in self.checkout_ids:
  27. checkout.message_post(
  28. body=self.message_body,
  29. subject=self.message_subject,
  30. subtype='mail.mt_comment',
  31. )
  32. # 发送消息会出现日志记录
  33. _logger.info(
  34. 'Posted %d messages to Checkouts: %s',
  35. len(self.checkout_ids),
  36. str(self.checkout_ids),
  37. )
  38. # 调试级别日志
  39. _logger.debug(
  40. 'Message on %d to followers: %s',
  41. checkout.id,
  42. checkout.message_follower_ids)
  43. return True
上海开阖软件有限公司 沪ICP备12045867号-1