fix(newsletter): Pass parent instead of parentfield
while getting successful recipients of a newsletter
This commit is contained in:
parent
e1db9bf653
commit
2c4773ff44
2 changed files with 23 additions and 2 deletions
|
|
@ -124,7 +124,7 @@ class Newsletter(WebsiteGenerator):
|
|||
)
|
||||
|
||||
def get_success_recipients(self) -> List[str]:
|
||||
"""Recipients who have already recieved the newsletter.
|
||||
"""Recipients who have already received the newsletter.
|
||||
|
||||
Couldn't think of a better name ;)
|
||||
"""
|
||||
|
|
@ -132,7 +132,7 @@ class Newsletter(WebsiteGenerator):
|
|||
"Email Queue Recipient",
|
||||
filters={
|
||||
"status": ("in", ["Not Sent", "Sending", "Sent"]),
|
||||
"parentfield": ("in", self.get_linked_email_queue()),
|
||||
"parent": ("in", self.get_linked_email_queue()),
|
||||
},
|
||||
pluck="recipient",
|
||||
)
|
||||
|
|
|
|||
|
|
@ -221,3 +221,24 @@ class TestNewsletter(TestNewsletterMixin, unittest.TestCase):
|
|||
|
||||
newsletter.reload()
|
||||
self.assertEqual(newsletter.email_sent, 0)
|
||||
|
||||
def test_retry_partially_sent_newsletter(self):
|
||||
frappe.db.delete("Email Queue")
|
||||
frappe.db.delete("Email Queue Recipient")
|
||||
frappe.db.delete("Newsletter")
|
||||
|
||||
newsletter = self.get_newsletter()
|
||||
newsletter.send_emails()
|
||||
email_queue_list = [frappe.get_doc("Email Queue", e.name) for e in frappe.get_all("Email Queue")]
|
||||
self.assertEqual(len(email_queue_list), 4)
|
||||
|
||||
# emulate partial send
|
||||
email_queue_list[0].status = "Error"
|
||||
email_queue_list[0].recipients[0].status = "Error"
|
||||
email_queue_list[0].save()
|
||||
newsletter.email_sent = False
|
||||
|
||||
# retry
|
||||
newsletter.send_emails()
|
||||
email_queue_list = [frappe.get_doc("Email Queue", e.name) for e in frappe.get_all("Email Queue")]
|
||||
self.assertEqual(len(email_queue_list), 5)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue