Skip to content

Commit

Permalink
ps: fix max_advance_booking issues
Browse files Browse the repository at this point in the history
  • Loading branch information
rayrayndwiga authored and brendanc-dpaw committed Nov 6, 2017
1 parent c4be31a commit d8893d7
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 6 deletions.
6 changes: 3 additions & 3 deletions parkstay/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -906,9 +906,9 @@ def retrieve(self, request, pk=None, ratis_id=None , format=None):

# get a length of the stay (in days), capped if necessary to the request maximum
length = max(0, (end_date-start_date).days)
if length > settings.PS_MAX_BOOKING_LENGTH:
length = settings.PS_MAX_BOOKING_LENGTH
end_date = start_date+timedelta(days=settings.PS_MAX_BOOKING_LENGTH)
#if length > settings.PS_MAX_BOOKING_LENGTH:
# length = settings.PS_MAX_BOOKING_LENGTH
# end_date = start_date+timedelta(days=settings.PS_MAX_BOOKING_LENGTH)

# fetch all the campsites and applicable rates for the campground
context = {}
Expand Down
2 changes: 1 addition & 1 deletion parkstay/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
]

# maximum number of days allowed for a booking
PS_MAX_BOOKING_LENGTH = 90
PS_MAX_BOOKING_LENGTH = 28

# minimum number of remaining campsites to trigger an availaiblity warning
PS_CAMPSITE_COUNT_WARNING = 10
Expand Down
24 changes: 22 additions & 2 deletions parkstay/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

from ledger.payments.models import Invoice,OracleInterface
from ledger.payments.utils import oracle_parser
from parkstay.models import (Campground, Campsite, CampsiteRate, CampsiteBooking, Booking, BookingInvoice, CampsiteBookingRange, Rate, CampgroundBookingRange, CampsiteRate, ParkEntryRate, BookingVehicleRego)
from parkstay.models import (Campground, Campsite, CampsiteRate, CampsiteBooking, Booking, BookingInvoice, CampsiteBookingRange, Rate, CampgroundBookingRange,CampgroundStayHistory, CampsiteRate, ParkEntryRate, BookingVehicleRego)
from parkstay.serialisers import BookingRegoSerializer, CampsiteRateSerializer, ParkEntryRateSerializer,RateSerializer,CampsiteRateReadonlySerializer
from parkstay.emails import send_booking_invoice,send_booking_confirmation

Expand Down Expand Up @@ -159,7 +159,8 @@ def get_open_campgrounds(campsites_qs, start_date, end_date):
campsitebooking__date__range=(start_date, end_date-timedelta(days=1))
# and also campgrounds where the book window is outside of the max advance range
).exclude(
campground__max_advance_booking__lte=(end_date-today).days
#campground__max_advance_booking__lte=(start_date-today).days - 1
campground__max_advance_booking__lt=(start_date-today).days
)

# get closures at campsite and campground level
Expand Down Expand Up @@ -253,6 +254,25 @@ def get_campsite_availability(campsites_qs, start_date, end_date):
for site in campsites_qs:
stop = today + timedelta(days=site.campground.max_advance_booking)
stop_mark = min(max(stop, start_date), end_date)
if start_date > stop:
for i in range((end_date-stop_mark).days):
results[site.pk][stop_mark+timedelta(days=i)][0] = 'toofar'

# Get the current stay history
stay_history = CampgroundStayHistory.objects.filter(
#Q(range_start__lte=start_date,range_end__gte=start_date)|Q(range_start__lte=end_date,range_end__gte=end_date)
Q(Q(range_start__lt=start_date,range_end__lt=end_date)&Q(range_end__gt=today))
,campground=campsites_qs.first().campground)
if stay_history:
max_days = min([x.max_days for x in stay_history])
else:
max_days = settings.PS_MAX_BOOKING_LENGTH
#max_days = CampgroundStayHistory.objects.get(Q(Q(range_start__lte=start_date,range_end__gte=start_date)|Q(range_start__lte=end_date,range_end__gte=end_date))|Q(Q(range_start__lt=start_date,range_end__gt=end_date)&Q(range_end__gt=today))),campground=campsites_qs.first().campground).max_days

# strike out days after the max_stay period
for site in campsites_qs:
stop = start_date + timedelta(days=max_days)
stop_mark = min(max(stop, start_date), end_date)
for i in range((end_date-stop_mark).days):
results[site.pk][stop_mark+timedelta(days=i)][0] = 'toofar'

Expand Down

0 comments on commit d8893d7

Please sign in to comment.