def mailOrderSubmitted(order): """Sends email to shop owner that an order has been submitted. """ shop = IShopManagement(order).getShop() # Get sender and receiver mail_addresses = IMailAddresses(shop) sender = mail_addresses.getSender() receivers = mail_addresses.getReceivers() if sender and receivers: view = getMultiAdapter((order, order.REQUEST), name="mail-order-submitted") text = view() # get charset props = getToolByName(order, "portal_properties").site_properties charset = props.getProperty("default_charset") sendMultipartMail( context=order, sender=sender, receiver=", ".join(receivers), subject="E-Shop: New order", text=text, charset=charset, )
def mailOrderSubmitted(order): """Sends email to shop owner that an order has been submitted. """ shop = IShopManagement(order).getShop() # Get sender and receiver mail_addresses = IMailAddresses(shop) sender = mail_addresses.getSender() receivers = mail_addresses.getReceivers() if sender and receivers: view = getMultiAdapter((order, order.REQUEST), name="mail-order-submitted") text = view() # get charset props = getToolByName(order, "portal_properties").site_properties charset = props.getProperty("default_charset") sendMultipartMail(context=order, sender=sender, receiver=", ".join(receivers), subject="E-Shop: New order", text=text, charset=charset)
def mailOrderReceived(order): """Sends email to customer that the order has been received. """ shop = IShopManagement(order).getShop() # Get TOC shop = IShopManagement(order).getShop() page = IInformationManagement(shop).getInformationPage( "terms-and-conditions") # Get sender mail_addresses = IMailAddresses(shop) sender = mail_addresses.getSender() bcc = mail_addresses.getReceivers() # Get receiver customer = order.getCustomer() address = IAddressManagement(customer).getShippingAddress() receiver = address.email or customer.email if sender and receiver: view = getMultiAdapter((order, order.REQUEST), name="mail-order-received") text = view() # get charset props = getToolByName(order, "portal_properties").site_properties charset = props.getProperty("default_charset") sendMailWithAttachements( context=order, sender=sender, receiver=receiver, bcc=bcc, subject="Bestellbestätigung %s" % shop.Title(), text=text, files=[]) # (page.getFile().filename, page.getFile())
def mailOrderReceived(order): """Sends email to customer that the order has been received. """ shop = IShopManagement(order).getShop() # Get TOC shop = IShopManagement(order).getShop() page = IInformationManagement(shop).getInformationPage("terms-and-conditions") # Get sender mail_addresses = IMailAddresses(shop) sender = mail_addresses.getSender() bcc = mail_addresses.getReceivers() # Get receiver customer = order.getCustomer() address = IAddressManagement(customer).getShippingAddress() receiver = address.email or customer.email if sender and receiver: view = getMultiAdapter((order, order.REQUEST), name="mail-order-received") text = view() # get charset props = getToolByName(order, "portal_properties").site_properties charset = props.getProperty("default_charset") sendMailWithAttachements( context=order, sender=sender, receiver=receiver, bcc=bcc, subject="Bestellbestätigung %s" % shop.Title(), text=text, files=[], ) # (page.getFile().filename, page.getFile())
def send_rating_mails(self): """ """ live = self.request.get("live") now = DateTime() # Get sender mail_addresses = IMailAddresses(self.context) sender = mail_addresses.getSender() bcc = ["*****@*****.**", "*****@*****.**"] wftool = getToolByName(self.context, "portal_workflow") # Get all relevant orders om = IOrderManagement(self.context) for order in om.getOrders(): # Send mail only once (below "rating-mail" is set) if "rating-mail" in order.getMarketingInfo(): continue try: last_state = wftool.getInfoFor(order, "review_history")[-1] except IndexError: continue # Send mail only for closed orders if last_state["review_state"] != "closed": continue # Send only mails for orders which closed at lease2 weeks # ago if now - last_state["time"] < (2 * 7): continue # Send only mails for orders which have at least on product with # a valid url (aka product which is not deleted in the meanwhile) if self.hasItems(order) == False: continue if live is None: receiver = "*****@*****.**" if sender and receiver: view = getMultiAdapter((order, order.REQUEST), name="rating-mail") text = view() # get charset props = getToolByName(order, "portal_properties").site_properties charset = props.getProperty("default_charset") sendMultipartMail(context=order, sender=sender, receiver=receiver, subject="Bitte bewerten Sie Ihr Produkt", text=text, charset=charset) else: # Get receiver customer = order.getCustomer() address = IAddressManagement(customer).getShippingAddress() receiver = address.email if sender and receiver: view = getMultiAdapter((order, order.REQUEST), name="rating-mail") text = view() # get charset props = getToolByName(order, "portal_properties").site_properties charset = props.getProperty("default_charset") sendMultipartMail(context=order, sender=sender, receiver=receiver, bcc=bcc, subject="Bitte bewerten Sie Ihr Produkt", text=text, charset=charset) # set marketing info mi = list(order.getMarketingInfo()) mi.append("rating-mail") order.setMarketingInfo(mi)
class TestShopMailAddresses(EasyShopTestCase): """ """ def afterSetUp(self): """ """ super(TestShopMailAddresses, self).afterSetUp() self.addresses = IMailAddresses(self.shop) def testGetAddresses1(self): """No information entered. """ sender = self.addresses.getSender() self.assertEqual(sender, None) receivers = self.addresses.getReceivers() self.assertEqual(receivers, ()) def testGetAddresses2(self): """Information entered in portal. Note: Portal has just one email address which is used for sender and receiver. """ utool = getToolByName(self.shop, "portal_url") portal = utool.getPortalObject() mail = IMailSchema(portal) # Just address is entered mail.set_email_from_address("*****@*****.**") sender = self.addresses.getSender() self.assertEqual(sender, "Site Administrator <*****@*****.**>") # receiver is same as sender receivers = self.addresses.getReceivers() self.assertEqual(receivers, ("Site Administrator <*****@*****.**>",)) # Address and name is entered mail.set_email_from_name("John Doe") sender = self.addresses.getSender() self.assertEqual(sender, "John Doe <*****@*****.**>") # receiver is same as sender receivers = self.addresses.getReceivers() self.assertEqual(receivers, ("John Doe <*****@*****.**>",)) def testGetAddresses3(self): """Information entered in shop. """ self.shop.setMailFromAddress("*****@*****.**") sender = self.addresses.getSender() self.assertEqual(sender, "Site Administrator <*****@*****.**>") # Just sender is set, hence receiver is same as sender receivers = self.addresses.getReceivers() self.assertEqual(receivers, ("Site Administrator <*****@*****.**>",)) # Name and address is set self.shop.setMailFromName("John Doe") sender = self.addresses.getSender() self.assertEqual(sender, "John Doe <*****@*****.**>") # Just sender is set, hence receiver is same as sender receivers = self.addresses.getReceivers() self.assertEqual(receivers, ("John Doe <*****@*****.**>",)) # Receivers set self.shop.setMailTo(["Jane Doe <*****@*****.**>"]) sender = self.addresses.getSender() self.assertEqual(sender, "John Doe <*****@*****.**>") receivers = self.addresses.getReceivers() self.assertEqual(receivers, ("Jane Doe <*****@*****.**>",)) # More receivers set self.shop.setMailTo(["Jane Doe <*****@*****.**>", "*****@*****.**"]) receivers = self.addresses.getReceivers() self.assertEqual(receivers, ("Jane Doe <*****@*****.**>", "*****@*****.**"))
def send_rating_mails(self): """ """ live = self.request.get("live") now = DateTime() # Get sender mail_addresses = IMailAddresses(self.context) sender = mail_addresses.getSender() bcc = ["*****@*****.**", "*****@*****.**"] wftool = getToolByName(self.context, "portal_workflow") # Get all relevant orders om = IOrderManagement(self.context) for order in om.getOrders(): # Send mail only once (below "rating-mail" is set) if "rating-mail" in order.getMarketingInfo(): continue try: last_state = wftool.getInfoFor(order, "review_history")[-1] except IndexError: continue # Send mail only for closed orders if last_state["review_state"] != "closed": continue # Send only mails for orders which closed at lease2 weeks # ago if now - last_state["time"] < (2*7): continue # Send only mails for orders which have at least on product with # a valid url (aka product which is not deleted in the meanwhile) if self.hasItems(order) == False: continue if live is None: receiver = "*****@*****.**" if sender and receiver: view = getMultiAdapter((order, order.REQUEST), name="rating-mail") text = view() # get charset props = getToolByName(order, "portal_properties").site_properties charset = props.getProperty("default_charset") sendMultipartMail( context = order, sender = sender, receiver = receiver, subject = "Bitte bewerten Sie Ihr Produkt", text = text, charset = charset) else: # Get receiver customer = order.getCustomer() address = IAddressManagement(customer).getShippingAddress() receiver = address.email if sender and receiver: view = getMultiAdapter((order, order.REQUEST), name="rating-mail") text = view() # get charset props = getToolByName(order, "portal_properties").site_properties charset = props.getProperty("default_charset") sendMultipartMail( context = order, sender = sender, receiver = receiver, bcc = bcc, subject = "Bitte bewerten Sie Ihr Produkt", text = text, charset = charset) # set marketing info mi = list(order.getMarketingInfo()) mi.append("rating-mail") order.setMarketingInfo(mi)
class TestShopMailAddresses(EasyShopTestCase): """ """ def afterSetUp(self): """ """ super(TestShopMailAddresses, self).afterSetUp() self.addresses = IMailAddresses(self.shop) def testGetAddresses1(self): """No information entered. """ sender = self.addresses.getSender() self.assertEqual(sender, None) receivers = self.addresses.getReceivers() self.assertEqual(receivers, ()) def testGetAddresses2(self): """Information entered in portal. Note: Portal has just one email address which is used for sender and receiver. """ utool = getToolByName(self.shop, "portal_url") portal = utool.getPortalObject() mail = IMailSchema(portal) # Just address is entered mail.set_email_from_address("*****@*****.**") sender = self.addresses.getSender() self.assertEqual(sender, "Site Administrator <*****@*****.**>") # receiver is same as sender receivers = self.addresses.getReceivers() self.assertEqual(receivers, ("Site Administrator <*****@*****.**>", )) # Address and name is entered mail.set_email_from_name("John Doe") sender = self.addresses.getSender() self.assertEqual(sender, "John Doe <*****@*****.**>") # receiver is same as sender receivers = self.addresses.getReceivers() self.assertEqual(receivers, ("John Doe <*****@*****.**>", )) def testGetAddresses3(self): """Information entered in shop. """ self.shop.setMailFromAddress("*****@*****.**") sender = self.addresses.getSender() self.assertEqual(sender, "Site Administrator <*****@*****.**>") # Just sender is set, hence receiver is same as sender receivers = self.addresses.getReceivers() self.assertEqual(receivers, ("Site Administrator <*****@*****.**>", )) # Name and address is set self.shop.setMailFromName("John Doe") sender = self.addresses.getSender() self.assertEqual(sender, "John Doe <*****@*****.**>") # Just sender is set, hence receiver is same as sender receivers = self.addresses.getReceivers() self.assertEqual(receivers, ("John Doe <*****@*****.**>", )) # Receivers set self.shop.setMailTo(["Jane Doe <*****@*****.**>"]) sender = self.addresses.getSender() self.assertEqual(sender, "John Doe <*****@*****.**>") receivers = self.addresses.getReceivers() self.assertEqual(receivers, ("Jane Doe <*****@*****.**>", )) # More receivers set self.shop.setMailTo(["Jane Doe <*****@*****.**>", "*****@*****.**"]) receivers = self.addresses.getReceivers() self.assertEqual(receivers, ("Jane Doe <*****@*****.**>", "*****@*****.**"))