class LoadTestCase(TestCase):
    def setUp(self):
        self.path = os.path.join(os.getcwd(), 'assignment_table_load.xls')
        self.sheet = 2
        self.mercent = Merchant(merchant_id='001',merchant_name="test merchant", merchant_address="address")
        self.mercent.save()
        self.test_item = Item(item_id="0001",merchant_id="0002",item_name="one Item", item_price=200,merchant_obj=self.mercent)
        self.test_item.save()
        self.new_item = Item(item_id="0002",merchant_id="0002",item_name="one Item new", item_price=200,merchant_obj=self.mercent)
        self.new_item.save()

        self.cart = Cart(customer="test Customer")
        self.cart.save()

    def test_data_found(self):
        """Data found according to search"""
        merchant = load_merchant(self.path, 3)
        item = load_item(self.path, 2)
        transaction = load_transaction(self.path, 0)
        sales = load_sales(self.path, 1)
        assert merchant
        assert item
        assert transaction
        assert sales

    def test_cart_create(self):

        row1 = Rows(sn=1,item=self.test_item,quantity=2.5, unit='piece', cart = self.cart)
        row2 = Rows(sn=2,item=self.test_item,quantity=3.5, unit='piece', cart = self.cart)
        row3 = Rows(sn=3,item=self.test_item,quantity=42.5, unit='piece', cart = self.cart)
        row1.save()
        row2.save()
        row3.save()

        assert self.cart.rows.all()
        assert self.cart.status

        name = self.cart.item_update(1, self.test_item, self.new_item)
        assert name == self.new_item.item_name

        self.cart.cancel()
        assert not self.cart.status
    def setUp(self):
        self.path = os.path.join(os.getcwd(), 'assignment_table_load.xls')
        self.sheet = 2
        self.mercent = Merchant(merchant_id='001',merchant_name="test merchant", merchant_address="address")
        self.mercent.save()
        self.test_item = Item(item_id="0001",merchant_id="0002",item_name="one Item", item_price=200,merchant_obj=self.mercent)
        self.test_item.save()
        self.new_item = Item(item_id="0002",merchant_id="0002",item_name="one Item new", item_price=200,merchant_obj=self.mercent)
        self.new_item.save()

        self.cart = Cart(customer="test Customer")
        self.cart.save()
Example #3
0
def view_cart(request):
    if request.method == 'POST' and "submit_order" in request.POST:
        user = User.objects.get(username=request.user.username)
        cart = Cart.objects.get(who_id=user)

        # Check that there are enough ingredients
        submitted_orders = Orden.objects.filter(cart_id=cart.id)
        ingredients = Ingrediente.objects.all()
        # Create dictonary of all ingredients you have
        ingredient_have_dict = dict()
        for ingredient in ingredients:
            ingredient_have_dict[ingredient.name] = ingredient.amount
        # Create dictionary of all the ingredients you need
        ingredient_need_dict = dict()
        for order in submitted_orders:
            for ing in order.item_id.ingredients.all():
                if ing.name not in ingredient_need_dict.keys():
                    ingredient_need_dict[ing.name] = 1
                else:
                    ingredient_need_dict[ing.name] += 1
        # Compare the two dictionaries
        for ingredient_needed in ingredient_need_dict.keys():
            if ingredient_need_dict[ingredient_needed] > ingredient_have_dict[
                    ingredient_needed]:
                raise Http404("There are not enough " + ingredient_needed +
                              " so this order cannot be processed")

        # Check that they have enough money
        if user.creditos != None and user.creditos > cart.order_total:
            # get the current active carts/order
            active_carts = Cart.objects.filter(active=True).order_by('when')
            orders_ahead = len(active_carts)
            # set this cart and make it active
            cart.active = True
            user.creditos -= cart.order_total
            cart.save()
            user.save()

            # estimate using active carts
            time_estimate = 0
            for cart in active_carts:
                time_estimate += cart.time_total

            return render(
                request, 'order_submitted.html', {
                    'time_estimate': time_estimate,
                    'user': user,
                    'cart': cart,
                    'orders_ahead': orders_ahead
                })
        else:
            raise Http404(
                "You do not have enough credits to order this. Please order in person at the Container"
            )

    if request.method == 'POST' and "eliminar" in request.POST:
        item = str(request.POST.get('item'))
        # get the current cart of this person
        cart = Cart.objects.get(who_id=request.user)
        order_item = ElementosDelMenu.objects.get(name=item)
        order = Orden.objects.filter(cart_id=cart.id, item_id=order_item)
        order.delete()
        cart.save()

        # to display regular page again
        user = User.objects.get(username=request.user.username)
        try:
            cart = Cart.objects.get(who_id=user.id)
            orders = list(Orden.objects.filter(cart_id=cart.id))

            return render(request, 'view_cart.html', {
                'user': user,
                'cart': cart,
                'orders': orders
            })

        except:
            cart = Cart(who_id=user)
            cart.save()
            return render(request, 'view_cart.html', {
                'user': user,
                'cart': cart
            })

    else:
        user = User.objects.get(username=request.user.username)
        try:
            cart = Cart.objects.get(who_id=user.id)
            orders = list(Orden.objects.filter(cart_id=cart.id))

            return render(request, 'view_cart.html', {
                'user': user,
                'cart': cart,
                'orders': orders
            })

        except:
            cart = Cart(who_id=user)
            cart.save()
            return render(request, 'view_cart.html', {
                'user': user,
                'cart': cart
            })