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
# 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(
"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()
# 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, )
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, )
'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):
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):
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, )
# 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, )
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",
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()
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
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"])
# 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(
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")