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)
|
||||
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']
|
||||
end = reservation['end']
|
||||
|
||||
|
|
@ -101,19 +94,17 @@ def synchronize_calendars(place):
|
|||
guest=guest
|
||||
)
|
||||
if not db_booking.exists():
|
||||
Booking.objects.create(
|
||||
Booking.objects.create_booking(
|
||||
place=place,
|
||||
guest=guest,
|
||||
start=start,
|
||||
end=end,
|
||||
# price=price
|
||||
end=end
|
||||
)
|
||||
else:
|
||||
db_booking.place = place,
|
||||
db_booking.guest = guest,
|
||||
db_booking.start = start,
|
||||
db_booking.end = end,
|
||||
# db_booking.price = price
|
||||
db_booking.end = end
|
||||
|
||||
|
||||
def get_bookings(place):
|
||||
|
|
|
|||
|
|
@ -4,6 +4,19 @@ from rental.models.guest import Guest
|
|||
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 Meta:
|
||||
verbose_name = 'Réservation'
|
||||
|
|
@ -11,6 +24,8 @@ class Booking(models.Model):
|
|||
def __str__(self):
|
||||
return "Réservation du {} par {}".format(self.place, self.guest)
|
||||
|
||||
objects = BookingManager()
|
||||
|
||||
place = models.ForeignKey(Place, on_delete=models.CASCADE)
|
||||
guest = models.ForeignKey(Guest, on_delete=models.CASCADE)
|
||||
message = models.TextField(blank=True)
|
||||
|
|
@ -18,7 +33,7 @@ class Booking(models.Model):
|
|||
end = models.DateField()
|
||||
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 """
|
||||
|
||||
if type(self.start) == str:
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ class BookingTestCase(TestCase):
|
|||
name='TX',
|
||||
price=100
|
||||
)
|
||||
|
||||
self.guest = Guest.objects.create(
|
||||
name="Ruidy",
|
||||
email="r@mail.com",
|
||||
|
|
@ -23,11 +24,11 @@ class BookingTestCase(TestCase):
|
|||
|
||||
def test_BookingPrice(self):
|
||||
# place = Place.objects.get(name='TX')
|
||||
booking = Booking.objects.create(
|
||||
booking = Booking.objects.create_booking(
|
||||
place=self.place,
|
||||
start=self.start,
|
||||
end=self.end,
|
||||
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)
|
||||
price = get_reservation_price(place, start, end)
|
||||
if available:
|
||||
reservation = Booking.objects.create(
|
||||
reservation = Booking.objects.create_booking(
|
||||
guest=guest,
|
||||
place=place,
|
||||
message=message,
|
||||
|
|
|
|||
Loading…
Reference in a new issue