示例#1
0
def test_resolve_product_url():
    shop = factories.get_default_shop()
    product = factories.create_product("product", shop,
                                       factories.get_default_supplier(), "10")
    from shuup.front.template_helpers.urls import model_url
    assert model_url({}, product) == reverse("shuup:product",
                                             kwargs=dict(pk=product.pk,
                                                         slug=product.slug))
示例#2
0
def test_resolve_product_url():
    shop = factories.get_default_shop()
    product = factories.create_product("product", shop,
                                       factories.get_default_supplier(), "10")
    from shuup.front.template_helpers.urls import model_url

    product_url = reverse("shuup:product",
                          kwargs=dict(pk=product.pk, slug=product.slug))
    assert model_url({}, product) == product_url

    # create a new supplier and use it
    # the URL should still point to the default product URL (no supplier specific)
    # because the given supplier doesn't supplies the product
    supplier2 = factories.get_supplier("", shop)
    assert model_url({}, product, supplier=supplier2) == product_url

    shop_product = product.get_shop_instance(shop)
    shop_product.suppliers.add(supplier2)
    # now the url is supplier2 specific
    product_supplier2_url = reverse("shuup:supplier-product",
                                    kwargs=dict(pk=product.pk,
                                                slug=product.slug,
                                                supplier_pk=supplier2.pk))
    assert model_url({}, product, supplier=supplier2) == product_supplier2_url
示例#3
0
def get_model_front_url(request, object):
    """
    Get a frontend URL for an object.

    :param request: Request.
    :type request: HttpRequest
    :param object: A model instance.
    :type object: django.db.models.Model
    :return: URL or None.
    :rtype: str|None
    """
    # TODO: This method could use an extension point for alternative frontends.
    if not object.pk:
        return None
    if "shuup.front" in settings.INSTALLED_APPS:
        # Best effort to use the default frontend for front URLs.
        try:
            from shuup.front.template_helpers.urls import model_url
            return model_url({"request": request}, object)
        except (ValueError, NoReverseMatch):
            pass
    return None
示例#4
0
文件: urls.py 项目: gurch101/shuup
def get_model_front_url(request, object):
    """
    Get a frontend URL for an object.

    :param request: Request
    :type request: HttpRequest
    :param object: A model instance
    :type object: django.db.models.Model
    :return: URL or None
    :rtype: str|None
    """
    # TODO: This method could use an extension point for alternative frontends.
    if not object.pk:
        return None
    if "shuup.front" in settings.INSTALLED_APPS:
        # Best effort to use the default frontend for front URLs.
        try:
            from shuup.front.template_helpers.urls import model_url
            return model_url({"request": request}, object)
        except (ValueError, NoReverseMatch):
            pass
    return None
示例#5
0
def test_resolve_product_url():
    shop = factories.get_default_shop()
    product = factories.create_product("product", shop, factories.get_default_supplier(), "10")
    from shuup.front.template_helpers.urls import model_url
    assert model_url({}, product) == reverse("shuup:product", kwargs=dict(pk=product.pk, slug=product.slug))