From f8495948ed04572c00b98b0a85beb6f13dfa5aac Mon Sep 17 00:00:00 2001 From: Artyom Date: Sun, 15 Apr 2018 02:58:41 +0300 Subject: [PATCH 1/3] fixes --- onelya_sdk/exceptions.py | 5 ++++- onelya_sdk/wrapper/__init__.py | 9 ++++++++- setup.py | 2 +- tests/data/Railway/Search/TrainPricing.json | 1 + 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/onelya_sdk/exceptions.py b/onelya_sdk/exceptions.py index 284d79c..cdc77bb 100644 --- a/onelya_sdk/exceptions.py +++ b/onelya_sdk/exceptions.py @@ -10,7 +10,10 @@ def __init__(self, method, error_data, request_data): self.code = error_data.get('Code') self.message = error_data.get('Message').replace('request.', '') - self.message_params = self.__prettify_message_params(error_data, request_data) + try: + self.message_params = self.__prettify_message_params(error_data, request_data) + except: + self.message_params = 'Can\'t prettify message' @staticmethod def __prettify_message_params(error_data, request_data): diff --git a/onelya_sdk/wrapper/__init__.py b/onelya_sdk/wrapper/__init__.py index 36f2d3d..edb6a88 100644 --- a/onelya_sdk/wrapper/__init__.py +++ b/onelya_sdk/wrapper/__init__.py @@ -97,6 +97,7 @@ def __init__(self, json_data): self.international_service_classes = json_data.get('InternationalServiceClasses') self.availability_indication = json_data.get('AvailabilityIndication') self.is_three_hours_reservation_available = get_bool_item(json_data.get('IsThreeHoursReservationAvailable')) + self.is_deferred_payment_available = get_bool_item(json_data.get('IsDeferredPaymentAvailable')) self.is_meal_option_possible = get_bool_item(json_data.get('IsMealOptionPossible')) self.is_additional_meal_option_possible = get_bool_item(json_data.get('IsAdditionalMealOptionPossible')) self.is_transit_document_required = get_bool_item(json_data.get('IsTransitDocumentRequired')) @@ -118,6 +119,12 @@ def __init__(self, json_data): self.json_data = json_data +class FreePlacesByCompartments(object): + def __init__(self, json_data): + self.compartment_number = get_array(json_data.get('CompartmentNumber'), int) + self.places = json_data.get('Places') + + class CarPriceInfo(object): def __init__(self, json_data): self.car_type = json_data.get('CarType') @@ -135,7 +142,7 @@ def __init__(self, json_data): self.min_price = get_item(json_data.get('MinPrice'), float) self.max_price = get_item(json_data.get('MaxPrice'), float) self.service_cost = get_item(json_data.get('ServiceCost'), float) - self.free_places_by_compartments = json_data.get('FreePlacesByCompartments') + self.free_places_by_compartments = get_item(json_data.get('FreePlacesByCompartments'), FreePlacesByCompartments) self.place_reservation_type = json_data.get('PlaceReservationType') self.availability_indication = json_data.get('AvailabilityIndication') self.carrier = json_data.get('Carrier') diff --git a/setup.py b/setup.py index 331d78e..472ce51 100644 --- a/setup.py +++ b/setup.py @@ -1,6 +1,6 @@ from setuptools import setup, find_packages -__version__ = '1.2.1' +__version__ = '1.2.2' setup( version=__version__, diff --git a/tests/data/Railway/Search/TrainPricing.json b/tests/data/Railway/Search/TrainPricing.json index caaed32..7cbf48f 100644 --- a/tests/data/Railway/Search/TrainPricing.json +++ b/tests/data/Railway/Search/TrainPricing.json @@ -52,6 +52,7 @@ "TwoPlacesAtOnce" ], "IsThreeHoursReservationAvailable": false, + "IsDeferredPaymentAvailable": false, "IsMealOptionPossible": false, "IsAdditionalMealOptionPossible": false, "IsTransitDocumentRequired": false, From a6b33682b57119b16905d16e072a8965d804c54b Mon Sep 17 00:00:00 2001 From: Artyom Date: Sun, 15 Apr 2018 03:39:11 +0300 Subject: [PATCH 2/3] fixes --- onelya_sdk/wrapper/__init__.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/onelya_sdk/wrapper/__init__.py b/onelya_sdk/wrapper/__init__.py index edb6a88..09b6f3c 100644 --- a/onelya_sdk/wrapper/__init__.py +++ b/onelya_sdk/wrapper/__init__.py @@ -349,8 +349,8 @@ def __init__(self, json_data): class PassengerResponse(object): def __init__(self, json_data): self.category = json_data.get('Category') - self.places = json_data.get('Places') - self.place_tiers = json_data.get('PlaceTiers') + self.places = get_array(json_data.get('Places'), int) + self.place_tiers = get_array(json_data.get('PlaceTiers'), str) self.places_with_type = get_item(json_data.get('PlacesWithType'), PlaceWithType) self.tariff_type = json_data.get('TariffType') self.first_name = json_data.get('FirstName') @@ -387,6 +387,15 @@ def __init__(self, json_data): self.json_data = json_data +class PrepaidMealInfo(object): + def __init__(self, json_data): + self.v = json_data.get('MealOptionCode') + self.v = json_data.get('MealName') + self.v = json_data.get('Description') + + self.json_data = json_data + + class ReservationBlankResponse(object): def __init__(self, json_data): self.order_item_blank_id = get_item(json_data.get('OrderItemBlankId'), int) @@ -399,7 +408,7 @@ def __init__(self, json_data): self.additional_price = get_item(json_data.get('AdditionalPrice'), float) self.tariff_info = get_item(json_data.get('TariffInfo'), TicketTariffInfo) self.tariff_additional_info = json_data.get('TariffAdditionalInfo') - self.prepaid_meal_info = json_data.get('PrepaidMealInfo') + self.prepaid_meal_info = get_item(json_data.get('PrepaidMealInfo'), PrepaidMealInfo) self.service_price = get_item(json_data.get('ServicePrice'), float) self.json_data = json_data @@ -637,7 +646,7 @@ def __init__(self, json_data): self.electronic_registration_set_date_time = get_datetime(json_data.get('ElectronicRegistrationSetDateTime')) self.sign_sequence = json_data.get('SignSequence') self.tariff_info = get_item(json_data.get('TariffInfo'), TicketTariffInfo) - self.prepaid_meal_info = json_data.get('PrepaidMealInfo') + self.prepaid_meal_info = get_item(json_data.get('PrepaidMealInfo'), PrepaidMealInfo) self.transit_permission_approval_status = json_data.get('TransitPermissionApprovalStatus') self.place_quantity = json_data.get('PlaceQuantity') self.order_item_blank_id = json_data.get('OrderItemBlankId') From 8b1041dacbf0eb417aadcf77a985903aa6dd62fe Mon Sep 17 00:00:00 2001 From: Artyom Date: Sun, 15 Apr 2018 05:12:09 +0300 Subject: [PATCH 3/3] fixes --- onelya_sdk/railway/reservation/__init__.py | 4 +++- onelya_sdk/wrapper/types.py | 6 ++++++ tests/data/Order/Reservation/Blank.in.json | 8 ++++++-- tests/test_api.py | 4 ++-- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/onelya_sdk/railway/reservation/__init__.py b/onelya_sdk/railway/reservation/__init__.py index c21d21a..40b4f0a 100644 --- a/onelya_sdk/railway/reservation/__init__.py +++ b/onelya_sdk/railway/reservation/__init__.py @@ -49,9 +49,11 @@ def confirm(self, order_id: int, provider_payment_form: ProviderPaymentForm, provider_payment_form=provider_payment_form) return Confirm(response) - def blank(self, order_id: int, order_item_id: int, retrieve_main_services: bool=True, retrieve_upsales: bool=True): + def blank(self, order_id: int, order_item_id: int, order_item_ids: 'list of int', retrieve_main_services: bool=True, + retrieve_upsales: bool=True): response = self.request_wrapper.make_request(BLANK_METHOD, order_id=order_id, order_item_id=order_item_id, + order_item_ids=order_item_ids, retrieve_main_services=retrieve_main_services, retrieve_upsales=retrieve_upsales) return Blank(response) diff --git a/onelya_sdk/wrapper/types.py b/onelya_sdk/wrapper/types.py index c6d8252..ff54a81 100644 --- a/onelya_sdk/wrapper/types.py +++ b/onelya_sdk/wrapper/types.py @@ -5,6 +5,12 @@ class TariffType: CHILD = 'Child' +class RailwayTransitPermissionApprovalStatus: + NO_VALUE = 'NoValue' + ACCEPTED = 'Accepted' + REJECTED = 'Rejected' + + class MealTime: BREAKFAST = 'Breakfast' LUNCH = 'Lunch' diff --git a/tests/data/Order/Reservation/Blank.in.json b/tests/data/Order/Reservation/Blank.in.json index 68a057d..f02d7da 100644 --- a/tests/data/Order/Reservation/Blank.in.json +++ b/tests/data/Order/Reservation/Blank.in.json @@ -1,6 +1,10 @@ { - "OrderId": 1, - "OrderItemId": 2, + "OrderId": 52157, + "OrderItemId": null, + "OrderItemIds": [ + 55234, + 55238 + ], "RetrieveMainServices": true, "RetrieveUpsales": true } \ No newline at end of file diff --git a/tests/test_api.py b/tests/test_api.py index b9f054f..78313c0 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -191,7 +191,7 @@ def test_reservation_confirm(self): @mock.patch('requests.Session', MockFileSession) def test_reservation_blank(self): api = API(self.username, self.password, self.pos) - blank = api.railway_reservation.blank(1, 2) + blank = api.railway_reservation.blank(52157, None, [55234, 55238]) input_data = json.loads(open('tests/data/Order/Reservation/Blank.in.json', 'r', encoding='utf8').read()) pdf_file = open(PDF_PATH, 'rb').read() @@ -387,7 +387,7 @@ def test_aeroexpress_reservation_confirm(self): @mock.patch('requests.Session', MockFileSession) def test_aeroexpress_reservation_blank(self): api = API(self.username, self.password, self.pos) - blank = api.railway_reservation.blank(1, 2) + blank = api.aeroexpress_reservation.blank(1, 2) input_data = json.loads(open('tests/data/Aeroexpress/Order/Reservation/Blank.in.json', 'r', encoding='utf8').read()) pdf_file = open(PDF_PATH, 'rb').read()