diff -r c5cadf7e6beb trac/ticket/roadmap.py
a
|
b
|
|
35 | 35 | from trac.util.text import CRLF, exception_to_unicode, to_unicode |
36 | 36 | from trac.util.translation import _, tag_ |
37 | 37 | from trac.ticket.api import TicketSystem |
38 | | from trac.ticket.notification import BatchTicketNotifyEmail |
| 38 | from trac.ticket.notification import send_ticket_event, BatchTicketChangeEvent |
39 | 39 | from trac.ticket.model import Milestone, MilestoneCache, Ticket, \ |
40 | 40 | group_milestones |
41 | 41 | from trac.timeline.api import ITimelineEventProvider |
… |
… |
|
775 | 775 | new_values = {'milestone': retarget_to} |
776 | 776 | comment = comment or \ |
777 | 777 | _("Open tickets retargeted after milestone closed") |
778 | | tn = BatchTicketNotifyEmail(self.env) |
| 778 | event = BatchTicketChangeEvent(retargeted_tickets, None, |
| 779 | req.authname, comment, |
| 780 | new_values, None) |
779 | 781 | try: |
780 | | tn.notify(retargeted_tickets, new_values, comment, None, |
781 | | req.authname) |
| 782 | send_ticket_event(self.env, self.config, event) |
782 | 783 | except Exception as e: |
783 | 784 | self.log.error("Failure sending notification on ticket " |
784 | 785 | "batch change: %s", |
… |
… |
|
827 | 828 | retarget=retarget_to)) |
828 | 829 | new_values = {'milestone': retarget_to} |
829 | 830 | comment = _("Tickets retargeted after milestone deleted") |
830 | | tn = BatchTicketNotifyEmail(self.env) |
| 831 | event = BatchTicketChangeEvent(retargeted_tickets, None, |
| 832 | req.authname, comment, new_values, |
| 833 | None) |
831 | 834 | try: |
832 | | tn.notify(retargeted_tickets, new_values, comment, None, |
833 | | req.authname) |
| 835 | send_ticket_event(self.env, self.config, event) |
834 | 836 | except Exception as e: |
835 | 837 | self.log.error("Failure sending notification on ticket batch " |
836 | 838 | "change: %s", exception_to_unicode(e)) |