diff --git a/pms_api_rest/__manifest__.py b/pms_api_rest/__manifest__.py index 1f338e16c..a6d0469a4 100644 --- a/pms_api_rest/__manifest__.py +++ b/pms_api_rest/__manifest__.py @@ -15,6 +15,7 @@ "base_location", "l10n_es_aeat", "sql_export_excel", + "feed_rss", ], "external_dependencies": { "python": ["jwt", "simplejson", "marshmallow", "jose"], diff --git a/pms_api_rest/datamodels/__init__.py b/pms_api_rest/datamodels/__init__.py index 2108ac656..7c4f399db 100644 --- a/pms_api_rest/datamodels/__init__.py +++ b/pms_api_rest/datamodels/__init__.py @@ -61,3 +61,5 @@ from . import pms_notification from . import pms_reservation_message from . import pms_avail from . import pms_dashboard +from . import feed_post + diff --git a/pms_api_rest/datamodels/feed_post.py b/pms_api_rest/datamodels/feed_post.py new file mode 100644 index 000000000..a44e02a0d --- /dev/null +++ b/pms_api_rest/datamodels/feed_post.py @@ -0,0 +1,15 @@ +from marshmallow import fields + +from odoo.addons.datamodel.core import Datamodel + + +class FeedPost(Datamodel): + _name ="feed.post.info" + postId = fields.String(required=True, allow_none=False) + title = fields.String(required=True, allow_none=False) + link = fields.String(required=True, allow_none=False) + description = fields.String(required=True, allow_none=False) + publishDate = fields.String(required=True, allow_none=False) + author = fields.String(required=True, allow_none=False) + imageUrl = fields.String(required=True, allow_none=False) + diff --git a/pms_api_rest/services/__init__.py b/pms_api_rest/services/__init__.py index 4d43a7359..f280265d1 100644 --- a/pms_api_rest/services/__init__.py +++ b/pms_api_rest/services/__init__.py @@ -43,3 +43,4 @@ from . import pms_notification_service from . import pms_avail_service from . import pms_user_service from . import pms_dashboard_service +from . import feed_post_service diff --git a/pms_api_rest/services/feed_post_service.py b/pms_api_rest/services/feed_post_service.py new file mode 100644 index 000000000..3fd605ca5 --- /dev/null +++ b/pms_api_rest/services/feed_post_service.py @@ -0,0 +1,39 @@ +from odoo.addons.base_rest import restapi +from odoo.addons.base_rest_datamodel.restapi import Datamodel +from odoo.addons.component.core import Component + + +class PmsFeedRss(Component): + _inherit = "base.rest.service" + _name = "pms.feed.rss.service" + _usage = "feed-posts" + _collection = "pms.services" + + @restapi.method( + [ + ( + [ + "/", + ], + "GET", + ) + ], + output_param=Datamodel("feed.post.info", is_list=True), + auth="jwt_api_pms", + ) + def get_feed_posts(self): + result_rss = [] + PmsFeedRss = self.env.datamodels["feed.post.info"] + for rss in self.env["rss.post"].search([], limit=5, order='publish_date desc'): + result_rss.append( + PmsFeedRss( + postId=rss.post_id, + title=rss.title, + link=rss.link, + description=rss.description, + publishDate=str(rss.publish_date), + author=rss.author if rss.author else "", + imageUrl=rss.image_url if rss.image_url else "", + ) + ) + return result_rss