ProductStockRecordSerializer,
    AvailabilitySerializer,
    ProductAttributeSerializer,
    ProductAttributeValueSerializer,
    ProductImageSerializer,
) = get_api_classes(
    "serializers.product",
    [
        "CategorySerializer", "ProductLinkSerializer", "ProductSerializer",
        "ProductStockRecordSerializer", "AvailabilitySerializer",
        "ProductAttributeSerializer", "ProductAttributeValueSerializer",
        "ProductImageSerializer"
    ],
)

PriceSerializer = get_api_class("serializers.checkout", "PriceSerializer")

__all__ = ("ProductList", "ProductDetail", "ProductPrice",
           "ProductAvailability")

Product = get_model("catalogue", "Product")
Category = get_model("catalogue", "Category")
StockRecord = get_model("partner", "StockRecord")
ProductAttribute = get_model("catalogue", "ProductAttribute")
ProductAttributeValue = get_model("catalogue", "ProductAttributeValue")
ProductImage = get_model("catalogue", "ProductImage")


class ProductList(generics.ListCreateAPIView):
    queryset = Product.objects.all()
    serializer_class = ProductLinkSerializer
Beispiel #2
0
# pylint: disable=unbalanced-tuple-unpacking
from django.conf import settings
from django.urls import include, path, re_path
from rest_framework.urlpatterns import format_suffix_patterns

from oscarapi.utils.loading import get_api_classes, get_api_class

api_root = get_api_class("views.root", "api_root")
LoginView = get_api_class("views.login", "LoginView")
(
    BasketView,
    AddProductView,
    AddVoucherView,
    ShippingMethodView,
    LineList,
    BasketLineDetail,
) = get_api_classes(
    "views.basket",
    [
        "BasketView",
        "AddProductView",
        "AddVoucherView",
        "ShippingMethodView",
        "LineList",
        "BasketLineDetail",
    ],
)

(UserList, UserDetail) = get_api_classes("views.admin.user",
                                         ["UserList", "UserDetail"])
(StockRecordDetail, PartnerList, PartnerDetail) = get_api_classes(
Beispiel #3
0
    "LineAttributeDetail",
    "OptionList",
    "OptionDetail",
    "CountryList",
    "CountryDetail",
)

Basket = get_model("basket", "Basket")
LineAttribute = get_model("basket", "LineAttribute")
Product = get_model("catalogue", "Product")
Option = get_model("catalogue", "Option")
Country = get_model("address", "Country")
Range = get_model("offer", "Range")

Selector = get_class("partner.strategy", "Selector")
CountrySerializer = get_api_class("serializers.checkout", "CountrySerializer")
(
    BasketSerializer,
    LineAttributeSerializer,
) = get_api_classes(  # pylint: disable=unbalanced-tuple-unpacking
    "serializers.basket", ["BasketSerializer", "LineAttributeSerializer"])
(
    RangeSerializer,
    OptionSerializer,
) = get_api_classes(  # pylint: disable=unbalanced-tuple-unpacking
    "serializers.product", ["RangeSerializer", "OptionSerializer"])


class CountryList(generics.ListAPIView):
    serializer_class = CountrySerializer
    queryset = Country.objects.all()
Beispiel #4
0
# pylint: disable=unbalanced-tuple-unpacking
from rest_framework import generics

from oscar.core.loading import get_model
from oscarapi.utils.loading import get_api_classes, get_api_class

APIAdminPermission = get_api_class("permissions", "APIAdminPermission")
ProductAttributeSerializer, AttributeOptionGroupSerializer = get_api_classes(
    "serializers.product",
    ["ProductAttributeSerializer", "AttributeOptionGroupSerializer"],
)
AdminProductSerializer, AdminCategorySerializer, AdminProductClassSerializer, = get_api_classes(
    "serializers.admin.product",
    [
        "AdminProductSerializer",
        "AdminCategorySerializer",
        "AdminProductClassSerializer",
    ],
)
CategoryList = get_api_class("views.product", "CategoryList")
Product = get_model("catalogue", "Product")
Category = get_model("catalogue", "Category")
ProductAttribute = get_model("catalogue", "ProductAttribute")
ProductClass = get_model("catalogue", "ProductClass")
AttributeOptionGroup = get_model("catalogue", "AttributeOptionGroup")


class ProductAdminList(generics.ListCreateAPIView):
    serializer_class = AdminProductSerializer
    queryset = Product.objects.get_queryset()
    permission_classes = (APIAdminPermission, )
Beispiel #5
0
from django.contrib.auth import get_user_model
from oscarapi.utils.loading import get_api_class
from rest_framework import generics

APIAdminPermission = get_api_class("permissions", "APIAdminPermission")
AdminUserSerializer = get_api_class("serializers.admin.user",
                                    "AdminUserSerializer")
User = get_user_model()


class UserAdminList(generics.ListCreateAPIView):
    """
    List of all users, either frontend or admin users.
    The fields shown in this view can be changed using the ``OSCARAPI_ADMIN_USER_FIELDS``
    setting
    """

    queryset = User.objects.all()
    serializer_class = AdminUserSerializer
    permission_classes = (APIAdminPermission, )


class UserAdminDetail(generics.RetrieveUpdateDestroyAPIView):
    queryset = User.objects.all()
    serializer_class = AdminUserSerializer
    permission_classes = (APIAdminPermission, )
Beispiel #6
0
    'OptionList', 'OptionDetail',
    'CountryList', 'CountryDetail',
    'PartnerList', 'PartnerDetail',
)

Basket = get_model('basket', 'Basket')
LineAttribute = get_model('basket', 'LineAttribute')
Product = get_model('catalogue', 'Product')
StockRecord = get_model('partner', 'StockRecord')
Option = get_model('catalogue', 'Option')
User = auth.get_user_model()
Country = get_model('address', 'Country')
Partner = get_model('partner', 'Partner')

Selector = get_class('partner.strategy', 'Selector')
UserSerializer = get_api_class("serializers.login", "UserSerializer")
CountrySerializer = get_api_class("serializers.checkout", "CountrySerializer")
BasketSerializer, LineAttributeSerializer, StockRecordSerializer = get_api_classes(
    "serializers.basket", [
        "BasketSerializer",
        "LineAttributeSerializer",
        "StockRecordSerializer"
    ],
)
OptionSerializer, PartnerSerializer = get_api_classes(
    "serializers.product", ["OptionSerializer", "PartnerSerializer"]
)

# TODO: For all API's in this file, the permissions should be checked if they
# are sensible.
class CountryList(generics.ListAPIView):
Beispiel #7
0
from oscarapi.views.mixin import PutIsPatchMixin
from oscarapi.views.utils import BasketPermissionMixin

__all__ = ('BasketView', 'LineList', 'LineDetail', 'AddProductView',
           'BasketLineDetail', 'AddVoucherView', 'ShippingMethodView')

Basket = get_model('basket', 'Basket')
Line = get_model('basket', 'Line')
Repository = get_class('shipping.repository', 'Repository')
ShippingAddress = get_model('order', 'ShippingAddress')
(BasketSerializer, VoucherAddSerializer, VoucherSerializer, LineSerializer,
 BasketLineSerializer) = get_api_classes("serializers.basket", [
     "BasketSerializer", "VoucherAddSerializer", "VoucherSerializer",
     "LineSerializer", "BasketLineSerializer"
 ])
AddProductSerializer = get_api_class("serializers.product",
                                     "AddProductSerializer")
ShippingAddressSerializer, ShippingMethodSerializer = get_api_classes(
    "serializers.checkout",
    ["ShippingAddressSerializer", "ShippingMethodSerializer"])


class BasketView(APIView):
    """
    Api for retrieving a user's basket.

    GET:
    Retrieve your basket.
    """
    serializer_class = BasketSerializer

    def get(self, request, format=None):
Beispiel #8
0
from oscarapi.utils.loading import get_api_class
from oscar.core.loading import get_model
from rest_framework import generics

APIAdminPermission = get_api_class("permissions", "APIAdminPermission")
AdminStockRecordSerializer = get_api_class("serializers.admin.partner",
                                           "AdminStockRecordSerializer")
PartnerSerializer = get_api_class("serializers.product", "PartnerSerializer")
StockRecord = get_model("partner", "StockRecord")
Partner = get_model("partner", "Partner")


class StockRecordDetail(generics.RetrieveUpdateDestroyAPIView):
    queryset = StockRecord.objects.all()
    serializer_class = AdminStockRecordSerializer
    permission_classes = (APIAdminPermission, )


class PartnerList(generics.ListCreateAPIView):
    queryset = Partner.objects.all()
    serializer_class = PartnerSerializer
    permission_classes = (APIAdminPermission, )


class PartnerDetail(generics.RetrieveUpdateDestroyAPIView):
    queryset = Partner.objects.all()
    serializer_class = PartnerSerializer
    permission_classes = (APIAdminPermission, )
Beispiel #9
0
# pylint: disable=unbalanced-tuple-unpacking
from rest_framework import generics

from oscar.core.loading import get_model
from oscarapi.utils.loading import get_api_classes, get_api_class

APIAdminPermission = get_api_class("permissions", "APIAdminPermission")
Order = get_model("order", "Order")
OrderLine = get_model("order", "Line")
OrderLineAttribute = get_model("order", "LineAttribute")

AdminOrderSerializer, AdminOrderLineSerializer, AdminOrderLineAttributeSerializer = get_api_classes(  # noqa
    "serializers.admin.order",
    [
        "AdminOrderSerializer",
        "AdminOrderLineSerializer",
        "AdminOrderLineAttributeSerializer",
    ],
)


class OrderAdminList(generics.ListAPIView):
    serializer_class = AdminOrderSerializer
    queryset = Order.objects.get_queryset()
    permission_classes = (APIAdminPermission, )


class OrderAdminDetail(generics.RetrieveDestroyAPIView):
    serializer_class = AdminOrderSerializer
    queryset = Order.objects.get_queryset()
    permission_classes = (APIAdminPermission, )
Beispiel #10
0
from rest_framework import serializers
from rest_framework.exceptions import APIException

from oscar.core.loading import get_model

from oscarapi.serializers.utils import OscarHyperlinkedModelSerializer
from oscarapi.utils.categories import create_from_full_slug
from oscarapi.utils.loading import get_api_classes, get_api_class
from oscarapi.utils.models import fake_autocreated

Product = get_model("catalogue", "Product")
ProductClass = get_model("catalogue", "ProductClass")
ProductAttributeValue = get_model("catalogue", "ProductAttributeValue")
Option = get_model("catalogue", "Option")
AdminStockRecordSerializer = get_api_class(
    "serializers.admin.partner", "AdminStockRecordSerializer"
)
(
    BaseProductSerializer,
    BaseCategorySerializer,
    ProductImageSerializer,
    ProductAttributeSerializer,
    OptionSerializer,
) = get_api_classes(
    "serializers.product",
    [
        "BaseProductSerializer",
        "BaseCategorySerializer",
        "ProductImageSerializer",
        "ProductAttributeSerializer",
        "OptionSerializer",
Beispiel #11
0
    request_allows_access_to_basket,
    store_basket_in_session,
    get_basket
)

from oscarapi.utils.loading import get_api_class
from oscarapi.utils.request import get_domain
from oscarapi.utils.session import (
    session_id_from_parsed_session_uri,
    get_session
)
from oscarapi import models


BasketMiddleware = get_class('basket.middleware', 'BasketMiddleware')
IsApiRequest = get_api_class("utils.request", "IsApiRequest")

logger = logging.getLogger(__name__)

HTTP_SESSION_ID_REGEX = re.compile(
    r'^SID:(?P<type>(?:ANON|AUTH)):(?P<realm>.*?):(?P<session_id>.+?)(?:[-:][0-9a-fA-F]+){0,2}$')


def parse_session_id(request):
    """Parse a session id from the request"""
    unparsed_session_id = request.META.get('HTTP_SESSION_ID', None)
    if unparsed_session_id is not None:
        parsed_session_id = HTTP_SESSION_ID_REGEX.match(unparsed_session_id)
        if parsed_session_id is not None:
            return parsed_session_id.groupdict()
Beispiel #12
0
from rest_framework import serializers, relations
from rest_framework.fields import get_attribute

from oscar.core.loading import get_model, get_class

from oscarapi.utils.loading import get_api_class
from oscarapi.utils.exists import bound_unique_together_get_or_create
from .exceptions import FieldError

logger = logging.getLogger(__name__)
ProductAttribute = get_model("catalogue", "ProductAttribute")
Category = get_model("catalogue", "Category")
create_from_breadcrumbs = get_class("catalogue.categories",
                                    "create_from_breadcrumbs")
entity_internal_value = get_api_class("serializers.hooks",
                                      "entity_internal_value")
attribute_details = operator.itemgetter("code", "value")


class TaxIncludedDecimalField(serializers.DecimalField):
    def __init__(self, excl_tax_field=None, excl_tax_value=None, **kwargs):
        self.excl_tax_field = excl_tax_field
        self.excl_tax_value = excl_tax_value
        super(TaxIncludedDecimalField, self).__init__(**kwargs)

    def get_attribute(self, instance):
        if instance.is_tax_known:
            return super(TaxIncludedDecimalField, self).get_attribute(instance)
        if self.excl_tax_field:
            return get_attribute(instance, (self.excl_tax_field, ))
        return self.excl_tax_value
Beispiel #13
0
Product = get_model("catalogue", "Product")
Range = get_model("offer", "Range")
ProductAttributeValue = get_model("catalogue", "ProductAttributeValue")
ProductImage = get_model("catalogue", "ProductImage")
Option = get_model("catalogue", "Option")
Partner = get_model("partner", "Partner")
ProductClass = get_model("catalogue", "ProductClass")
ProductAttribute = get_model("catalogue", "ProductAttribute")
Category = get_model("catalogue", "Category")
AttributeOption = get_model("catalogue", "AttributeOption")
AttributeOptionGroup = get_model("catalogue", "AttributeOptionGroup")
AttributeValueField, CategoryField, SingleValueSlugRelatedField = get_api_classes(  # pylint: disable=unbalanced-tuple-unpacking
    "serializers.fields",
    ["AttributeValueField", "CategoryField", "SingleValueSlugRelatedField"],
)
StockRecordSerializer = get_api_class("serializers.basket",
                                      "StockRecordSerializer")


class AttributeOptionGroupSerializer(OscarHyperlinkedModelSerializer):
    url = serializers.HyperlinkedIdentityField(
        view_name="admin-attributeoptiongroup-detail")
    options = SingleValueSlugRelatedField(
        many=True,
        required=True,
        slug_field="option",
        queryset=AttributeOption.objects.get_queryset(),
    )

    def create(self, validated_data):
        existing_option = find_existing_attribute_option_group(
            validated_data["name"], validated_data["options"])
Beispiel #14
0
# pylint: disable=unbalanced-tuple-unpacking
from django.conf import settings
from django.urls import include, path, re_path
from rest_framework.urlpatterns import format_suffix_patterns

from oscarapi.utils.loading import get_api_classes, get_api_class

api_root = get_api_class("views.root", "api_root")
(LoginView, UserDetail, RegistrationView) = get_api_classes(
    "views.login", ["LoginView", "UserDetail", "RegistrationView"]
)
(
    BasketView,
    AddProductView,
    AddVoucherView,
    ShippingMethodView,
    LineList,
    BasketLineDetail,
) = get_api_classes(
    "views.basket",
    [
        "BasketView",
        "AddProductView",
        "AddVoucherView",
        "ShippingMethodView",
        "LineList",
        "BasketLineDetail",
    ],
)

(StockRecordDetail, PartnerList, PartnerDetail) = get_api_classes(
Beispiel #15
0
from django.contrib.auth import get_user_model
from oscarapi.utils.loading import get_api_class
from rest_framework import generics

APIAdminPermission = get_api_class("permissions", "APIAdminPermission")
UserSerializer = get_api_class("serializers.login", "UserSerializer")
User = get_user_model()


class UserList(generics.ListCreateAPIView):
    """
    List of all users, either frontend or admin users.
    The fields shown in this view can be changed using the ``OSCARAPI_USER_FIELDS``
    setting
    """

    queryset = User.objects.all()
    serializer_class = UserSerializer
    permission_classes = (APIAdminPermission, )


class UserDetail(generics.RetrieveUpdateDestroyAPIView):
    queryset = User.objects.all()
    serializer_class = UserSerializer
    permission_classes = (APIAdminPermission, )
 def get_login_serializer(self):
     return loading.get_api_class("serializers.login", "LoginSerializer")