From aac45dcbedd8db475003625f68a50aa518046f38 Mon Sep 17 00:00:00 2001 From: miguelpadin Date: Thu, 25 Nov 2021 12:38:23 +0100 Subject: [PATCH] [ADD] pms_api_rest: add room type services --- pms_api_rest/datamodels/__init__.py | 1 + pms_api_rest/datamodels/pms_room_type_info.py | 9 ++++ .../datamodels/pms_room_type_search_param.py | 9 ++++ pms_api_rest/services/__init__.py | 1 + pms_api_rest/services/room_type_services.py | 47 +++++++++++++++++++ 5 files changed, 67 insertions(+) create mode 100644 pms_api_rest/datamodels/pms_room_type_info.py create mode 100644 pms_api_rest/datamodels/pms_room_type_search_param.py create mode 100644 pms_api_rest/services/room_type_services.py diff --git a/pms_api_rest/datamodels/__init__.py b/pms_api_rest/datamodels/__init__.py index c163cb27c..fd0bf8e53 100644 --- a/pms_api_rest/datamodels/__init__.py +++ b/pms_api_rest/datamodels/__init__.py @@ -5,6 +5,7 @@ from . import pms_folio_search_param from . import pms_folio_info from . import pms_room_info +from . import pms_room_type_info from . import pms_room_search_param from . import pms_reservation_info diff --git a/pms_api_rest/datamodels/pms_room_type_info.py b/pms_api_rest/datamodels/pms_room_type_info.py new file mode 100644 index 000000000..ce3ad3ea9 --- /dev/null +++ b/pms_api_rest/datamodels/pms_room_type_info.py @@ -0,0 +1,9 @@ +from marshmallow import fields + +from odoo.addons.datamodel.core import Datamodel + + +class PmsRoomTypeInfo(Datamodel): + _name = "pms.room.type.info" + id = fields.Integer(required=False, allow_none=True) + name = fields.String(required=False, allow_none=True) diff --git a/pms_api_rest/datamodels/pms_room_type_search_param.py b/pms_api_rest/datamodels/pms_room_type_search_param.py new file mode 100644 index 000000000..3ee1780f1 --- /dev/null +++ b/pms_api_rest/datamodels/pms_room_type_search_param.py @@ -0,0 +1,9 @@ +from marshmallow import fields + +from odoo.addons.datamodel.core import Datamodel + + +class PmsRoomTypeSearchParam(Datamodel): + _name = "pms.room.type.search.param" + id = fields.Integer(required=False, allow_none=True) + name = fields.String(required=False, allow_none=True) diff --git a/pms_api_rest/services/__init__.py b/pms_api_rest/services/__init__.py index 4811e37ab..ca589e26c 100644 --- a/pms_api_rest/services/__init__.py +++ b/pms_api_rest/services/__init__.py @@ -1,5 +1,6 @@ from . import folio_services from . import room_services +from . import room_type_services from . import calendar_service from . import partner_services diff --git a/pms_api_rest/services/room_type_services.py b/pms_api_rest/services/room_type_services.py new file mode 100644 index 000000000..b628da625 --- /dev/null +++ b/pms_api_rest/services/room_type_services.py @@ -0,0 +1,47 @@ +from odoo.addons.base_rest import restapi +from odoo.addons.base_rest_datamodel.restapi import Datamodel +from odoo.addons.component.core import Component + + +class PmsRoomTypeService(Component): + _inherit = "base.rest.service" + _name = "pms.room.type.service" + _usage = "room-types" + _collection = "pms.reservation.service" + + @restapi.method( + [ + ( + [ + "/", + ], + "GET", + ) + ], + input_param=Datamodel("pms.room.search.param"), + output_param=Datamodel("pms.room.info", is_list=True), + auth="public", + ) + def get_room_types(self, room_type_search_param): + domain = [] + if room_type_search_param.name: + domain.append(("name", "like", room_type_search_param.name)) + if room_type_search_param.id: + domain.append(("id", "=", room_type_search_param.id)) + result_rooms = [] + PmsRoomTypeInfo = self.env.datamodels["pms.room.type.info"] + for room in ( + self.env["pms.room.type"] + .sudo() + .search( + domain, + ) + ): + + result_rooms.append( + PmsRoomTypeInfo( + id=room.id, + name=room.name, + ) + ) + return result_rooms