From 2cd69e02cb2b691a4efeeabf09ed18e052550649 Mon Sep 17 00:00:00 2001 From: Kuroshini Date: Wed, 16 Oct 2019 14:11:07 +0300 Subject: [PATCH] Fix note mandatory && subscriber creation --- apps/booking/models/services.py | 8 +++++--- apps/booking/views.py | 4 +++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/apps/booking/models/services.py b/apps/booking/models/services.py index 5f48f15f..e6a2dd46 100644 --- a/apps/booking/models/services.py +++ b/apps/booking/models/services.py @@ -27,10 +27,12 @@ class AbstractBookingService(ABC): self.url = settings.LASTABLE_SERVICE @staticmethod - def get_certain_keys(d: dict, keys_to_preserve: set, required=True) -> dict: + def get_certain_keys(d: dict, keys_to_preserve: set, required: set = {}, check: bool = True) -> dict: """ Helper """ - if required: - diff = keys_to_preserve - d.keys() + if len(required) == 0 and check: + required = keys_to_preserve.copy() + if required and check: + diff = required - d.keys() if diff: raise serializers.ValidationError({field: _(f'This field is required') for field in diff}) return {key: d[key] for key in d.keys() & keys_to_preserve} diff --git a/apps/booking/views.py b/apps/booking/views.py index 6e850f3b..0f318f74 100644 --- a/apps/booking/views.py +++ b/apps/booking/views.py @@ -96,13 +96,15 @@ class UpdatePendingBooking(generics.UpdateAPIView): data['pending_booking_id'] = instance.pending_booking_id r = service.update_booking(service.get_certain_keys(data, { 'email', 'phone', 'last_name', 'first_name', 'country_code', 'pending_booking_id', 'note', + }, { + 'email', 'phone', 'last_name', 'first_name', 'country_code', 'pending_booking_id', })) if isinstance(r, Response): return r if data.get('newsletter'): Subscriber.objects.make_subscriber(email=data['email'], country_code=data['country_code'], locale=request.locale, ip_address=get_user_ip(request), - user=request.user) + user=None) if service.response: # если есть предоплата, возвращаем фронту страйп-ключ для совершения оплаты и цену amount = service.response.get('amount')