From 45bebfaf8dc0639b90c92f689d0fabd830a5ce14 Mon Sep 17 00:00:00 2001 From: Pablo Date: Fri, 8 Mar 2019 16:30:33 +0100 Subject: [PATCH] [FIX] import default restriction from wubook --- .../components/backend_adapter.py | 34 +++++++++++++++---- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/hotel_channel_connector_wubook/components/backend_adapter.py b/hotel_channel_connector_wubook/components/backend_adapter.py index 72bf18799..1bd318e3d 100644 --- a/hotel_channel_connector_wubook/components/backend_adapter.py +++ b/hotel_channel_connector_wubook/components/backend_adapter.py @@ -1,6 +1,7 @@ # Copyright 2018 Alexandre Díaz # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from datetime import timedelta import xmlrpc.client from urllib.parse import urljoin from odoo.addons.component.core import AbstractComponent @@ -444,13 +445,32 @@ class WuBookAdapter(AbstractComponent): return results def wired_rplan_get_rplan_values(self, date_from, date_to, channel_restriction_plan_id): - rcode, results = self._server.wired_rplan_get_rplan_values( - self._session_info[0], - self._session_info[1], - '1.1', - fields.Date.from_string(date_from).strftime(DEFAULT_WUBOOK_DATE_FORMAT), - fields.Date.from_string(date_to).strftime(DEFAULT_WUBOOK_DATE_FORMAT), - int(channel_restriction_plan_id)) + # fetch_rooms_values returns a KV structure for each room and for each day + # corresponding to the default WuBook restriction plan with rpid=0. + if int(channel_restriction_plan_id) == 0: + rcode, results = self._server.fetch_rooms_values( + self._session_info[0], + self._session_info[1], + fields.Date.from_string(date_from).strftime(DEFAULT_WUBOOK_DATE_FORMAT), + fields.Date.from_string(date_to).strftime(DEFAULT_WUBOOK_DATE_FORMAT)) + # prepare KV structure as expeced by _generate_restriction_items + for room_type in results: + restrictions = results[room_type] + date = fields.Date.from_string(date_from) + for daily_restriction in restrictions: + daily_restriction.update({'date': date.strftime(DEFAULT_WUBOOK_DATE_FORMAT)}) + date = date + timedelta(days=1) + results = {'0': results} + else: + # WuBook Knowledge Base: restriction plan besides the wubook restrictions + # are not returned by wired_rplan_get_rplan_values + rcode, results = self._server.wired_rplan_get_rplan_values( + self._session_info[0], + self._session_info[1], + '1.1', + fields.Date.from_string(date_from).strftime(DEFAULT_WUBOOK_DATE_FORMAT), + fields.Date.from_string(date_to).strftime(DEFAULT_WUBOOK_DATE_FORMAT), + int(channel_restriction_plan_id)) if rcode != 0: raise ChannelConnectorError(_("Can't fetch restriction plans from wubook"), { 'message': results,