mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[IMP] pms_api_rest: add fields for pagination on their corresponding interfaces and modify get_partners service
This commit is contained in:
committed by
Darío Lodeiros
parent
3a8e76d99e
commit
4a6430dd25
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
10
pms_api_rest/datamodels/pms_rest_metadata.py
Normal file
10
pms_api_rest/datamodels/pms_rest_metadata.py
Normal 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)
|
||||
@@ -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(
|
||||
[
|
||||
|
||||
Reference in New Issue
Block a user