[IMP] pms_api_rest: add fields for pagination on their corresponding interfaces and modify get_partners service

This commit is contained in:
Sara Lago
2022-09-30 14:41:50 +02:00
committed by Darío Lodeiros
parent 3a8e76d99e
commit 4a6430dd25
4 changed files with 32 additions and 4 deletions

View File

@@ -8,7 +8,7 @@ from . import pms_room_type_class
from . import pms_reservation
from . import pms_reservation_line
from . import pms_rest_metadata
from . import pms_checkin_partner
from . import pms_partner

View File

@@ -1,10 +1,12 @@
from marshmallow import fields
from odoo.addons.datamodel.core import Datamodel
from odoo.addons.datamodel.fields import NestedModel
class PmsPartnerSearchParam(Datamodel):
_name = "pms.partner.search.param"
_inherit = "pms.rest.metadata"
id = fields.Integer(required=False, allow_none=True)
vatNumber = fields.String(required=False, allow_none=True)
documentType = fields.Integer(required=False, allow_none=True)
@@ -59,3 +61,9 @@ class PmsPartnerInfo(Datamodel):
invoiceToAgency = fields.String(required=False, allow_none=True)
tagIds = fields.List(fields.Integer(required=False, allow_none=True))
lastStay = fields.String(required=False, allow_none=True)
class PmsPartnerResults(Datamodel):
_name = "pms.partner.results"
partners = fields.List(NestedModel("pms.partner.info"))
total = fields.Integer(required=False, allow_none=True)

View File

@@ -0,0 +1,10 @@
from marshmallow import fields
from odoo.addons.datamodel.core import Datamodel
class PmsRestMetadata(Datamodel):
_name = "pms.rest.metadata"
orderBy = fields.String(required=False, allow_none=True)
limit = fields.Integer(required=False, allow_none=True)
offset = fields.Integer(required=False, allow_none=True)

View File

@@ -21,14 +21,21 @@ class PmsPartnerService(Component):
)
],
input_param=Datamodel("pms.partner.search.param", is_list=False),
output_param=Datamodel("pms.partner.info", is_list=True),
output_param=Datamodel("pms.partner.results", is_list=False),
auth="jwt_api_pms",
)
def get_partners(self, pms_partner_search_params):
result_partners = []
domain = []
PmsPartnerResults = self.env.datamodels["pms.partner.results"]
PmsPartnerInfo = self.env.datamodels["pms.partner.info"]
for partner in self.env["res.partner"].search(domain):
total_partners = self.env["res.partner"].search_count(domain)
for partner in self.env["res.partner"].search(
domain,
order=pms_partner_search_params.orderBy,
limit=pms_partner_search_params.limit,
offset=pms_partner_search_params.offset
):
checkouts = (
self.env["pms.checkin.partner"]
.search([("partner_id.id", "=", partner.id)])
@@ -118,7 +125,10 @@ class PmsPartnerService(Component):
lastStay=max(checkouts).strftime("%d/%m/%Y") if checkouts else "",
)
)
return result_partners
return PmsPartnerResults(
partners=result_partners,
total=total_partners
)
@restapi.method(
[