Source code for shuup.front.urls

# -*- coding: utf-8 -*-
# This file is part of Shuup.
#
# Copyright (c) 2012-2021, Shuup Commerce Inc. All rights reserved.
#
# This source code is licensed under the OSL-3.0 license found in the
# LICENSE file in the root directory of this source tree.
from __future__ import unicode_literals

from django.conf.urls import url
from django.contrib.auth.decorators import login_required
from django.http.response import HttpResponse
from django.views.decorators.csrf import csrf_exempt
from django.views.i18n import set_language
from itertools import chain

from shuup.apps.provides import get_provide_objects

from .views.basket import BasketView
from .views.category import AllCategoriesView, CategoryView
from .views.checkout import get_checkout_view
from .views.dashboard import DashboardView
from .views.index import IndexView
from .views.misc import (
    force_anonymous_contact,
    force_company_contact,
    force_person_contact,
    stop_impersonating,
    toggle_all_seeing,
)
from .views.order import OrderCompleteView
from .views.payment import ProcessPaymentView
from .views.product import ProductDetailView
from .views.upload import media_upload

# TODO: Check _not_here_yet URLs in this file


def _not_here_yet(request, *args, **kwargs):
    return HttpResponse("Not here yet: %s (%r, %r)" % (request.path, args, kwargs), status=410)


# Use a different js catalog function in front urlpatterns to prevent forcing
# the shop language settings in admin js catalog.
[docs]def front_javascript_catalog_all(request, domain="djangojs"): from shuup.utils.i18n import javascript_catalog_all return javascript_catalog_all(request, domain)
checkout_view = get_checkout_view() urlpatterns = [ url(r"^set-language/$", csrf_exempt(set_language), name="set-language"), url(r"^i18n.js$", front_javascript_catalog_all, name="js-catalog"), url(r"^checkout/$", checkout_view, name="checkout"), url(r"^checkout/(?P<phase>.+)/$", checkout_view, name="checkout"), url(r"^basket/$", csrf_exempt(BasketView.as_view()), name="basket"), url(r"^dashboard/$", login_required(DashboardView.as_view()), name="dashboard"), url(r"^toggle-allseeing/$", login_required(toggle_all_seeing), name="toggle-all-seeing"), url(r"^force-anonymous-contact/$", login_required(force_anonymous_contact), name="force-anonymous-contact"), url(r"^force-company-contact/$", login_required(force_company_contact), name="force-company-contact"), url(r"^force-person-contact/$", login_required(force_person_contact), name="force-person-contact"), url(r"^stop-impersonating/$", login_required(stop_impersonating), name="stop-impersonating"), url(r"^upload-media/$", login_required(media_upload), name="media-upload"), url( r"^order/payment/(?P<pk>.+?)/(?P<key>.+?)/$", csrf_exempt(ProcessPaymentView.as_view()), kwargs={"mode": "payment"}, name="order_process_payment", ), url( r"^order/process-payment/(?P<pk>.+?)/(?P<key>.+?)/$", csrf_exempt(ProcessPaymentView.as_view()), kwargs={"mode": "return"}, name="order_process_payment_return", ), url( r"^order/payment-canceled/(?P<pk>.+?)/(?P<key>.+?)/$", ProcessPaymentView.as_view(), kwargs={"mode": "cancel"}, name="order_payment_canceled", ), url(r"^order/complete/(?P<pk>.+?)/(?P<key>.+?)/$", csrf_exempt(OrderCompleteView.as_view()), name="order_complete"), url(r"^order/verification/(?P<pk>.+?)/(?P<key>.+?)/$", _not_here_yet, name="order_requires_verification"), url( r"^order/get-attachment/(?P<order_pk>\d+)/(?P<key>.+?)/(?P<att_pk>\d+)/", _not_here_yet, name="secure_attachment", ), url(r"^p/(?P<pk>\d+)-(?P<slug>.*)/$", csrf_exempt(ProductDetailView.as_view()), name="product"), url( r"^s/(?P<supplier_pk>\d+)-(?P<pk>\d+)-(?P<slug>.*)/$", csrf_exempt(ProductDetailView.as_view()), name="supplier-product", ), url(r"^c/$", csrf_exempt(AllCategoriesView.as_view()), name="all-categories"), url(r"^c/(?P<pk>\d+)-(?P<slug>.*)/$", csrf_exempt(CategoryView.as_view()), name="category"), ] # TODO: Document `front_urls_pre`, `front_urls` and `front_urls_post`. def _get_extension_urlpatterns(provide_category): return chain(*get_provide_objects(provide_category)) app_name = "shuup" urlpatterns = list( chain( *( _get_extension_urlpatterns("front_urls_pre"), urlpatterns, _get_extension_urlpatterns("front_urls"), [url(r"^$", IndexView.as_view(), name="index")], _get_extension_urlpatterns("front_urls_post"), ) ) )