[ADD]pms_api_rest: Basic notifications service

This commit is contained in:
Darío Lodeiros
2022-11-23 16:54:18 +01:00
parent 38dcad6f82
commit 5904419e10
3 changed files with 72 additions and 0 deletions

View File

@@ -56,3 +56,4 @@ from . import pms_report
from . import pms_folio_sale_line
from . import pms_invoice_line
from . import pms_mail
from . import pms_notification

View File

@@ -39,3 +39,4 @@ from . import pms_transaction_service
from . import pms_account_payment_terms_service
from . import pms_account_journal_service
from . import pms_invoice_service
from . import pms_notification_service

View File

@@ -0,0 +1,70 @@
from datetime import datetime
import pytz
from odoo import _
from odoo.addons.base_rest import restapi
from odoo.addons.base_rest_datamodel.restapi import Datamodel
from odoo.addons.component.core import Component
class PmsNotificationService(Component):
_inherit = "base.rest.service"
_name = "pms.notification.service"
_usage = "notifications"
_collection = "pms.services"
@restapi.method(
[
(
[
"/",
],
"GET",
)
],
input_param=Datamodel("pms.notification.search", is_list=False),
output_param=Datamodel("pms.notification.info", is_list=True),
auth="jwt_api_pms",
cors="*",
)
def get_notifications(self, pms_notification_search):
from_datetime = datetime.strptime(
pms_notification_search.fromDateTime, "%Y-%m-%d %H:%M:%S"
)
timezone = pytz.timezone(self.env.user.tz or "UTC")
from_datetime = timezone.localize(from_datetime)
from_datetime_utc = from_datetime.astimezone(pytz.utc)
new_reservations = self.env["pms.reservation"].search(
[
("create_date", ">=", from_datetime_utc),
("pms_property_id.id", "=", pms_notification_search.pmsPropertyId),
("to_assign", "=", True),
("create_uid.id", "!=", self.env.user.id),
],
limit=10,
order="create_date desc",
)
notifications = []
PmsNotificationInfo = self.env.datamodels["pms.notification.info"]
for folio in new_reservations.mapped("folio_id"):
notifications.append(
PmsNotificationInfo(
pmsPropertyId=folio.pms_property_id.id,
folioId=folio.id,
dateTime=pytz.UTC.localize(folio.create_date)
.astimezone(timezone)
.strftime("%Y-%m-%d %H:%M:%S"),
userId=folio.create_uid.id,
mensaje=_("%s: Nueva reserva de %s por %s")
% (
folio.name,
folio.partner_name,
folio.agency_id.name
if folio.agency_id
else folio.sale_channel_origin_id.name,
),
)
)
return notifications