mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[ADD]pms_api_rest: Basic notifications service
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
70
pms_api_rest/services/pms_notification_service.py
Normal file
70
pms_api_rest/services/pms_notification_service.py
Normal 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
|
||||
Reference in New Issue
Block a user