Skip to content

feat(bookings): add date editing with availability validation#239

Open
AlejandroLopez-Dev wants to merge 3 commits intooscarchapp:mainfrom
AlejandroLopez-Dev:feature/edit-booking-dates
Open

feat(bookings): add date editing with availability validation#239
AlejandroLopez-Dev wants to merge 3 commits intooscarchapp:mainfrom
AlejandroLopez-Dev:feature/edit-booking-dates

Conversation

@AlejandroLopez-Dev
Copy link
Copy Markdown

Allows editing check-in/check-out dates on an existing booking with
real-time availability validation.

Validation logic

  1. checkout must be after checkin
  2. checkout must be on or before 31/12/2026
  3. No overlap with other NEW bookings on the same room
    (the booking being edited is excluded from the conflict check)

Changes

  • forms.py: BookingDatesForm with full validation in clean()
  • views.py: EditBookingDatesView + recalculates total on save
  • urls.py: booking//edit-dates
  • edit_booking_dates.html: form with error feedback
  • home.html: "Edit dates" link visible on active bookings only

Tests

31/31 passing (+13 new integration tests)

 - RoomsView accepts GET param 'q' and applies icontains filter
 - Template includes search form with clear button and result count
 - 12 unit tests covering edge cases (empty, whitespace, partial match,
   case-insensitivity, ordering, context preservation)
 - Calculate occupancy as (active NEW bookings / total rooms) * 100
 - Guard division by zero when no rooms exist
 - Replace hardcoded 'DEL' strings with Booking.DELETED constant
 - Move datetime imports to module level
 - Reuse bookings_today queryset to reduce redundant DB calls
 - 6 unit tests: correct calc, cancelled excluded, zero rooms, 100% full
 - New BookingDatesForm with clean() validating: order, max date, overlap
 - Overlap uses standard hotel formula (checkin__lt / checkout__gt)
 - Cancelled bookings and the booking itself are excluded from conflict check
 - EditBookingDatesView: GET pre-fills form, POST saves + recalculates total
 - 13 integration tests: success, self-edit, partial overlaps, cancelled,
   date constraints
@oscarchapp oscarchapp closed this Apr 13, 2026
@oscarchapp oscarchapp reopened this Apr 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants