From 431a041db32ff3fbf9205eab3c714da2e0c0be29 Mon Sep 17 00:00:00 2001 From: Ruidy Nemausat Date: Tue, 7 Apr 2020 17:05:26 +0200 Subject: [PATCH] add is_available method to place and update_calendar to BookingManager --- rental/models/booking.py | 4 ++-- rental/models/place.py | 4 ++++ rental/services/calendar.py | 19 ++++++++----------- rental/views.py | 4 ++-- 4 files changed, 16 insertions(+), 15 deletions(-) diff --git a/rental/models/booking.py b/rental/models/booking.py index e274a19..9eb3a40 100644 --- a/rental/models/booking.py +++ b/rental/models/booking.py @@ -2,7 +2,7 @@ from datetime import datetime from django.db import models from rental.models.guest import Guest from rental.models.place import Place -# from rental.services.calendar import update_calendar +import rental.services.calendar as calendar class BookingManager(models.Manager): @@ -15,7 +15,7 @@ class BookingManager(models.Manager): updates the remote calendar. """ booking = self.create(**kwargs) booking.price = booking.get_price() - # update_calendar(booking) + calendar.update_calendar(booking) return booking diff --git a/rental/models/place.py b/rental/models/place.py index e340c98..a1df42f 100644 --- a/rental/models/place.py +++ b/rental/models/place.py @@ -1,5 +1,6 @@ from django.db import models from rental.models.picture import Picture +import rental.services.calendar as calendar class Place(models.Model): @@ -22,3 +23,6 @@ class Place(models.Model): Picture, on_delete=models.CASCADE, blank=True, null=True) images = models.ManyToManyField(Picture, related_name="places", blank=True) calendar = models.CharField(max_length=350, blank=True, null=True) + + def is_available(self, start, end): + return calendar.check_availability(self, start, end) diff --git a/rental/services/calendar.py b/rental/services/calendar.py index 3f07c13..a614617 100644 --- a/rental/services/calendar.py +++ b/rental/services/calendar.py @@ -6,12 +6,9 @@ import os.path import pickle from villafleurie.settings import BASE_DIR from django.shortcuts import get_object_or_404 -from rental.models.contact import Contact from rental.models.guest import Guest -from rental.models.picture import Picture -from rental.models.place import Place -from rental.models.testimonial import Testimonial -from rental.models.booking import Booking +import rental.models.place as _place +import rental.models.booking as _booking def build_calendar_api_service(): @@ -76,11 +73,11 @@ def get_calendar_reservations(place): def synchronize_calendars(place): """ Get a complete list of existing bookings in calendar - Creates reservation if not in db, update if already in db - Delete from db reservation deleted from cal """ + Creates reservation if not in db, update if already in db + Delete from db reservation deleted from cal """ reservation = get_calendar_reservations(place) - place = get_object_or_404(Place, name=place.name) + place = get_object_or_404(_place.Place, name=place.name) start = reservation['start'] end = reservation['end'] @@ -90,11 +87,11 @@ def synchronize_calendars(place): guest = Guest.objects.create(name=reservation['guest']) else: guest = guest.first() - db_booking = Booking.objects.filter( + db_booking = _booking.Booking.objects.filter( guest=guest ) if not db_booking.exists(): - Booking.objects.create_booking( + _booking.Booking.objects.create_booking( place=place, guest=guest, start=start, @@ -112,7 +109,7 @@ def get_bookings(place): Returns a list of all related place reservations """ synchronize_calendars(place) - booked_dates = Booking.objects.filter(place=place) + booked_dates = _booking.Booking.objects.filter(place=place) return [booking for booking in booked_dates] diff --git a/rental/views.py b/rental/views.py index bf2d22b..3d2f508 100644 --- a/rental/views.py +++ b/rental/views.py @@ -79,9 +79,9 @@ def handle_reservation_form(request, context={}, init_template='rental/reservati guest = guest.first() place = get_object_or_404(Place, name=place_name) - available = check_availability(place, start, end) + # available = check_availability(place, ) - if available: + if place.is_available(start, end): reservation = Booking.objects.create_booking( guest=guest, place=place,