add is_available method to place and update_calendar to BookingManager

This commit is contained in:
Ruidy Nemausat 2020-04-07 17:05:26 +02:00
parent 0c196ce5e5
commit 431a041db3
4 changed files with 16 additions and 15 deletions

View file

@ -2,7 +2,7 @@ from datetime import datetime
from django.db import models from django.db import models
from rental.models.guest import Guest from rental.models.guest import Guest
from rental.models.place import Place from rental.models.place import Place
# from rental.services.calendar import update_calendar import rental.services.calendar as calendar
class BookingManager(models.Manager): class BookingManager(models.Manager):
@ -15,7 +15,7 @@ class BookingManager(models.Manager):
updates the remote calendar. """ updates the remote calendar. """
booking = self.create(**kwargs) booking = self.create(**kwargs)
booking.price = booking.get_price() booking.price = booking.get_price()
# update_calendar(booking) calendar.update_calendar(booking)
return booking return booking

View file

@ -1,5 +1,6 @@
from django.db import models from django.db import models
from rental.models.picture import Picture from rental.models.picture import Picture
import rental.services.calendar as calendar
class Place(models.Model): class Place(models.Model):
@ -22,3 +23,6 @@ class Place(models.Model):
Picture, on_delete=models.CASCADE, blank=True, null=True) Picture, on_delete=models.CASCADE, blank=True, null=True)
images = models.ManyToManyField(Picture, related_name="places", blank=True) images = models.ManyToManyField(Picture, related_name="places", blank=True)
calendar = models.CharField(max_length=350, blank=True, null=True) calendar = models.CharField(max_length=350, blank=True, null=True)
def is_available(self, start, end):
return calendar.check_availability(self, start, end)

View file

@ -6,12 +6,9 @@ import os.path
import pickle import pickle
from villafleurie.settings import BASE_DIR from villafleurie.settings import BASE_DIR
from django.shortcuts import get_object_or_404 from django.shortcuts import get_object_or_404
from rental.models.contact import Contact
from rental.models.guest import Guest from rental.models.guest import Guest
from rental.models.picture import Picture import rental.models.place as _place
from rental.models.place import Place import rental.models.booking as _booking
from rental.models.testimonial import Testimonial
from rental.models.booking import Booking
def build_calendar_api_service(): def build_calendar_api_service():
@ -80,7 +77,7 @@ def synchronize_calendars(place):
Delete from db reservation deleted from cal """ Delete from db reservation deleted from cal """
reservation = get_calendar_reservations(place) 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'] start = reservation['start']
end = reservation['end'] end = reservation['end']
@ -90,11 +87,11 @@ def synchronize_calendars(place):
guest = Guest.objects.create(name=reservation['guest']) guest = Guest.objects.create(name=reservation['guest'])
else: else:
guest = guest.first() guest = guest.first()
db_booking = Booking.objects.filter( db_booking = _booking.Booking.objects.filter(
guest=guest guest=guest
) )
if not db_booking.exists(): if not db_booking.exists():
Booking.objects.create_booking( _booking.Booking.objects.create_booking(
place=place, place=place,
guest=guest, guest=guest,
start=start, start=start,
@ -112,7 +109,7 @@ def get_bookings(place):
Returns a list of all related place reservations """ Returns a list of all related place reservations """
synchronize_calendars(place) 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] return [booking for booking in booked_dates]

View file

@ -79,9 +79,9 @@ def handle_reservation_form(request, context={}, init_template='rental/reservati
guest = guest.first() guest = guest.first()
place = get_object_or_404(Place, name=place_name) 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( reservation = Booking.objects.create_booking(
guest=guest, guest=guest,
place=place, place=place,