From a76ce2a94c5507ba046572aa36ef51816c90c663 Mon Sep 17 00:00:00 2001 From: Ammar Officewala <36848414+AmmarOfficewalaSerpentCS@users.noreply.github.com> Date: Tue, 12 Apr 2022 22:32:54 +0530 Subject: [PATCH] [ADD] pms_website (#94) --- pms_website/README.rst | 100 ++++ pms_website/__init__.py | 4 + pms_website/__manifest__.py | 21 + pms_website/controllers/__init__.py | 3 + pms_website/controllers/website.py | 42 ++ pms_website/data/rule.xml | 18 + pms_website/i18n/es.po | 359 +++++++++++++ pms_website/i18n/pms_website.pot | 355 +++++++++++++ pms_website/models/__init__.py | 5 + pms_website/models/pms_amenity.py | 11 + pms_website/models/pms_property.py | 47 ++ pms_website/models/pms_website_category.py | 50 ++ pms_website/readme/CONFIGURE.rst | 1 + pms_website/readme/CONTRIBUTORS.rst | 14 + pms_website/readme/DESCRIPTION.rst | 3 + pms_website/readme/USAGE.rst | 1 + pms_website/security/ir.model.access.csv | 7 + pms_website/static/description/index.html | 452 ++++++++++++++++ pms_website/views/pms_amenity_views.xml | 14 + pms_website/views/pms_property.xml | 17 + pms_website/views/pms_property_template.xml | 482 ++++++++++++++++++ .../views/pms_website_category_views.xml | 50 ++ setup/pms_website/odoo/addons/pms_website | 1 + setup/pms_website/setup.py | 6 + 24 files changed, 2063 insertions(+) create mode 100644 pms_website/README.rst create mode 100644 pms_website/__init__.py create mode 100644 pms_website/__manifest__.py create mode 100644 pms_website/controllers/__init__.py create mode 100644 pms_website/controllers/website.py create mode 100644 pms_website/data/rule.xml create mode 100644 pms_website/i18n/es.po create mode 100644 pms_website/i18n/pms_website.pot create mode 100644 pms_website/models/__init__.py create mode 100644 pms_website/models/pms_amenity.py create mode 100644 pms_website/models/pms_property.py create mode 100644 pms_website/models/pms_website_category.py create mode 100644 pms_website/readme/CONFIGURE.rst create mode 100644 pms_website/readme/CONTRIBUTORS.rst create mode 100644 pms_website/readme/DESCRIPTION.rst create mode 100644 pms_website/readme/USAGE.rst create mode 100644 pms_website/security/ir.model.access.csv create mode 100644 pms_website/static/description/index.html create mode 100644 pms_website/views/pms_amenity_views.xml create mode 100644 pms_website/views/pms_property.xml create mode 100644 pms_website/views/pms_property_template.xml create mode 100644 pms_website/views/pms_website_category_views.xml create mode 120000 setup/pms_website/odoo/addons/pms_website create mode 100644 setup/pms_website/setup.py diff --git a/pms_website/README.rst b/pms_website/README.rst new file mode 100644 index 000000000..39ab39823 --- /dev/null +++ b/pms_website/README.rst @@ -0,0 +1,100 @@ +============= +PMS - Website +============= + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png + :target: https://odoo-community.org/page/development-status + :alt: Alpha +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fhttps://github.com/ursais/pms-lightgray.png?logo=github + :target: https://github.com/OCA/https://github.com/ursais/pms/tree/14.0-ADD-pms_website/pms_website + :alt: OCA/https://github.com/ursais/pms +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/https://github.com/ursais/pms-14-0-ADD-pms_website/https://github.com/ursais/pms-14-0-ADD-pms_website-pms_website + :alt: Translate me on Weblate + +|badge1| |badge2| |badge3| |badge4| + +This module is the base module for the property management system (PMS) modules. + +It provides the "Properties" apps with menu, settings, groups and data. + +.. IMPORTANT:: + This is an alpha version, the data model and design can change at any time without warning. + Only for development or testing purpose, do not use in production. + `More details on development status `_ + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +* Go to Properties > Configuration > Settings. + +Usage +===== + +To use this module, please read the complete user guide at ``_. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Open Source Integrators + +Contributors +~~~~~~~~~~~~ + +* Alexandre Díaz +* Pablo Quesada +* Jose Luis Algara +* `Commit [Sun] `: + + * Dario Lodeiros + * Eric Antones + * Sara Lago + * Brais Abeijon + * Miguel Padin + +* `Open Source Integrators `: + + * Maxime Chambreuil + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/https://github.com/ursais/pms `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/pms_website/__init__.py b/pms_website/__init__.py new file mode 100644 index 000000000..087e32a81 --- /dev/null +++ b/pms_website/__init__.py @@ -0,0 +1,4 @@ +# Copyright (c) 2021 Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from . import controllers +from . import models diff --git a/pms_website/__manifest__.py b/pms_website/__manifest__.py new file mode 100644 index 000000000..306b393f5 --- /dev/null +++ b/pms_website/__manifest__.py @@ -0,0 +1,21 @@ +# Copyright (c) 2021 Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +{ + "name": "PMS - Website", + "summary": "Publish properties on the website", + "version": "14.0.1.0.0", + "development_status": "Alpha", + "category": "Generic Modules/Property Management System", + "website": "https://github.com/OCA/pms", + "author": "Open Source Integrators, Odoo Community Association (OCA)", + "license": "AGPL-3", + "depends": ["pms_base", "website"], + "data": [ + "security/ir.model.access.csv", + "data/rule.xml", + "views/pms_property_template.xml", + "views/pms_property.xml", + "views/pms_amenity_views.xml", + "views/pms_website_category_views.xml", + ], +} diff --git a/pms_website/controllers/__init__.py b/pms_website/controllers/__init__.py new file mode 100644 index 000000000..abeb98b7b --- /dev/null +++ b/pms_website/controllers/__init__.py @@ -0,0 +1,3 @@ +# Copyright (c) 2021 Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from . import website diff --git a/pms_website/controllers/website.py b/pms_website/controllers/website.py new file mode 100644 index 000000000..7f3491058 --- /dev/null +++ b/pms_website/controllers/website.py @@ -0,0 +1,42 @@ +# Copyright (c) 2021 Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from werkzeug.exceptions import NotFound + +from odoo import http +from odoo.http import request + +from odoo.addons.website.controllers.main import QueryURL, Website + + +class Website(Website): + @http.route( + ['/property/'], + type="http", + auth="public", + website=True, + sitemap=True, + ) + def product(self, pms_property, category="", search="", **kwargs): + if not pms_property.can_access_from_current_website(): + raise NotFound() + return request.render( + "pms_website.property", + self._prepare_property_values(pms_property, category, search, **kwargs), + ) + + def _prepare_property_values(self, pms_property, category, search, **kwargs): + keep = QueryURL("/property") + return { + "property": pms_property, + "main_object": pms_property, + # 'search': search, + # 'category': category, + # 'pricelist': pricelist, + # 'attrib_values': attrib_values, + # 'attrib_set': attrib_set, + "keep": keep, + # 'categories': categs, + # 'product': product, + # 'add_qty': add_qty, + # 'view_track': view_track, + } diff --git a/pms_website/data/rule.xml b/pms_website/data/rule.xml new file mode 100644 index 000000000..f34dd14ab --- /dev/null +++ b/pms_website/data/rule.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + ['|', ('id', 'child_of', user.commercial_partner_id.id), ('is_property', '=', True)] + + + diff --git a/pms_website/i18n/es.po b/pms_website/i18n/es.po new file mode 100644 index 000000000..444bdaafe --- /dev/null +++ b/pms_website/i18n/es.po @@ -0,0 +1,359 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * pms_website +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0+e-20211202\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-12-23 19:54+0000\n" +"PO-Revision-Date: 2021-12-23 19:54+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "" +"
\n" +" Check out:" +msgstr "" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "" +"\n" +" Pet-friendly apartments." +msgstr "" +"\n" +" Admite mascotas." + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "" +"\n" +" Pets Are Not Allowed." +msgstr "" +"\n" +" No admite mascotas." + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "Check in:" +msgstr "" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "AM" +msgstr "" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "All Amenities" +msgstr "Todas las amenidades" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "Amenities" +msgstr "Amenidades" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "Bathrooms" +msgstr "Baños" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "Bedrooms" +msgstr "Recamaras" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_property__can_publish +msgid "Can Publish" +msgstr "Puede publicar" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "Cancelation Policy" +msgstr "Política de cancelación" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_property__property_category_ids +#: model:ir.ui.menu,name:pms_website.menu_pms_website_category +msgid "Categories" +msgstr "Categorías" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.view_pms_website_category_form +#: model_terms:ir.ui.view,arch_db:pms_website.view_pms_website_category_form_tree +msgid "Category" +msgstr "Categoría" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__name +#: model:ir.model.fields,help:pms_website.field_pms_website_category__name +msgid "Category Name" +msgstr "Nombre de categoría" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "" +"Change of plans? No worries. You can cancel up to 72 hours before your " +"check-in date for a full refund. For reservations close to check-in or " +"special cases, please contact our team, we will be glad to help." +msgstr "" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "Check in & Check out" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__child_ids +msgid "Children Property category" +msgstr "Categoría hija" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "Close" +msgstr "Cerrar" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__create_date +msgid "Created on" +msgstr "Creado el" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "Discover the featured amenities on this property" +msgstr "Descubre las amenidades de esa propiedad" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_amenity__display_name +#: model:ir.model.fields,field_description:pms_website.field_pms_property__display_name +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__display_name +msgid "Display Name" +msgstr "" + +#. module: pms_website +#: code:addons/pms_website/models/pms_website_category.py:0 +#, python-format +msgid "Error ! You cannot create recursive categories." +msgstr "Error! No pueden crear categorías recursivas." + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "Explore all amenities" +msgstr "Explorar todas las amenidades" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "Explore all amenities available in this property" +msgstr "xplorar todas las amenidades disponibles en esta propiedad" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "Free parking spots nearby" +msgstr "Estacionamiento gratis cerca" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "Guest(s)" +msgstr "Huespede(s)" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "House Rules" +msgstr "Reglas" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_amenity__id +#: model:ir.model.fields,field_description:pms_website.field_pms_property__id +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__id +msgid "ID" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__image_1920 +msgid "Image" +msgstr "Imagen" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__image_1024 +msgid "Image 1024" +msgstr "Imagen 1024" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__image_128 +msgid "Image 128" +msgstr "Imagen 128" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__image_256 +msgid "Image 256" +msgstr "Imagen 256" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__image_512 +msgid "Image 512" +msgstr "Imagen 512" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_property__is_published +msgid "Is Published" +msgstr "Es publicada" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_amenity____last_update +#: model:ir.model.fields,field_description:pms_website.field_pms_property____last_update +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category____last_update +msgid "Last Modified on" +msgstr "Ultima modificación el" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__write_uid +msgid "Last Updated by" +msgstr "Ultima modificación por" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__write_date +msgid "Last Updated on" +msgstr "Ultima modificación el" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "Main Amenities" +msgstr "Amenidades principales" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_amenity__is_main_amenity +#: model:ir.model.fields,help:pms_website.field_pms_amenity__is_main_amenity +msgid "Main Amenity" +msgstr "Amenidad principal" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "PM" +msgstr "" + +#. module: pms_website +#: model:ir.actions.act_window,name:pms_website.action_pms_website_category +msgid "PMS Category" +msgstr "Categoría" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__parent_id +msgid "Parent Category" +msgstr "Categoría padre" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__parent_path +msgid "Parent Path" +msgstr "Camino padre" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__parents_and_self +msgid "Parents And Self" +msgstr "" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "Parking Availability" +msgstr "Disponibilidad de estacionamiento" + +#. module: pms_website +#: model:ir.model,name:pms_website.model_pms_property +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__property_ids +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "Property" +msgstr "Propiedad" + +#. module: pms_website +#: model:ir.model,name:pms_website.model_pms_amenity +msgid "Property Amenity" +msgstr "Amenidad" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_property__website_description1 +msgid "Property Description" +msgstr "Descripción de la propiedad" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_property__website_description2 +msgid "Property Description 2" +msgstr "2da descripción de la propiedad" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "Property Name" +msgstr "Nombre de la propiedad" + +#. module: pms_website +#: model:ir.model.fields,help:pms_website.field_pms_property__website_id +#: model:ir.model.fields,help:pms_website.field_pms_website_category__website_id +msgid "Restrict publishing to this website." +msgstr "Restringir la publicación en este sitio web." + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__is_seo_optimized +msgid "SEO optimized" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__seo_name +msgid "Seo name" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,help:pms_website.field_pms_property__website_url +msgid "The full URL to access the document through the website." +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_property__website_published +msgid "Visible on current website" +msgstr "Visible en el sitio web" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_property__website_id +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__website_id +msgid "Website" +msgstr "Sitio web" + +#. module: pms_website +#: model:ir.model,name:pms_website.model_pms_website_category +msgid "Website Property Category" +msgstr "Categoría del sitio web" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_property__website_url +msgid "Website URL" +msgstr "URL del sitio web" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__website_meta_description +msgid "Website meta description" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__website_meta_keywords +msgid "Website meta keywords" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__website_meta_title +msgid "Website meta title" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__website_meta_og_img +msgid "Website opengraph image" +msgstr "" diff --git a/pms_website/i18n/pms_website.pot b/pms_website/i18n/pms_website.pot new file mode 100644 index 000000000..7fddbe7a8 --- /dev/null +++ b/pms_website/i18n/pms_website.pot @@ -0,0 +1,355 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * pms_website +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0+e-20211202\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-12-23 19:54+0000\n" +"PO-Revision-Date: 2021-12-23 19:54+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "" +"
\n" +" Check out:" +msgstr "" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "" +"\n" +" Pet-friendly apartments." +msgstr "" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "" +"\n" +" Pets Are Not Allowed." +msgstr "" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "Check in:" +msgstr "" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "AM" +msgstr "" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "All Amenities" +msgstr "" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "Amenities" +msgstr "" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "Bathrooms" +msgstr "" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "Bedrooms" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_property__can_publish +msgid "Can Publish" +msgstr "" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "Cancelation Policy" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_property__property_category_ids +#: model:ir.ui.menu,name:pms_website.menu_pms_website_category +msgid "Categories" +msgstr "" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.view_pms_website_category_form +#: model_terms:ir.ui.view,arch_db:pms_website.view_pms_website_category_form_tree +msgid "Category" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__name +#: model:ir.model.fields,help:pms_website.field_pms_website_category__name +msgid "Category Name" +msgstr "" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "" +"Change of plans? No worries. You can cancel up to 72 hours before your " +"check-in date for a full refund. For reservations close to check-in or " +"special cases, please contact our team, we will be glad to help." +msgstr "" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "Check in & Check out" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__child_ids +msgid "Children Property category" +msgstr "" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "Close" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__create_uid +msgid "Created by" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__create_date +msgid "Created on" +msgstr "" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "Discover the featured amenities on this property" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_amenity__display_name +#: model:ir.model.fields,field_description:pms_website.field_pms_property__display_name +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__display_name +msgid "Display Name" +msgstr "" + +#. module: pms_website +#: code:addons/pms_website/models/pms_website_category.py:0 +#, python-format +msgid "Error ! You cannot create recursive categories." +msgstr "" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "Explore all amenities" +msgstr "" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "Explore all amenities available in this property" +msgstr "" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "Free parking spots nearby" +msgstr "" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "Guest(s)" +msgstr "" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "House Rules" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_amenity__id +#: model:ir.model.fields,field_description:pms_website.field_pms_property__id +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__id +msgid "ID" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__image_1920 +msgid "Image" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__image_1024 +msgid "Image 1024" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__image_128 +msgid "Image 128" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__image_256 +msgid "Image 256" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__image_512 +msgid "Image 512" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_property__is_published +msgid "Is Published" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_amenity____last_update +#: model:ir.model.fields,field_description:pms_website.field_pms_property____last_update +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category____last_update +msgid "Last Modified on" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__write_date +msgid "Last Updated on" +msgstr "" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "Main Amenities" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_amenity__is_main_amenity +#: model:ir.model.fields,help:pms_website.field_pms_amenity__is_main_amenity +msgid "Main Amenity" +msgstr "" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "PM" +msgstr "" + +#. module: pms_website +#: model:ir.actions.act_window,name:pms_website.action_pms_website_category +msgid "PMS Category" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__parent_id +msgid "Parent Category" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__parent_path +msgid "Parent Path" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__parents_and_self +msgid "Parents And Self" +msgstr "" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "Parking Availability" +msgstr "" + +#. module: pms_website +#: model:ir.model,name:pms_website.model_pms_property +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__property_ids +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "Property" +msgstr "" + +#. module: pms_website +#: model:ir.model,name:pms_website.model_pms_amenity +msgid "Property Amenity" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_property__website_description1 +msgid "Property Description" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_property__website_description2 +msgid "Property Description 2" +msgstr "" + +#. module: pms_website +#: model_terms:ir.ui.view,arch_db:pms_website.property +msgid "Property Name" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,help:pms_website.field_pms_property__website_id +#: model:ir.model.fields,help:pms_website.field_pms_website_category__website_id +msgid "Restrict publishing to this website." +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__is_seo_optimized +msgid "SEO optimized" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__seo_name +msgid "Seo name" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,help:pms_website.field_pms_property__website_url +msgid "The full URL to access the document through the website." +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_property__website_published +msgid "Visible on current website" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_property__website_id +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__website_id +msgid "Website" +msgstr "" + +#. module: pms_website +#: model:ir.model,name:pms_website.model_pms_website_category +msgid "Website Property Category" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_property__website_url +msgid "Website URL" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__website_meta_description +msgid "Website meta description" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__website_meta_keywords +msgid "Website meta keywords" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__website_meta_title +msgid "Website meta title" +msgstr "" + +#. module: pms_website +#: model:ir.model.fields,field_description:pms_website.field_pms_website_category__website_meta_og_img +msgid "Website opengraph image" +msgstr "" diff --git a/pms_website/models/__init__.py b/pms_website/models/__init__.py new file mode 100644 index 000000000..78a484e85 --- /dev/null +++ b/pms_website/models/__init__.py @@ -0,0 +1,5 @@ +# Copyright (c) 2021 Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from . import pms_property +from . import pms_amenity +from . import pms_website_category diff --git a/pms_website/models/pms_amenity.py b/pms_website/models/pms_amenity.py new file mode 100644 index 000000000..f06c3f4b6 --- /dev/null +++ b/pms_website/models/pms_amenity.py @@ -0,0 +1,11 @@ +# Copyright (c) 2021 Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo import fields, models + + +class PmsAmenity(models.Model): + _inherit = "pms.amenity" + + is_main_amenity = fields.Boolean( + string="Main Amenity", help="Main Amenity", default=False + ) diff --git a/pms_website/models/pms_property.py b/pms_website/models/pms_property.py new file mode 100644 index 000000000..d63cba254 --- /dev/null +++ b/pms_website/models/pms_property.py @@ -0,0 +1,47 @@ +# Copyright (c) 2021 Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +import werkzeug.urls + +from odoo import fields, models +from odoo.tools.translate import html_translate + +from odoo.addons.http_routing.models.ir_http import slug + + +class PmsProperty(models.Model): + _name = "pms.property" + _inherit = ["pms.property", "website.published.mixin", "website.multi.mixin"] + + def _compute_website_url(self): + for pms_property in self: + if pms_property.id: + pms_property.website_url = "/property/%s" % slug(pms_property) + + def google_map_link(self): + property_partner = self.sudo().partner_id + property_partner.geo_localize() + params = { + "q": "%s, %s" + % (property_partner.partner_latitude, property_partner.partner_longitude), + "z": 10, + } + return "https://maps.google.com/maps?" + werkzeug.urls.url_encode(params) + + property_category_ids = fields.Many2many( + string="Categories", + required=False, + comodel_name="pms.website.category", + relation="property_category_rel", + ) + website_description1 = fields.Html( + "Property Description", + sanitize_attributes=False, + translate=html_translate, + sanitize_form=False, + ) + website_description2 = fields.Html( + "Property Description 2", + sanitize_attributes=False, + translate=html_translate, + sanitize_form=False, + ) diff --git a/pms_website/models/pms_website_category.py b/pms_website/models/pms_website_category.py new file mode 100644 index 000000000..c0c2b7260 --- /dev/null +++ b/pms_website/models/pms_website_category.py @@ -0,0 +1,50 @@ +# Copyright (c) 2021 Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo import _, api, fields, models + + +class PMSWebsiteCategory(models.Model): + _name = "pms.website.category" + _inherit = ["website.seo.metadata", "website.multi.mixin", "image.mixin"] + _description = "Website Property Category" + _parent_store = True + _order = "name, id" + + name = fields.Char(string="Category Name", help="Category Name", required=True) + parent_path = fields.Char(index=True) + parents_and_self = fields.Many2many( + "pms.website.category", compute="_compute_parents_and_self_new" + ) + parent_id = fields.Many2one( + string="Parent Category", + comodel_name="pms.website.category", + index=True, + ondelete="cascade", + ) + child_ids = fields.One2many( + "pms.website.category", "parent_id", string="Children Property category" + ) + property_ids = fields.Many2many("pms.property", relation="property_category_rel") + + @api.constrains("parent_id") + def check_parent_id(self): + if not self._check_recursion(): + raise ValueError(_("Error ! You cannot create recursive categories.")) + + def name_get(self): + res = [] + for category in self: + for category in self: + res.append( + (category.id, " / ".join(category.parents_and_self.mapped("name"))) + ) + return res + + def _compute_parents_and_self_new(self): + for category in self: + if category.parent_path: + category.parents_and_self = self.env["pms.website.category"].browse( + [int(p) for p in category.parent_path.split("/")[:-1]] + ) + else: + category.parents_and_self = category diff --git a/pms_website/readme/CONFIGURE.rst b/pms_website/readme/CONFIGURE.rst new file mode 100644 index 000000000..173b6bdd6 --- /dev/null +++ b/pms_website/readme/CONFIGURE.rst @@ -0,0 +1 @@ +* Go to Properties > Configuration > Settings. diff --git a/pms_website/readme/CONTRIBUTORS.rst b/pms_website/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..ced562e48 --- /dev/null +++ b/pms_website/readme/CONTRIBUTORS.rst @@ -0,0 +1,14 @@ +* Alexandre Díaz +* Pablo Quesada +* Jose Luis Algara +* `Commit [Sun] `: + + * Dario Lodeiros + * Eric Antones + * Sara Lago + * Brais Abeijon + * Miguel Padin + +* `Open Source Integrators `: + + * Maxime Chambreuil diff --git a/pms_website/readme/DESCRIPTION.rst b/pms_website/readme/DESCRIPTION.rst new file mode 100644 index 000000000..55ee4048c --- /dev/null +++ b/pms_website/readme/DESCRIPTION.rst @@ -0,0 +1,3 @@ +This module is the base module for the property management system (PMS) modules. + +It provides the "Properties" apps with menu, settings, groups and data. diff --git a/pms_website/readme/USAGE.rst b/pms_website/readme/USAGE.rst new file mode 100644 index 000000000..acb2b8f3d --- /dev/null +++ b/pms_website/readme/USAGE.rst @@ -0,0 +1 @@ +To use this module, please read the complete user guide at ``_. diff --git a/pms_website/security/ir.model.access.csv b/pms_website/security/ir.model.access.csv new file mode 100644 index 000000000..f5896a592 --- /dev/null +++ b/pms_website/security/ir.model.access.csv @@ -0,0 +1,7 @@ +id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink +access_pms_property_public,access_property_public,pms_base.model_pms_property,,1,1,1,1 +access_pms_room_public,access_pms_room,pms_base.model_pms_room,,1,0,0,0 +access_pms_amenity_public,access_pms_amenity,pms_base.model_pms_amenity,,1,0,0,0 +access_pms_service,access_pms_service,pms_base.model_pms_service,,1,0,0,0 +access_pms_website_category,access_pms_website_category,model_pms_website_category,base.group_user,1,1,1,0 +access_pms_website_category_public,access_pms_website_category_public,model_pms_website_category,,1,0,0,0 diff --git a/pms_website/static/description/index.html b/pms_website/static/description/index.html new file mode 100644 index 000000000..bd0399c6a --- /dev/null +++ b/pms_website/static/description/index.html @@ -0,0 +1,452 @@ + + + + + + +PMS - Website + + + +
+

PMS - Website

+ + +

Alpha License: AGPL-3 OCA/https://github.com/ursais/pms Translate me on Weblate

+

This module is the base module for the property management system (PMS) modules.

+

It provides the “Properties” apps with menu, settings, groups and data.

+
+

Important

+

This is an alpha version, the data model and design can change at any time without warning. +Only for development or testing purpose, do not use in production. +More details on development status

+
+

Table of contents

+ +
+

Configuration

+
    +
  • Go to Properties > Configuration > Settings.
  • +
+
+
+

Usage

+

To use this module, please read the complete user guide at roomdoo.com.

+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Open Source Integrators
  • +
+
+
+

Contributors

+
    +
  • Alexandre Díaz
  • +
  • Pablo Quesada
  • +
  • Jose Luis Algara
  • +
  • Commit [Sun] <https://www.commitsun.com>:
      +
    • Dario Lodeiros
    • +
    • Eric Antones
    • +
    • Sara Lago
    • +
    • Brais Abeijon
    • +
    • Miguel Padin
    • +
    +
  • +
  • Open Source Integrators <https://www.opensourceintegrators.com>: +
  • +
+
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/https://github.com/ursais/pms project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/pms_website/views/pms_amenity_views.xml b/pms_website/views/pms_amenity_views.xml new file mode 100644 index 000000000..2337e617a --- /dev/null +++ b/pms_website/views/pms_amenity_views.xml @@ -0,0 +1,14 @@ + + + + pms.amenity.form.inherit + pms.amenity + + + + + + + + + diff --git a/pms_website/views/pms_property.xml b/pms_website/views/pms_property.xml new file mode 100644 index 000000000..bc6623384 --- /dev/null +++ b/pms_website/views/pms_property.xml @@ -0,0 +1,17 @@ + + + + pms.property.view.form.inherit + pms.property + + +
+ +
+ + + + +
+ +
diff --git a/pms_website/views/pms_property_template.xml b/pms_website/views/pms_property_template.xml new file mode 100644 index 000000000..92b3ac0a3 --- /dev/null +++ b/pms_website/views/pms_property_template.xml @@ -0,0 +1,482 @@ + + + + + diff --git a/pms_website/views/pms_website_category_views.xml b/pms_website/views/pms_website_category_views.xml new file mode 100644 index 000000000..35f2c55a4 --- /dev/null +++ b/pms_website/views/pms_website_category_views.xml @@ -0,0 +1,50 @@ + + + pms.website.category.form + pms.website.category + +
+
+ + + + + + + + pms.website.category.tree + pms.website.category + + + + + + + + + PMS Category + pms.website.category + tree,form + + + + + diff --git a/setup/pms_website/odoo/addons/pms_website b/setup/pms_website/odoo/addons/pms_website new file mode 120000 index 000000000..8d5d9aacf --- /dev/null +++ b/setup/pms_website/odoo/addons/pms_website @@ -0,0 +1 @@ +../../../../pms_website \ No newline at end of file diff --git a/setup/pms_website/setup.py b/setup/pms_website/setup.py new file mode 100644 index 000000000..28c57bb64 --- /dev/null +++ b/setup/pms_website/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +)