how can i stop my loop if prod_Available < 0 (negative value) and returns status = 0 else it returns status = 1?. Is it possible that when my loop encounters prod_Available < 0 it will stop looping and returns status = 0.?
here is my code :
def get_hotel_sum_quantity(self, product_id, checkin_date, checkout_date, quantity):
check_in = datetime.datetime.strptime(checkin_date, '%Y-%m-%d')
check_in = check_in.date()
start_date = check_in.day
check_out = datetime.datetime.strptime(checkout_date, '%Y-%m-%d')
check_out = check_out.date()
end_date = check_out.day
prod = Product.objects.get(id=product_id)
prod_Available = 0
array = []
for x in range(start_date,end_date + 1):
x = x - start_date
delta = datetime.timedelta(days=x)
all_date = check_in + delta
sumOfQuantity = HotelCheck.objects.filter(date_booked=all_date, product=prod).aggregate(Sum('quantity'))['quantity__sum']
if sumOfQuantity == None:
sumOfQuantity = 0
prod_Available = prod.quantity - sumOfQuantity
prod_Available = float(prod_Available) - float(quantity)
if prod_Available < 0:
status = 0
else:
status = 1
data = {'available': prod_Available, 'status': status, 'sumquantity': sumOfQuantity, 'quanity': quantity}
array.append(data)
return array
i have already returned all the value but it wont stop looping when prod_Available < 0
here is what i have done:
>>> from booking.models import *
>>> Hotel.objects.get_hotel_sum_quantity(3, '2011-12-21', '2011-12-24', 1)
[{'available': 1.0, 'status': 1, 'sumquantity': 8, 'quanity': 1}, {'available': 1.0, 'status': 1, 'sumquantity': 8, 'quanity': 1}, {'available': 1.0, 'status': 1, 'sumquantity': 8, 'quanity': 1}, {'available': 9.0, 'status': 1, 'sumquantity': 0, 'quanity': 1}]
>>> Hotel.objects.get_hotel_sum_quantity(3, '2011-12-21', '2011-12-24', 2)
[{'available': 0.0, 'status': 1, 'sumquantity': 8, 'quanity': 2}, {'available': 0.0, 'status': 1, 'sumquantity': 8, 'quanity': 2}, {'available': 0.0, 'status': 1, 'sumquantity': 8, 'quanity': 2}, {'available': 8.0, 'status': 1, 'sumquantity': 0, 'quanity': 2}]
>>> Hotel.objects.get_hotel_sum_quantity(3, '2011-12-21', '2011-12-24', 3)
[{'available': -1.0, 'status': 0, 'sumquantity': 8, 'quanity': 3}, {'available': -1.0, 'status': 0, 'sumquantity': 8, 'quanity': 3}, {'available': -1.0, 'status': 0, 'sumquantity': 8, 'quanity': 3}, {'available': 7.0, 'status': 1, 'sumquantity': 0, 'quanity': 3}]
>>>
can anyone can give me an idea about my situation?
thanks in advance
Mayb you could use the break statement of python to stop your loop :
then, when prod_available will be under 0, it will stop the loop and your method will continue execution (and return array in your case)