diff --git a/pms_api_rest/__manifest__.py b/pms_api_rest/__manifest__.py
index 9120e04e5..1f338e16c 100644
--- a/pms_api_rest/__manifest__.py
+++ b/pms_api_rest/__manifest__.py
@@ -25,6 +25,7 @@
"data/pms_app_reset_password_template.xml",
"views/pms_property_views.xml",
"views/res_users_views.xml",
+ "views/pms_room_type_class_views.xml",
],
"demo": [
"demo/pms_api_rest_master_data.xml",
diff --git a/pms_api_rest/datamodels/pms_agency.py b/pms_api_rest/datamodels/pms_agency.py
index 72ce4ce58..1c519997d 100644
--- a/pms_api_rest/datamodels/pms_agency.py
+++ b/pms_api_rest/datamodels/pms_agency.py
@@ -13,4 +13,4 @@ class PmsAgencyInfo(Datamodel):
_name = "pms.agency.info"
id = fields.Integer(required=True, allow_none=False)
name = fields.String(required=True, allow_none=False)
- image = fields.String(required=False, allow_none=True)
+ imageUrl = fields.String(required=False, allow_none=True)
diff --git a/pms_api_rest/datamodels/pms_property.py b/pms_api_rest/datamodels/pms_property.py
index df574573a..caf3b4902 100644
--- a/pms_api_rest/datamodels/pms_property.py
+++ b/pms_api_rest/datamodels/pms_property.py
@@ -29,3 +29,4 @@ class PmsPropertyInfo(Datamodel):
simpleInColor = fields.String(required=False, allow_none=True)
simpleFutureColor = fields.String(required=False, allow_none=True)
language = fields.String(required=True, allow_none=False)
+ hotelImageUrl = fields.String(required=False, allow_none=True)
diff --git a/pms_api_rest/datamodels/pms_room_type_class.py b/pms_api_rest/datamodels/pms_room_type_class.py
index 4498951d7..b10df266f 100644
--- a/pms_api_rest/datamodels/pms_room_type_class.py
+++ b/pms_api_rest/datamodels/pms_room_type_class.py
@@ -15,3 +15,4 @@ class PmsRoomTypeClassInfo(Datamodel):
name = fields.String(required=False, allow_none=True)
defaultCode = fields.String(required=False, allow_none=True)
pmsPropertyIds = fields.List(fields.Integer(), required=False)
+ imageUrl = fields.String(required=False, allow_none=True)
diff --git a/pms_api_rest/datamodels/pms_sale_channel.py b/pms_api_rest/datamodels/pms_sale_channel.py
index 57d1ecd41..730bb8037 100644
--- a/pms_api_rest/datamodels/pms_sale_channel.py
+++ b/pms_api_rest/datamodels/pms_sale_channel.py
@@ -13,4 +13,4 @@ class PmsSaleChannelInfo(Datamodel):
id = fields.Integer(required=True, allow_none=False)
name = fields.String(required=True, allow_none=False)
channelType = fields.String(required=True, allow_none=True)
- icon = fields.String(required=False, allow_none=True)
+ iconUrl = fields.String(required=False, allow_none=True)
diff --git a/pms_api_rest/datamodels/pms_user.py b/pms_api_rest/datamodels/pms_user.py
index 611c71530..63f928992 100644
--- a/pms_api_rest/datamodels/pms_user.py
+++ b/pms_api_rest/datamodels/pms_user.py
@@ -23,6 +23,7 @@ class PmsApiRestUserOutput(Datamodel):
userEmail = fields.String(required=False, allow_none=True)
userPhone = fields.String(required=False, allow_none=True)
userImageBase64 = fields.String(required=False, allow_none=True)
+ userImageUrl = fields.String(required=False, allow_none=True)
defaultPropertyId = fields.Integer(required=False, allow_none=True)
defaultPropertyName = fields.String(required=False, allow_none=True)
isNewInterfaceUser = fields.Boolean(required=False, allow_none=True)
diff --git a/pms_api_rest/demo/pms_api_rest_master_data.xml b/pms_api_rest/demo/pms_api_rest_master_data.xml
index bca00d717..555f68eb8 100644
--- a/pms_api_rest/demo/pms_api_rest_master_data.xml
+++ b/pms_api_rest/demo/pms_api_rest_master_data.xml
@@ -13,5 +13,20 @@
eval="[(6, 0, [ref('pms.field_pms_availability_plan_rule__min_stay'), ref('pms.field_pms_availability_plan_rule__quota')])]"
/>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pms_api_rest/demo/pms_property_hotel_image_pms_api_rest_my_property.jpg b/pms_api_rest/demo/pms_property_hotel_image_pms_api_rest_my_property.jpg
new file mode 100644
index 000000000..922427206
Binary files /dev/null and b/pms_api_rest/demo/pms_property_hotel_image_pms_api_rest_my_property.jpg differ
diff --git a/pms_api_rest/demo/pms_property_hotel_image_pms_api_rest_san_carlos.jpg b/pms_api_rest/demo/pms_property_hotel_image_pms_api_rest_san_carlos.jpg
new file mode 100644
index 000000000..652f92a04
Binary files /dev/null and b/pms_api_rest/demo/pms_property_hotel_image_pms_api_rest_san_carlos.jpg differ
diff --git a/pms_api_rest/demo/pms_room_type_class_icon_pms_api_rest_conference.svg b/pms_api_rest/demo/pms_room_type_class_icon_pms_api_rest_conference.svg
new file mode 100644
index 000000000..f61891c68
--- /dev/null
+++ b/pms_api_rest/demo/pms_room_type_class_icon_pms_api_rest_conference.svg
@@ -0,0 +1,38 @@
+
+
+
\ No newline at end of file
diff --git a/pms_api_rest/demo/pms_room_type_class_icon_pms_api_rest_parking.svg b/pms_api_rest/demo/pms_room_type_class_icon_pms_api_rest_parking.svg
new file mode 100644
index 000000000..4db7ce0fb
--- /dev/null
+++ b/pms_api_rest/demo/pms_room_type_class_icon_pms_api_rest_parking.svg
@@ -0,0 +1,26 @@
+
+
+
\ No newline at end of file
diff --git a/pms_api_rest/demo/pms_room_type_class_icon_pms_api_rest_room.svg b/pms_api_rest/demo/pms_room_type_class_icon_pms_api_rest_room.svg
new file mode 100644
index 000000000..bf283faf6
--- /dev/null
+++ b/pms_api_rest/demo/pms_room_type_class_icon_pms_api_rest_room.svg
@@ -0,0 +1,3 @@
+
diff --git a/pms_api_rest/models/__init__.py b/pms_api_rest/models/__init__.py
index 4713a4d6b..96f3e93d1 100644
--- a/pms_api_rest/models/__init__.py
+++ b/pms_api_rest/models/__init__.py
@@ -2,3 +2,5 @@ from . import pms_property
from . import res_users
from . import account_payment
from . import sql_export
+from . import pms_room_type_class
+
diff --git a/pms_api_rest/models/pms_property.py b/pms_api_rest/models/pms_property.py
index cda087937..c15c95dd1 100644
--- a/pms_api_rest/models/pms_property.py
+++ b/pms_api_rest/models/pms_property.py
@@ -88,3 +88,8 @@ class PmsProperty(models.Model):
help="Color for pending payment reservations in the planning.",
default="rgba(4, 95, 118)",
)
+
+ hotel_image_pms_api_rest = fields.Image(
+ string="Hotel image",
+ store=True,
+ )
diff --git a/pms_api_rest/models/pms_room_type_class.py b/pms_api_rest/models/pms_room_type_class.py
new file mode 100644
index 000000000..ddd4c81a2
--- /dev/null
+++ b/pms_api_rest/models/pms_room_type_class.py
@@ -0,0 +1,10 @@
+from odoo import fields, models
+
+
+class PmsRoomTypeClass(models.Model):
+ _inherit = "pms.room.type.class"
+
+ icon_pms_api_rest = fields.Image(
+ string="Icon room type class image",
+ store=True,
+ )
diff --git a/pms_api_rest/services/manage_url_images.py b/pms_api_rest/services/manage_url_images.py
new file mode 100644
index 000000000..2032e9b3e
--- /dev/null
+++ b/pms_api_rest/services/manage_url_images.py
@@ -0,0 +1,19 @@
+from odoo import http
+
+
+def url_image(context, model, record_id, field):
+ rt_image_attach = context.env['ir.attachment'].sudo().search([
+ ('res_model', '=', model),
+ ('res_id', '=', record_id),
+ ('res_field', '=', field),
+ ])
+ if rt_image_attach and not rt_image_attach.access_token:
+ rt_image_attach.generate_access_token()
+ result = (
+ http.request.env['ir.config_parameter']
+ .sudo().get_param('web.base.url') +
+ '/web/image/%s?access_token=%s' % (
+ rt_image_attach.id, rt_image_attach.access_token
+ ) if rt_image_attach else False
+ )
+ return result if result else ''
diff --git a/pms_api_rest/services/pms_agency_service.py b/pms_api_rest/services/pms_agency_service.py
index d6895b565..5866b623d 100644
--- a/pms_api_rest/services/pms_agency_service.py
+++ b/pms_api_rest/services/pms_agency_service.py
@@ -1,4 +1,5 @@
from odoo import _
+from odoo.addons.pms_api_rest.services.manage_url_images import url_image
from odoo.exceptions import MissingError
from odoo.addons.base_rest import restapi
@@ -41,9 +42,7 @@ class PmsAgencyService(Component):
PmsAgencyInfo(
id=agency.id,
name=agency.name,
- image=agency.image_1024.decode("utf-8")
- if agency.image_1024
- else None,
+ imageUrl=url_image(self, 'res.partner', agency.id, 'image_128'),
)
)
return result_agencies
@@ -72,7 +71,7 @@ class PmsAgencyService(Component):
return PmsAgencieInfo(
id=agency.id,
name=agency.name if agency.name else None,
- image=agency.image_1024.decode("utf-8") if agency.image_1024 else None,
+ imageUrl=url_image(self, 'res.partner', agency.id, 'image_128'),
)
else:
raise MissingError(_("Agency not found"))
diff --git a/pms_api_rest/services/pms_login_service.py b/pms_api_rest/services/pms_login_service.py
index 92c601cac..f7cfb518c 100644
--- a/pms_api_rest/services/pms_login_service.py
+++ b/pms_api_rest/services/pms_login_service.py
@@ -9,6 +9,7 @@ from odoo.exceptions import AccessDenied
from odoo.addons.base_rest import restapi
from odoo.addons.base_rest_datamodel.restapi import Datamodel
from odoo.addons.component.core import Component
+from .manage_url_images import url_image
class PmsLoginService(Component):
@@ -80,6 +81,7 @@ class PmsLoginService(Component):
userImageBase64=user_record.partner_id.image_1024
if user_record.partner_id.image_1024
else None,
+ userImageUrl=url_image(self, 'res.partner', user_record.partner_id.id, 'image_1024'),
isNewInterfaceUser=user_record.is_new_interface_app_user,
availabilityRuleFields=avail_rule_names,
)
diff --git a/pms_api_rest/services/pms_property_service.py b/pms_api_rest/services/pms_property_service.py
index c1acafe74..38e7a61ec 100644
--- a/pms_api_rest/services/pms_property_service.py
+++ b/pms_api_rest/services/pms_property_service.py
@@ -1,6 +1,7 @@
from odoo.addons.base_rest import restapi
from odoo.addons.base_rest_datamodel.restapi import Datamodel
from odoo.addons.component.core import Component
+from odoo.addons.pms_api_rest.services.manage_url_images import url_image
class PmsPropertyService(Component):
@@ -48,6 +49,7 @@ class PmsPropertyService(Component):
simpleInColor=prop.simple_in_color,
simpleFutureColor=prop.simple_future_color,
language=prop.lang,
+ hotelImageUrl=url_image(self, 'pms.property', prop.id, 'hotel_image_pms_api_rest'),
)
)
return result_properties
diff --git a/pms_api_rest/services/pms_room_type_class_service.py b/pms_api_rest/services/pms_room_type_class_service.py
index 28dfa3ea0..87f3e3d66 100644
--- a/pms_api_rest/services/pms_room_type_class_service.py
+++ b/pms_api_rest/services/pms_room_type_class_service.py
@@ -1,6 +1,7 @@
from odoo.addons.base_rest import restapi
from odoo.addons.base_rest_datamodel.restapi import Datamodel
from odoo.addons.component.core import Component
+from .manage_url_images import url_image
class PmsRoomTypeClassService(Component):
@@ -51,6 +52,7 @@ class PmsRoomTypeClassService(Component):
name=room.name,
defaultCode=room.default_code if room.default_code else None,
pmsPropertyIds=room.pms_property_ids.mapped("id"),
+ imageUrl=url_image(self, 'pms.room.type.class', room.id, 'icon_pms_api_rest'),
)
)
return result_room_type_class
diff --git a/pms_api_rest/services/pms_sale_channel_service.py b/pms_api_rest/services/pms_sale_channel_service.py
index 7c209912e..1c8468157 100644
--- a/pms_api_rest/services/pms_sale_channel_service.py
+++ b/pms_api_rest/services/pms_sale_channel_service.py
@@ -1,4 +1,5 @@
from odoo import _
+from odoo.addons.pms_api_rest.services.manage_url_images import url_image
from odoo.exceptions import MissingError
from odoo.addons.base_rest import restapi
@@ -62,9 +63,7 @@ class PmsSaleChannelService(Component):
channelType=sale_channel.channel_type
if sale_channel.channel_type
else None,
- icon=sale_channel.icon
- if sale_channel.icon
- else None,
+ iconUrl=url_image(self, 'pms.sale.channel', sale_channel.id, 'icon'),
)
)
return result_sale_channels
diff --git a/pms_api_rest/views/pms_property_views.xml b/pms_api_rest/views/pms_property_views.xml
index 5c86deee6..b47007b35 100644
--- a/pms_api_rest/views/pms_property_views.xml
+++ b/pms_api_rest/views/pms_property_views.xml
@@ -4,6 +4,11 @@
pms.property
+
+
+
+
+
diff --git a/pms_api_rest/views/pms_room_type_class_views.xml b/pms_api_rest/views/pms_room_type_class_views.xml
new file mode 100644
index 000000000..343423465
--- /dev/null
+++ b/pms_api_rest/views/pms_room_type_class_views.xml
@@ -0,0 +1,12 @@
+
+
+
+ pms.room.type.class
+
+
+
+
+
+
+
+