Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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,
        )
Ejemplo n.º 3
0
def mailOrderSent(order):
    """Sends email to customer that the order has been sent.
    """
    shop = IShopManagement(order).getShop()

    # Get mail content
    view = getMultiAdapter((order, order.REQUEST), name="mail-order-sent")
    text = view()

    # Get customer
    customer = order.getCustomer()

    # Get charset
    props = getToolByName(order, "portal_properties").site_properties
    charset = props.getProperty("default_charset")

    # Get sender
    sender = IMailAddresses(shop).getSender()

    sendMultipartMail(context=order,
                      sender=sender,
                      receiver=customer.email,
                      subject="Your order %s has been sent." % order.getId(),
                      text=text,
                      charset=charset)
Ejemplo n.º 4
0
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())
Ejemplo n.º 5
0
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())
Ejemplo n.º 6
0
    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)
 def afterSetUp(self):
     """
     """
     super(TestShopMailAddresses, self).afterSetUp()
     self.addresses = IMailAddresses(self.shop)
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 <*****@*****.**>", "*****@*****.**"))
Ejemplo n.º 9
0
    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)
Ejemplo n.º 10
0
 def afterSetUp(self):
     """
     """
     super(TestShopMailAddresses, self).afterSetUp()
     self.addresses = IMailAddresses(self.shop)
Ejemplo n.º 11
0
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 <*****@*****.**>", "*****@*****.**"))