예제 #1
0
 def get(self, request):
     notifiations = Notification.objects.filter(user=request.user)
     page = request.GET.get("page", 1)
     queryset, number = queryset_paginator(notifiations, page)
     serializer = NotificationSerializer(queryset,
                                         many=True,
                                         context={"request": request})
     return Response({"list": serializer.data, "pages_num": number})
예제 #2
0
    def get(self, request):

        if not request.user.user_type == "customer":
            return Response(
                {"error": _("Sorry You haven't favourite product list")},
                status=status.HTTP_401_UNAUTHORIZED)
        products = request.user.favourite_products.all()
        page = request.GET.get("page", 1)
        queryset, number = queryset_paginator(products, page)
        serializer = FavouriteProductListSerializer(
            queryset, many=True, context={"user": request.user})
        return Response({"list": serializer.data, "pages_num": number})
예제 #3
0
    def get(self, request):
        qs = (request.GET).dict()
        location = None
        if "location" in qs:
            location = qs["location"]
            del qs["location"]
        if "page" in qs:
            del qs["page"]
        filter_list = ['first_name__startswith', 'products__sub_category__name']
        for key in qs:
            if not (key in filter_list):
                del key
        sellers = Seller.objects.filter(**qs).distinct()
        lat1 = None
        if location:
            try:
                lat1, lon1 = location.split(',')
            except:
                return Response({"error": "please enter a valid location format"}, status=status.HTTP_400_BAD_REQUEST)
        else:
            if request.user.pk:
                try:
                    user_location = UserLocation.objects.get(
                        user=request.user, is_default=True)
                except:
                    return Response({"error": _("You don't have any locations yet")},
                                    status=status.HTTP_400_BAD_REQUEST)
                lat1, lon1 = user_location.lat, user_location.lon
        seller_list = []
        if lat1:
            try:
                configuration = Configuration.get_solo()
                radius = configuration.radius
            except:
                radius = 2000000
            for seller in sellers:
                try:
                   seller_location = seller.locations.get(is_default=True)
                   lat, lon = (seller_location.lat, seller_location.lon)
                   distance = get_distance(lat1, lon1, lat, lon)
                   if distance == -1 or ((distance is not None) and (distance <= radius)):
                        seller.calculated_distance = distance
                        seller_list.append(seller)
                except:
                    pass    
        else:
            seller_list = sellers
        page = request.GET.get("page", 1)
        queryset, number = queryset_paginator(seller_list, page)

        serializer = SellerSerializer(
            queryset, many=True, context={"user": request.user})
        return Response({"list": serializer.data, "pages_num": number})
예제 #4
0
 def get(self, request):
     orders = Order.objects.filter(order_owner=request.user)
     page = request.GET.get("page", 1)
     queryset, number = queryset_paginator(orders, page)
     serializer = CustomerOrderSerializer(queryset, many=True)
     return Response({"list": serializer.data})
예제 #5
0
 def get(self, request):
     staffs = Staff.objects.filter(seller=request.user)
     page = request.GET.get("page", 1)
     queryset, number = queryset_paginator(staffs, page)
     serializer = StaffSerializer(queryset, many=True)
     return Response({"list": serializer.data, "pages_num": number})
예제 #6
0
 def get(self, request):
     orders = Seller.objects.get(pk=request.user.id).seller_orders.filter(order_status='delivered')
     page = request.GET.get("page", 1)
     queryset, number = queryset_paginator(orders, page)
     serializer = SellerOrdersSerializer(queryset, many=True)
     return Response({"list": serializer.data, "pages_num": number})
예제 #7
0
 def get(self, request):
     products = Product.objects.filter(seller=request.user)
     page = request.GET.get("page", 1)
     queryset, number = queryset_paginator(products, page)
     serializer = SellerProductsSerializer(queryset, many=True, context={"request": request})
     return Response({"list": serializer.data, "pages_num": number})
예제 #8
0
 def get(self, request):
     drivers = Seller.objects.get(pk=request.user.pk).drivers.all()
     page = request.GET.get("page", 1)
     queryset, number = queryset_paginator(drivers, page)
     serializer = DriverSerializer(queryset, many=True)
     return Response({"list": serializer.data, "pages_num": number})