diff --git a/oscarapi/serializers/wishlist.py b/oscarapi/serializers/wishlist.py new file mode 100644 index 00000000..b10503d9 --- /dev/null +++ b/oscarapi/serializers/wishlist.py @@ -0,0 +1,46 @@ +import logging +from decimal import Decimal + +from django.utils.translation import ugettext as _ +from django.contrib.auth import get_user_model +from rest_framework import serializers + +from oscar.core.loading import get_model + +from oscarapi.basket import operations +from oscarapi.utils.settings import overridable +from oscarapi.serializers.fields import ( + DrillDownHyperlinkedIdentityField, + DrillDownHyperlinkedRelatedField, +) +from oscarapi.serializers.utils import ( + OscarModelSerializer, + OscarHyperlinkedModelSerializer, + UpdateListSerializer +) +from oscarapi.serializers.fields import TaxIncludedDecimalField +from datetime import datetime, date + + +logger = logging.getLogger(__name__) + + +WishList = get_model('wishlists', 'WishList') +Line = get_model('wishlists', 'Line') + + +class WishlistLineSerializer(serializers.ModelSerializer): + "Serializer for WishLists Lines of loggined user" + + class Meta: + model = Line + fields = '__all__' + + +class WishListSerializer(serializers.ModelSerializer): + "Serializer for WishLists of loggined user" + lines = WishlistLineSerializer(many=True) + + class Meta: + model = WishList + fields = '__all__' \ No newline at end of file diff --git a/oscarapi/urls.py b/oscarapi/urls.py index fb430b0f..e962c5eb 100644 --- a/oscarapi/urls.py +++ b/oscarapi/urls.py @@ -230,6 +230,8 @@ UserAddressDetail.as_view(), name="useraddress-detail", ), + # customer wishlist + path("wishlists/", WishListListView.as_view(), name="customer-wishlist"), ] admin_urlpatterns = [ diff --git a/oscarapi/views/wishlist.py b/oscarapi/views/wishlist.py new file mode 100644 index 00000000..9602a18a --- /dev/null +++ b/oscarapi/views/wishlist.py @@ -0,0 +1,40 @@ + + +from django.utils.translation import ugettext_lazy as _ + +from oscar.apps.basket import signals +from oscar.core.loading import get_model, get_class + +from rest_framework import status, generics, exceptions +from rest_framework.response import Response +from rest_framework.views import APIView +from rest_framework import authentication, permissions + +from oscarapi import permissions +from oscarapi.basket import operations +from oscarapi.utils.loading import get_api_classes, get_api_class +from oscarapi.views.utils import BasketPermissionMixin +from oscarapi import permissions +from django.shortcuts import get_object_or_404, redirect + + +WishList = get_model('wishlists', 'WishList') +Product = get_model('catalogue', 'Product') + +WishListSerializer = get_api_class("serializers.wishlist", "WishListSerializer") + + + +class WishListListView(generics.ListAPIView): + """ + Api for retrieving users wishlists. + + GET: + """ + + serializer_class = WishListSerializer + queryset = WishList.objects.all() + permission_classes = (permissions.IsAuthenticated,) + + def get_queryset(self): + return self.request.user.wishlists.all() \ No newline at end of file