Exemple #1
0
    def testPercent(self):
        """Test percent tax without shipping"""
        cache_delete()
        tax = config_get("TAX", "MODULE")
        tax.update("satchmo.tax.modules.percent")
        pcnt = config_get("TAX", "PERCENT")
        pcnt.update("10")
        shp = config_get("TAX", "TAX_SHIPPING")
        shp.update(False)

        order = make_test_order("US", "TX")

        order.recalculate_total(save=False)
        price = order.total
        subtotal = order.sub_total
        tax = order.tax

        self.assertEqual(subtotal, Decimal("100.00"))
        self.assertEqual(tax, Decimal("10.00"))
        # 100 + 10 shipping + 10 tax
        self.assertEqual(price, Decimal("120.00"))

        taxes = order.taxes.all()
        self.assertEqual(1, len(taxes))
        self.assertEqual(taxes[0].tax, Decimal("10.00"))
        self.assertEqual(taxes[0].description, r"10%")
Exemple #2
0
    def testDefault(self):

        c = config_get("mv2", "c1")
        self.assertEqual(c.value, [1, 2])

        c.update([1, 2, 3])
        self.assertEqual(c.value, [1, 2, 3])
Exemple #3
0
    def testTwice(self):
        """Config items should respond False to duplicate requests to update."""

        c = config_get("test2", "s1")
        c.update("test1")

        self.assertFalse(c.update("test1"))
Exemple #4
0
    def testDuplicateAdminAreas(self):
        """Test the situation where we have multiple adminareas with the same name"""
        cache_delete()
        tax = config_get("TAX", "MODULE")
        tax.update("satchmo.tax.modules.area")

        order = make_test_order("GB", "Manchester")

        order.recalculate_total(save=False)
        price = order.total
        subtotal = order.sub_total
        tax = order.tax

        self.assertEqual(subtotal, Decimal("100.00"))
        self.assertEqual(tax, Decimal("20.00"))
        # 100 + 10 shipping + 20 tax
        self.assertEqual(price, Decimal("130.00"))

        taxes = order.taxes.all()
        self.assertEqual(2, len(taxes))
        t1 = taxes[0]
        t2 = taxes[1]
        self.assertTrue("Shipping" in (t1.description, t2.description))
        if t1.description == "Shipping":
            tship = t1
            tmain = t2
        else:
            tship = t2
            tmain = t1
        self.assertEqual(tmain.tax, Decimal("20.00"))
        self.assertEqual(tship.tax, Decimal("0.00"))
Exemple #5
0
def product_feed(request):
    products = Product.objects.filter(active=True)
    payment_modules = config_choice_values("PAYMENT", "MODULES")

    payment_types = []
    payment_notes = []
    for type, module in payment_modules:
        payment_type = unicode(config_get(type, "LABEL"))
        g_payment_type = get_google_card_type(payment_type)
        if g_payment_type:
            payment_types.append(g_payment_type)
        else:
            payment_notes.append(payment_type)
        for type, choice in config_choice_values(type, "CREDITCHOICES"):
            g_payment_type = get_google_card_type(choice)
            if g_payment_type:
                payment_types.append(g_payment_type)
            else:
                payment_notes.append(choice)

    # Make the list unique
    set(payment_types)
    set(payment_notes)

    context = {
        "products": products,
        "payment_types": payment_types,
        "payment_notes": payment_notes
    }
    return render_to_response("product_feed.xml", context, context_instance=RequestContext(request))
Exemple #6
0
    def testTwice(self):
        """Config items should respond False to duplicate requests to update."""

        c = config_get("test2", "s1")
        c.update("test1")

        self.assertFalse(c.update("test1"))
Exemple #7
0
    def testDefault(self):

        c = config_get("mv2", "c1")
        self.assertEqual(c.value, [1, 2])

        c.update([1, 2, 3])
        self.assertEqual(c.value, [1, 2, 3])
Exemple #8
0
    def testRequiresValue(self):
        c = config_get("SHOP", "groupchoice")
        self.assertEqual(c.value, [])

        keys = [cfg.key for cfg in self.g1]
        self.assertEqual(keys, [])

        c2 = config_get("SHOP", "groupchoice2")
        c2.update("bar")

        keys = [cfg.key for cfg in self.g1]
        self.assertEqual(keys, ["c2"])

        c.update(["groupreq"])

        keys = [cfg.key for cfg in self.g1]
        self.assertEqual(keys, ["c1", "c2", "c3"])
Exemple #9
0
    def testRequiresValue(self):
        c = config_get("SHOP", "groupchoice")
        self.assertEqual(c.value, [])

        keys = [cfg.key for cfg in self.g1]
        self.assertEqual(keys, [])

        c2 = config_get("SHOP", "groupchoice2")
        c2.update("bar")

        keys = [cfg.key for cfg in self.g1]
        self.assertEqual(keys, ["c2"])

        c.update(["groupreq"])

        keys = [cfg.key for cfg in self.g1]
        self.assertEqual(keys, ["c1", "c2", "c3"])
Exemple #10
0
    def testAreaCountries(self):
        """Test Area tax module"""
        cache_delete()
        tax = config_get("TAX", "MODULE")
        tax.update("satchmo.tax.modules.area")

        order = make_test_order("DE", "", include_non_taxed=True)

        order.recalculate_total(save=False)
        price = order.total
        subtotal = order.sub_total
        tax = order.tax

        self.assertEqual(subtotal, Decimal("105.00"))
        self.assertEqual(tax, Decimal("20.00"))
        # 100 + 10 shipping + 20 tax
        self.assertEqual(price, Decimal("135.00"))

        taxes = order.taxes.all()
        self.assertEqual(2, len(taxes))
        t1 = taxes[0]
        t2 = taxes[1]
        self.assertTrue("Shipping" in (t1.description, t2.description))
        if t1.description == "Shipping":
            tship = t1
            tmain = t2
        else:
            tship = t2
            tmain = t1
        self.assertEqual(tmain.tax, Decimal("20.00"))
        self.assertEqual(tship.tax, Decimal("0.00"))

        order = make_test_order("CH", "")

        order.recalculate_total(save=False)
        price = order.total
        subtotal = order.sub_total
        tax = order.tax

        self.assertEqual(subtotal, Decimal("100.00"))
        self.assertEqual(tax, Decimal("16.00"))
        # 100 + 10 shipping + 16 tax
        self.assertEqual(price, Decimal("126.00"))

        taxes = order.taxes.all()
        self.assertEqual(2, len(taxes))
        t1 = taxes[0]
        t2 = taxes[1]
        self.assertTrue("Shipping" in (t1.description, t2.description))
        if t1.description == "Shipping":
            tship = t1
            tmain = t2
        else:
            tship = t2
            tmain = t1

        self.assertEqual(tmain.tax, Decimal("16.00"))
        self.assertEqual(tship.tax, Decimal("0.00"))
Exemple #11
0
    def test_checkout_minimums(self):
        """
        Validate we can add some items to the cart
        """
        min_order = config_get("PAYMENT", "MINIMUM_ORDER")

        # start with no min.
        min_order.update("0.00")
        response = self.client.get(prefix + "/product/dj-rocks/")
        self.assertContains(response,
                            "Django Rocks shirt",
                            count=2,
                            status_code=200)
        response = self.client.post(
            prefix + "/cart/add/",
            {
                "productname": "dj-rocks",
                "1": "L",
                "2": "BL",
                "quantity": 2
            },
        )
        self.assertRedirects(response,
                             prefix + "/cart/",
                             status_code=302,
                             target_status_code=200)
        response = self.client.get(prefix + "/cart/")
        self.assertContains(response,
                            "Django Rocks shirt (Large/Blue)",
                            count=2,
                            status_code=200)
        response = self.client.get(reverse("satchmo_checkout-step1"))
        self.assertContains(response, "Billing Address", status_code=200)

        # now check for min order not met
        min_order.update("100.00")
        response = self.client.get(reverse("satchmo_checkout-step1"))
        self.assertContains(response,
                            "This store requires a minimum order",
                            count=1,
                            status_code=200)

        # add a bunch of shirts, to make the min order
        response = self.client.post(
            prefix + "/cart/add/",
            {
                "productname": "dj-rocks",
                "1": "L",
                "2": "BL",
                "quantity": 10
            },
        )
        self.assertRedirects(response,
                             prefix + "/cart/",
                             status_code=302,
                             target_status_code=200)
        response = self.client.get(reverse("satchmo_checkout-step1"))
        self.assertContains(response, "Billing Address", status_code=200)
def payment_label(value):
    """convert a payment key into its translated text"""

    payments = config_get("PAYMENT", "MODULES")
    for mod in payments.value:
        config = config_get_group(mod)
        if config.KEY.value == value:
            return translation.ugettext(str(config.LABEL))
    return value.capitalize()
Exemple #13
0
    def testSetAndReset(self):
        """Test setting one value and then updating"""
        c = config_get("test2", "s1")
        c.update("test1")

        self.assertEqual(c.value, "test1")

        # should be true, since it is an update
        self.assertTrue(c.update("test2"))
        self.assertEqual(c.value, "test2")
Exemple #14
0
    def testSetAndReset(self):
        """Test setting one value and then updating"""
        c = config_get("test2", "s1")
        c.update("test1")

        self.assertEqual(c.value, "test1")

        # should be true, since it is an update
        self.assertTrue(c.update("test2"))
        self.assertEqual(c.value, "test2")
Exemple #15
0
    def testSimpleRequires(self):
        v = config_value("req1", "bool2")
        self.assertTrue(v)

        keys = [cfg.key for cfg in self.g1]
        self.assertEqual(keys, ["c2", "c3", "bool1", "bool2"])

        c = config_get("req1", "bool1")
        c.update(True)

        keys = [cfg.key for cfg in self.g1]
        self.assertEqual(keys, ["c1", "c2", "c3", "bool1", "bool2"])
Exemple #16
0
    def testRequiresSingleValue(self):
        v = config_value("SHOP", "valchoices2")
        self.assertEqual(v, "a")

        keys = [cfg.key for cfg in self.g2]
        self.assertEqual(keys, ["c1"])

        c = config_get("SHOP", "valchoices2")
        c.update("b")

        keys = [cfg.key for cfg in self.g2]
        self.assertEqual(keys, ["c2"])
Exemple #17
0
    def testRequiresSingleValue(self):
        v = config_value("SHOP", "valchoices2")
        self.assertEqual(v, "a")

        keys = [cfg.key for cfg in self.g2]
        self.assertEqual(keys, ["c1"])

        c = config_get("SHOP", "valchoices2")
        c.update("b")

        keys = [cfg.key for cfg in self.g2]
        self.assertEqual(keys, ["c2"])
Exemple #18
0
    def testSimpleRequires(self):
        v = config_value("req1", "bool2")
        self.assertTrue(v)

        keys = [cfg.key for cfg in self.g1]
        self.assertEqual(keys, ["c2", "c3", "bool1", "bool2"])

        c = config_get("req1", "bool1")
        c.update(True)

        keys = [cfg.key for cfg in self.g1]
        self.assertEqual(keys, ["c1", "c2", "c3", "bool1", "bool2"])
Exemple #19
0
    def testAddPreregisteredChoice(self):
        """Test that we can register choices before the config is actually set up."""
        config_add_choice("ctg1", "c1", ("a", "Item A"))
        config_add_choice("ctg1", "c1", ("b", "Item B"))
        config_add_choice("ctg1", "c1", ("c", "Item C"))

        g1 = ConfigurationGroup("ctg1", "Choice 1", ordering=1000)
        config_register(StringValue(g1, "c1"))

        c = config_get("ctg1", "c1")

        self.assertEqual(c.choices, [("a", "Item A"), ("b", "Item B"), ("c", "Item C")])
Exemple #20
0
    def testAddPreregisteredChoice(self):
        """Test that we can register choices before the config is actually set up."""
        config_add_choice("ctg1", "c1", ("a", "Item A"))
        config_add_choice("ctg1", "c1", ("b", "Item B"))
        config_add_choice("ctg1", "c1", ("c", "Item C"))

        g1 = ConfigurationGroup("ctg1", "Choice 1", ordering=1000)
        config_register(StringValue(g1, "c1"))

        c = config_get("ctg1", "c1")

        self.assertEqual(c.choices, [("a", "Item A"), ("b", "Item B"),
                                     ("c", "Item C")])
Exemple #21
0
    def testPercentShipping(self):
        """Test percent tax with shipping"""
        cache_delete()
        tax = config_get("TAX", "MODULE")
        tax.update("satchmo.tax.modules.percent")
        pcnt = config_get("TAX", "PERCENT")
        pcnt.update("10")
        shp = config_get("TAX", "TAX_SHIPPING")
        shp.update(False)

        order = make_test_order("US", "TX")
        shp.update(True)
        order.recalculate_total(save=False)
        price = order.total
        tax = order.tax

        self.assertEqual(tax, Decimal("11.00"))
        # 100 + 10 shipping + 11 tax
        self.assertEqual(price, Decimal("121.00"))

        taxes = order.taxes.all()
        self.assertEqual(2, len(taxes))
        t1 = taxes[0]
        t2 = taxes[1]
        self.assertTrue("Shipping" in (t1.description, t2.description))
        if t1.description == "Shipping":
            tship = t1
            tmain = t2
        else:
            tship = t2
            tmain = t1

        self.assertEqual(tmain.tax, Decimal("10.00"))
        self.assertEqual(tmain.description, r"10%")
        self.assertEqual(tship.tax, Decimal("1.00"))
        self.assertEqual(tship.description, "Shipping")
Exemple #22
0
    def testRequiresValue(self):
        v = config_value("SHOP", "valchoices")
        self.assertEqual(v, ["foo"])

        g = config_get_group("reqval")

        keys = [cfg.key for cfg in g]
        self.assertEqual(keys, ["c1", "c3"])

        c = config_get("SHOP", "valchoices")
        c.update(["foo", "bar"])

        g = config_get_group("reqval")
        keys = [cfg.key for cfg in g]
        self.assertEqual(keys, ["c1", "c2", "c3"])
Exemple #23
0
    def testSimpleRequiresChoices(self):

        v = config_value("SHOP", "rc1")
        self.assertEqual(v, ["c1"])

        g = config_get_group("req2")
        keys = [cfg.key for cfg in g]
        self.assertEqual(keys, ["c1", "c3"])

        c = config_get("SHOP", "rc1")
        c.update(["c1", "c2"])

        g = config_get_group("req2")
        keys = [cfg.key for cfg in g]
        self.assertEqual(keys, ["c1", "c2", "c3"])
Exemple #24
0
def make_urlpatterns():
    patterns = []
    for key in config_value("PAYMENT", "MODULES"):
        try:
            cfg = config_get(key, "MODULE")
        except SettingNotSet:
            log.warning("Could not find module %s, skipping", key)
            continue
        module_name = cfg.editor_value
        url_module = "%s.urls" % module_name
        namespace = module_name.split(".")[-1]
        patterns.append(
            path(config_value(key, "URL_BASE"), [url_module, module_name, namespace])
        )
    return patterns
Exemple #25
0
    def testRequiresValue(self):
        v = config_value("SHOP", "valchoices")
        self.assertEqual(v, ["foo"])

        g = config_get_group("reqval")

        keys = [cfg.key for cfg in g]
        self.assertEqual(keys, ["c1", "c3"])

        c = config_get("SHOP", "valchoices")
        c.update(["foo", "bar"])

        g = config_get_group("reqval")
        keys = [cfg.key for cfg in g]
        self.assertEqual(keys, ["c1", "c2", "c3"])
Exemple #26
0
    def testSimpleRequiresChoices(self):

        v = config_value("SHOP", "rc1")
        self.assertEqual(v, ["c1"])

        g = config_get_group("req2")
        keys = [cfg.key for cfg in g]
        self.assertEqual(keys, ["c1", "c3"])

        c = config_get("SHOP", "rc1")
        c.update(["c1", "c2"])

        g = config_get_group("req2")
        keys = [cfg.key for cfg in g]
        self.assertEqual(keys, ["c1", "c2", "c3"])
Exemple #27
0
def make_urlpatterns():
    patterns = []
    for key in config_value("PAYMENT", "MODULES"):
        try:
            cfg = config_get(key, "MODULE")
        except SettingNotSet:
            log.warning("Could not find module %s, skipping", key)
            continue
        module_name = cfg.editor_value
        url_module = "%s.urls" % module_name
        namespace = module_name.split(".")[-1]
        patterns.append(
            path(config_value(key, "URL_BASE"),
                 [url_module, module_name, namespace]))
    return patterns
Exemple #28
0
    def setUp(self):
        self.US = Country.objects.get(iso2_code__iexact="US")
        self.site = Site.objects.get_current()
        tax = config_get("TAX", "MODULE")
        tax.update("satchmo.tax.modules.no")
        c = Contact(
            first_name="Jim",
            last_name="Tester",
            role="Customer",
            email="*****@*****.**",
        )
        c.save()
        ad = AddressBook(
            contact=c,
            description="home",
            street1="test",
            state="OR",
            city="Portland",
            country=self.US,
            is_default_shipping=True,
            is_default_billing=True,
        )
        ad.save()
        o = Order(contact=c, shipping_cost=Decimal("6.00"), site=self.site)
        o.save()
        small = Order(contact=c, shipping_cost=Decimal("6.00"), site=self.site)
        small.save()

        p = Product.objects.get(slug="neat-book-soft")
        price = p.unit_price
        item1 = OrderItem(
            order=o, product=p, quantity=1, unit_price=price, line_item_price=price
        )
        item1.save()

        item1s = OrderItem(
            order=small, product=p, quantity=1, unit_price=price, line_item_price=price
        )
        item1s.save()

        p = Product.objects.get(slug="neat-book-hard")
        price = p.unit_price
        item2 = OrderItem(
            order=o, product=p, quantity=1, unit_price=price, line_item_price=price
        )
        item2.save()
        self.order = o
        self.small = small
Exemple #29
0
def config_tax():
    TAX_MODULE = config_get("TAX", "MODULE")
    TAX_MODULE.add_choice(("satchmo.tax.modules.area", _("By Country/Area")))
    TAX_GROUP = config_get_group("TAX")

    _tax_classes = []
    ship_default = ""

    try:
        for tax in TaxClass.objects.all():
            _tax_classes.append((tax.title, tax))
            if "ship" in tax.title.lower():
                ship_default = tax.title
    except:
        log.warn(
            "Ignoring database error retrieving tax classes - OK if you are in syncdb."
        )

    if ship_default == "" and len(_tax_classes) > 0:
        ship_default = _tax_classes[0][0]

    config_register(
        BooleanValue(
            TAX_GROUP,
            "TAX_SHIPPING",
            description=_("Tax Shipping?"),
            requires=TAX_MODULE,
            requiresvalue="satchmo.tax.modules.area",
            default=False,
        )
    )

    config_register(
        StringValue(
            TAX_GROUP,
            "TAX_CLASS",
            description=_("TaxClass for shipping"),
            help_text=_("Select a TaxClass that should be applied for shipments."),
            default=ship_default,
            choices=_tax_classes,
        )
    )
Exemple #30
0
    def test_checkout_minimums(self):
        """
        Validate we can add some items to the cart
        """
        min_order = config_get("PAYMENT", "MINIMUM_ORDER")

        # start with no min.
        min_order.update("0.00")
        response = self.client.get(prefix + "/product/dj-rocks/")
        self.assertContains(response, "Django Rocks shirt", count=2, status_code=200)
        response = self.client.post(
            prefix + "/cart/add/",
            {"productname": "dj-rocks", "1": "L", "2": "BL", "quantity": 2},
        )
        self.assertRedirects(
            response, prefix + "/cart/", status_code=302, target_status_code=200
        )
        response = self.client.get(prefix + "/cart/")
        self.assertContains(
            response, "Django Rocks shirt (Large/Blue)", count=2, status_code=200
        )
        response = self.client.get(reverse("satchmo_checkout-step1"))
        self.assertContains(response, "Billing Address", status_code=200)

        # now check for min order not met
        min_order.update("100.00")
        response = self.client.get(reverse("satchmo_checkout-step1"))
        self.assertContains(
            response, "This store requires a minimum order", count=1, status_code=200
        )

        # add a bunch of shirts, to make the min order
        response = self.client.post(
            prefix + "/cart/add/",
            {"productname": "dj-rocks", "1": "L", "2": "BL", "quantity": 10},
        )
        self.assertRedirects(
            response, prefix + "/cart/", status_code=302, target_status_code=200
        )
        response = self.client.get(reverse("satchmo_checkout-step1"))
        self.assertContains(response, "Billing Address", status_code=200)
Exemple #31
0
def config_tax():
    TAX_MODULE = config_get("TAX", "MODULE")
    TAX_MODULE.add_choice(("satchmo.tax.modules.area", _("By Country/Area")))
    TAX_GROUP = config_get_group("TAX")

    _tax_classes = []
    ship_default = ""

    try:
        for tax in TaxClass.objects.all():
            _tax_classes.append((tax.title, tax))
            if "ship" in tax.title.lower():
                ship_default = tax.title
    except:
        log.warn(
            "Ignoring database error retrieving tax classes - OK if you are in syncdb."
        )

    if ship_default == "" and len(_tax_classes) > 0:
        ship_default = _tax_classes[0][0]

    config_register(
        BooleanValue(
            TAX_GROUP,
            "TAX_SHIPPING",
            description=_("Tax Shipping?"),
            requires=TAX_MODULE,
            requiresvalue="satchmo.tax.modules.area",
            default=False,
        ))

    config_register(
        StringValue(
            TAX_GROUP,
            "TAX_CLASS",
            description=_("TaxClass for shipping"),
            help_text=_(
                "Select a TaxClass that should be applied for shipments."),
            default=ship_default,
            choices=_tax_classes,
        ))
Exemple #32
0
    def testDeletesDefault(self):
        c = config_get("test2", "s3")
        # false because it isn't saving a default value
        self.assertFalse(c.update(10))

        self.assertTrue(c.update(20))
        self.assertEqual(c.value, 20)
        try:
            s = c.setting
        except SettingNotSet:
            self.fail("Should have a setting now")

        # now delete and go back to no setting by setting the default
        self.assertTrue(c.update(10))
        self.assertEqual(c.value, 10)

        try:
            s = c.setting
            self.fail("Should throw SettingNotSet")
        except SettingNotSet:
            pass
Exemple #33
0
    def testDeletesDefault(self):
        c = config_get("test2", "s3")
        # false because it isn't saving a default value
        self.assertFalse(c.update(10))

        self.assertTrue(c.update(20))
        self.assertEqual(c.value, 20)
        try:
            s = c.setting
        except SettingNotSet:
            self.fail("Should have a setting now")

        # now delete and go back to no setting by setting the default
        self.assertTrue(c.update(10))
        self.assertEqual(c.value, 10)

        try:
            s = c.setting
            self.fail("Should throw SettingNotSet")
        except SettingNotSet:
            pass
Exemple #34
0
 def testSettingDefault(self):
     c = config_get("test2", "s2")
     self.assertEqual(c.value, 10)
Exemple #35
0
    def testSetSetting(self):
        c = config_get("test2", "s1")
        c.update("test")

        self.assertEqual(c.value, "test")
        self.assertEqual(c.setting.value, "test")
Exemple #36
0
    def test_custom_product(self):
        """
        Verify that the custom product is working as expected.
        """
        pm = config_get("PRODUCT", "PRODUCT_TYPES")
        pm.update(
            [
                "product::ConfigurableProduct",
                "product::ProductVariation",
                "product::CustomProduct",
                "product::SubscriptionProduct",
            ]
        )

        response = self.client.get(prefix + "/")
        self.assertContains(response, "Computer", count=1)
        response = self.client.get(prefix + "/product/satchmo-computer/")
        self.assertContains(response, "Memory", count=1)
        self.assertContains(response, "Case", count=1)
        self.assertContains(response, "Monogram", count=1)
        response = self.client.post(
            prefix + "/cart/add/",
            {
                "productname": "satchmo-computer",
                "5": "1.5gb",
                "6": "mid",
                "custom_monogram": "CBM",
                "quantity": 1,
            },
        )
        self.assertRedirects(
            response, prefix + "/cart/", status_code=302, target_status_code=200
        )
        response = self.client.get(prefix + "/cart/")
        self.assertContains(
            response, '/satchmo-computer/">satchmo computer', status_code=200
        )
        self.assertContains(
            response,
            smart_str("%s168.00" % config_value("CURRENCY", "CURRENCY")),
            count=4,
        )
        self.assertContains(
            response,
            smart_str("Monogram: CBM  %s10.00" % config_value("CURRENCY", "CURRENCY")),
            count=1,
        )
        self.assertContains(
            response,
            smart_str(
                "Case - External Case: Mid  %s10.00"
                % config_value("CURRENCY", "CURRENCY")
            ),
            count=1,
        )
        self.assertContains(
            response,
            smart_str(
                "Memory - Internal RAM: 1.5 GB  %s25.00"
                % config_value("CURRENCY", "CURRENCY")
            ),
            count=1,
        )
        response = self.client.post(
            url("satchmo_checkout-step1"), get_step1_post_data(self.US)
        )
        self.assertRedirects(
            response,
            url("DUMMY_satchmo_checkout-step2"),
            status_code=302,
            target_status_code=200,
        )
        data = {
            "credit_type": "Visa",
            "credit_number": "4485079141095836",
            "month_expires": "1",
            "year_expires": "2012",
            "ccv": "552",
            "shipping": "FlatRate",
        }
        response = self.client.post(url("DUMMY_satchmo_checkout-step2"), data)
        self.assertRedirects(
            response,
            url("DUMMY_satchmo_checkout-step3"),
            status_code=302,
            target_status_code=200,
        )
        response = self.client.get(url("DUMMY_satchmo_checkout-step3"))
        self.assertContains(
            response,
            smart_str(
                "satchmo computer - %s168.00" % config_value("CURRENCY", "CURRENCY")
            ),
            count=1,
            status_code=200,
        )
        response = self.client.post(
            url("DUMMY_satchmo_checkout-step3"), {"process": "True"}
        )
        self.assertRedirects(
            response,
            url("DUMMY_satchmo_checkout-success"),
            status_code=302,
            target_status_code=200,
        )
        self.assertEqual(len(mail.outbox), 1)
Exemple #37
0
 def testSettingProperty(self):
     c = config_get("test3", "s2")
     s = c.setting
     self.assertTrue(s.value, 100)
Exemple #38
0
from django.utils.translation import ugettext_lazy as _
from satchmo.configuration.functions import (
    config_get,
    config_get_group,
    config_register,
)

from satchmo.configuration.values import DecimalValue, BooleanValue


TAX_MODULE = config_get("TAX", "MODULE")
TAX_MODULE.add_choice(("satchmo.tax.modules.percent", _("Percent Tax")))
TAX_GROUP = config_get_group("TAX")

config_register(
    DecimalValue(
        TAX_GROUP,
        "PERCENT",
        description=_("Percent tax"),
        requires=TAX_MODULE,
        requiresvalue="satchmo.tax.modules.percent",
    )
)

config_register(
    BooleanValue(
        TAX_GROUP,
        "TAX_SHIPPING",
        description=_("Tax Shipping?"),
        requires=TAX_MODULE,
        requiresvalue="satchmo.tax.modules.percent",
Exemple #39
0
from satchmo.configuration.functions import config_get, config_register_list
from satchmo.configuration.values import (
    BooleanValue,
    ConfigurationGroup,
    ModuleValue,
    StringValue,
)
from django.utils.translation import ugettext_lazy as _

PAYMENT_MODULES = config_get("PAYMENT", "MODULES")
PAYMENT_MODULES.add_choice(("PAYMENT_PAYPAL", _("Paypal Payment Settings")))

PAYMENT_GROUP = ConfigurationGroup(
    "PAYMENT_PAYPAL",
    _("Paypal Payment Settings"),
    requires=PAYMENT_MODULES,
    ordering=101,
)

config_register_list(
    BooleanValue(
        PAYMENT_GROUP,
        "LIVE",
        description=_("Accept real payments"),
        help_text=_("False if you want to be in test mode"),
        default=False,
    ),
    StringValue(PAYMENT_GROUP,
                "WEBHOOK_ID",
                description=_("Live Webhook ID"),
                default="xxx"),
Exemple #40
0
    def testSetSetting(self):
        c = config_get("test2", "s1")
        c.update("test")

        self.assertEqual(c.value, "test")
        self.assertEqual(c.setting.value, "test")
Exemple #41
0
    def testSave(self):

        c = config_get("m1", "c1")
        c.update([1, 2])
        self.assertEqual(c.value, [1, 2])
Exemple #42
0
 def testSettingDefault(self):
     c = config_get("test2", "s2")
     self.assertEqual(c.value, 10)
Exemple #43
0
from django.utils.translation import ugettext_lazy as _
from satchmo.configuration.functions import config_register_list, config_get
from satchmo.configuration.values import (
    BooleanValue,
    ConfigurationGroup,
    ModuleValue,
    StringValue,
)

PAYMENT_MODULES = config_get("PAYMENT", "MODULES")
PAYMENT_MODULES.add_choice(("PAYMENT_GIFTCERTIFICATE", "Gift Certificates"))

PRODUCTS = config_get("PRODUCT", "PRODUCT_TYPES")
PRODUCTS.add_choice(("giftcertificate::GiftCertificateProduct", _("Gift Certificate")))

PAYMENT_GROUP = ConfigurationGroup(
    "PAYMENT_GIFTCERTIFICATE", _("Gift Certificate Settings"), requires=PAYMENT_MODULES
)

config_register_list(
    BooleanValue(
        PAYMENT_GROUP,
        "SSL",
        description=_("Use SSL for the checkout pages?"),
        default=False,
    ),
    StringValue(
        PAYMENT_GROUP,
        "CHARSET",
        description=_("Character Set"),
        default="BCDFGHKPRSTVWXYZbcdfghkprstvwxyz23456789",
Exemple #44
0
    def testModule(self):
        c = config_get("modules", "test")
        c.update("satchmo")

        self.assertTrue(hasattr(self.c.value, "get_version"))
Exemple #45
0
 def testSettingProperty(self):
     c = config_get("test3", "s2")
     s = c.setting
     self.assertTrue(s.value, 100)
Exemple #46
0
from django.utils.translation import ugettext_lazy as _
from satchmo.configuration.functions import (
    config_get,
    config_get_group,
    config_register_list,
)
from satchmo.configuration.values import DecimalValue, StringValue

SHIP_MODULES = config_get("SHIPPING", "MODULES")
SHIP_MODULES.add_choice(("satchmo.shipping.modules.flat", _("Flat rate")))
SHIPPING_GROUP = config_get_group("SHIPPING")

config_register_list(
    DecimalValue(
        SHIPPING_GROUP,
        "FLAT_RATE",
        description=_("Flat shipping"),
        requires=SHIP_MODULES,
        requiresvalue="satchmo.shipping.modules.flat",
        default="4.00",
    ),
    StringValue(
        SHIPPING_GROUP,
        "FLAT_SERVICE",
        description=_("Flat Shipping Service"),
        help_text=_("Shipping service used with Flat rate shipping"),
        requires=SHIP_MODULES,
        requiresvalue="satchmo.shipping.modules.flat",
        default="U.S. Mail",
    ),
    StringValue(
Exemple #47
0
    def testModule(self):
        c = config_get("modules", "test")
        c.update("satchmo")

        self.assertTrue(hasattr(self.c.value, "get_version"))
Exemple #48
0
    def testSave(self):

        c = config_get("m1", "c1")
        c.update([1, 2])
        self.assertEqual(c.value, [1, 2])
Exemple #49
0
from django.utils.translation import ugettext_lazy as _


from satchmo.configuration.functions import config_get, config_register_list
from satchmo.configuration.values import (
    BooleanValue,
    ConfigurationGroup,
    ModuleValue,
    StringValue,
)

PAYMENT_MODULES = config_get("PAYMENT", "MODULES")
PAYMENT_MODULES.add_choice(("PAYMENT_AUTOSUCCESS", _("Auto Success Module")))

PAYMENT_GROUP = ConfigurationGroup(
    "PAYMENT_AUTOSUCCESS",
    _("Payment Auto Success Module Settings"),
    requires=PAYMENT_MODULES,
    ordering=100,
)

config_register_list(
    BooleanValue(
        PAYMENT_GROUP,
        "LIVE",
        description=_("Accept real payments"),
        help_text=_("False if you want to be in test mode"),
        default=False,
    ),
    ModuleValue(
        PAYMENT_GROUP,
Exemple #50
0
from django.utils.translation import ugettext_lazy as _

from satchmo.configuration.functions import (
    config_get,
    config_get_group,
    config_register_list,
)
from satchmo.configuration.values import DecimalValue, StringValue


SHIP_MODULES = config_get("SHIPPING", "MODULES")

# No need to add the choice, since it is in by default
# SHIP_MODULES.add_choice(('satchmo.shipping.modules.per', _('Per piece')))

SHIPPING_GROUP = config_get_group("SHIPPING")

config_register_list(
    DecimalValue(
        SHIPPING_GROUP,
        "PER_RATE",
        description=_("Per item price"),
        requires=SHIP_MODULES,
        requiresvalue="satchmo.shipping.modules.per",
        default="4.00",
    ),
    StringValue(
        SHIPPING_GROUP,
        "PER_SERVICE",
        description=_("Per Item Shipping Service"),
        help_text=_("Shipping service used with per item shipping"),
Exemple #51
0
    def testAddChoice(self):

        config_add_choice("m1", "c1", (4, "four"))
        c = config_get("m1", "c1")
        self.assertEqual(c.choices,
                         ((1, "one"), (2, "two"), (3, "three"), (4, "four")))
Exemple #52
0
    def test_custom_product(self):
        """
        Verify that the custom product is working as expected.
        """
        pm = config_get("PRODUCT", "PRODUCT_TYPES")
        pm.update([
            "product::ConfigurableProduct",
            "product::ProductVariation",
            "product::CustomProduct",
            "product::SubscriptionProduct",
        ])

        response = self.client.get(prefix + "/")
        self.assertContains(response, "Computer", count=1)
        response = self.client.get(prefix + "/product/satchmo-computer/")
        self.assertContains(response, "Memory", count=1)
        self.assertContains(response, "Case", count=1)
        self.assertContains(response, "Monogram", count=1)
        response = self.client.post(
            prefix + "/cart/add/",
            {
                "productname": "satchmo-computer",
                "5": "1.5gb",
                "6": "mid",
                "custom_monogram": "CBM",
                "quantity": 1,
            },
        )
        self.assertRedirects(response,
                             prefix + "/cart/",
                             status_code=302,
                             target_status_code=200)
        response = self.client.get(prefix + "/cart/")
        self.assertContains(response,
                            '/satchmo-computer/">satchmo computer',
                            status_code=200)
        self.assertContains(
            response,
            smart_str("%s168.00" % config_value("CURRENCY", "CURRENCY")),
            count=4,
        )
        self.assertContains(
            response,
            smart_str("Monogram: CBM  %s10.00" %
                      config_value("CURRENCY", "CURRENCY")),
            count=1,
        )
        self.assertContains(
            response,
            smart_str("Case - External Case: Mid  %s10.00" %
                      config_value("CURRENCY", "CURRENCY")),
            count=1,
        )
        self.assertContains(
            response,
            smart_str("Memory - Internal RAM: 1.5 GB  %s25.00" %
                      config_value("CURRENCY", "CURRENCY")),
            count=1,
        )
        response = self.client.post(url("satchmo_checkout-step1"),
                                    get_step1_post_data(self.US))
        self.assertRedirects(
            response,
            url("DUMMY_satchmo_checkout-step2"),
            status_code=302,
            target_status_code=200,
        )
        data = {
            "credit_type": "Visa",
            "credit_number": "4485079141095836",
            "month_expires": "1",
            "year_expires": "2012",
            "ccv": "552",
            "shipping": "FlatRate",
        }
        response = self.client.post(url("DUMMY_satchmo_checkout-step2"), data)
        self.assertRedirects(
            response,
            url("DUMMY_satchmo_checkout-step3"),
            status_code=302,
            target_status_code=200,
        )
        response = self.client.get(url("DUMMY_satchmo_checkout-step3"))
        self.assertContains(
            response,
            smart_str("satchmo computer - %s168.00" %
                      config_value("CURRENCY", "CURRENCY")),
            count=1,
            status_code=200,
        )
        response = self.client.post(url("DUMMY_satchmo_checkout-step3"),
                                    {"process": "True"})
        self.assertRedirects(
            response,
            url("DUMMY_satchmo_checkout-success"),
            status_code=302,
            target_status_code=200,
        )
        self.assertEqual(len(mail.outbox), 1)
Exemple #53
0
    def testAddChoice(self):

        config_add_choice("m1", "c1", (4, "four"))
        c = config_get("m1", "c1")
        self.assertEqual(c.choices, ((1, "one"), (2, "two"), (3, "three"), (4, "four")))