mirror of
https://github.com/rjNemo/villafleurie
synced 2026-06-12 13:26:47 +00:00
add object manager to booking
This commit is contained in:
parent
9a9bc57a34
commit
43aa651e92
4 changed files with 23 additions and 16 deletions
|
|
@ -82,13 +82,6 @@ def synchronize_calendars(place):
|
||||||
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, name=place.name)
|
||||||
|
|
||||||
# After refactoring models, Move this method to the Booking model and get price later by calling Booking method
|
|
||||||
# price = get_reservation_price(
|
|
||||||
# place,
|
|
||||||
# reservation['start'],
|
|
||||||
# reservation['end']
|
|
||||||
# )
|
|
||||||
|
|
||||||
start = reservation['start']
|
start = reservation['start']
|
||||||
end = reservation['end']
|
end = reservation['end']
|
||||||
|
|
||||||
|
|
@ -101,19 +94,17 @@ def synchronize_calendars(place):
|
||||||
guest=guest
|
guest=guest
|
||||||
)
|
)
|
||||||
if not db_booking.exists():
|
if not db_booking.exists():
|
||||||
Booking.objects.create(
|
Booking.objects.create_booking(
|
||||||
place=place,
|
place=place,
|
||||||
guest=guest,
|
guest=guest,
|
||||||
start=start,
|
start=start,
|
||||||
end=end,
|
end=end
|
||||||
# price=price
|
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
db_booking.place = place,
|
db_booking.place = place,
|
||||||
db_booking.guest = guest,
|
db_booking.guest = guest,
|
||||||
db_booking.start = start,
|
db_booking.start = start,
|
||||||
db_booking.end = end,
|
db_booking.end = end
|
||||||
# db_booking.price = price
|
|
||||||
|
|
||||||
|
|
||||||
def get_bookings(place):
|
def get_bookings(place):
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,19 @@ from rental.models.guest import Guest
|
||||||
from rental.models.place import Place
|
from rental.models.place import Place
|
||||||
|
|
||||||
|
|
||||||
|
class BookingManager(models.Manager):
|
||||||
|
""" BookingManager is the interface through which database query operations
|
||||||
|
are provided to Django models.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def create_booking(self, **kwargs):
|
||||||
|
""" create_booking creates a Booking instance. """
|
||||||
|
booking = self.create(**kwargs)
|
||||||
|
booking.price = booking.get_price()
|
||||||
|
|
||||||
|
return booking
|
||||||
|
|
||||||
|
|
||||||
class Booking(models.Model):
|
class Booking(models.Model):
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = 'Réservation'
|
verbose_name = 'Réservation'
|
||||||
|
|
@ -11,6 +24,8 @@ class Booking(models.Model):
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return "Réservation du {} par {}".format(self.place, self.guest)
|
return "Réservation du {} par {}".format(self.place, self.guest)
|
||||||
|
|
||||||
|
objects = BookingManager()
|
||||||
|
|
||||||
place = models.ForeignKey(Place, on_delete=models.CASCADE)
|
place = models.ForeignKey(Place, on_delete=models.CASCADE)
|
||||||
guest = models.ForeignKey(Guest, on_delete=models.CASCADE)
|
guest = models.ForeignKey(Guest, on_delete=models.CASCADE)
|
||||||
message = models.TextField(blank=True)
|
message = models.TextField(blank=True)
|
||||||
|
|
@ -18,7 +33,7 @@ class Booking(models.Model):
|
||||||
end = models.DateField()
|
end = models.DateField()
|
||||||
price = models.DecimalField(max_digits=6, decimal_places=2, null=True)
|
price = models.DecimalField(max_digits=6, decimal_places=2, null=True)
|
||||||
|
|
||||||
def price(self):
|
def get_price(self):
|
||||||
""" Compute booking price as a function of place and dates """
|
""" Compute booking price as a function of place and dates """
|
||||||
|
|
||||||
if type(self.start) == str:
|
if type(self.start) == str:
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ class BookingTestCase(TestCase):
|
||||||
name='TX',
|
name='TX',
|
||||||
price=100
|
price=100
|
||||||
)
|
)
|
||||||
|
|
||||||
self.guest = Guest.objects.create(
|
self.guest = Guest.objects.create(
|
||||||
name="Ruidy",
|
name="Ruidy",
|
||||||
email="r@mail.com",
|
email="r@mail.com",
|
||||||
|
|
@ -23,11 +24,11 @@ class BookingTestCase(TestCase):
|
||||||
|
|
||||||
def test_BookingPrice(self):
|
def test_BookingPrice(self):
|
||||||
# place = Place.objects.get(name='TX')
|
# place = Place.objects.get(name='TX')
|
||||||
booking = Booking.objects.create(
|
booking = Booking.objects.create_booking(
|
||||||
place=self.place,
|
place=self.place,
|
||||||
start=self.start,
|
start=self.start,
|
||||||
end=self.end,
|
end=self.end,
|
||||||
guest=self.guest
|
guest=self.guest
|
||||||
)
|
)
|
||||||
|
|
||||||
self.assertEqual(booking.price(), 600)
|
self.assertEqual(booking.price, 600)
|
||||||
|
|
|
||||||
|
|
@ -83,7 +83,7 @@ def handle_reservation_form(request, context={}, init_template='rental/reservati
|
||||||
available = check_availability(place, start, end)
|
available = check_availability(place, start, end)
|
||||||
price = get_reservation_price(place, start, end)
|
price = get_reservation_price(place, start, end)
|
||||||
if available:
|
if available:
|
||||||
reservation = Booking.objects.create(
|
reservation = Booking.objects.create_booking(
|
||||||
guest=guest,
|
guest=guest,
|
||||||
place=place,
|
place=place,
|
||||||
message=message,
|
message=message,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue