From 01a40cc65cc6646d0f66df09883e5acd3b7ee436 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 19 Jul 2022 19:16:17 +0200 Subject: [PATCH] home --- __manifest__.py | 3 +- controllers/kalachakra.py | 48 ++++++++++++++++++++++++ static/js/kalachakra.js | 47 +++++++++++++++++++++++- views/website_snippets.xml | 75 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 171 insertions(+), 2 deletions(-) create mode 100644 views/website_snippets.xml diff --git a/__manifest__.py b/__manifest__.py index 477e4dd..eaf9d96 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -56,7 +56,8 @@ 'views/booking_questionnaire.xml', 'views/mailing_list.xml', 'views/ir.attachment.xml', - 'views/account_portal_templates.xml' + 'views/account_portal_templates.xml', + 'views/website_snippets.xml' ], diff --git a/controllers/kalachakra.py b/controllers/kalachakra.py index f685370..50d1c78 100644 --- a/controllers/kalachakra.py +++ b/controllers/kalachakra.py @@ -13,6 +13,7 @@ from odoo.addons.web.controllers.main import ensure_db, Home from odoo.addons.website_event.controllers.main import WebsiteEventController from odoo.addons.payment.controllers.portal import PaymentProcessing from odoo.addons.sale.controllers.portal import CustomerPortal + from odoo.addons.portal.controllers.portal import pager as portal_pager, get_records_pager from odoo.addons.auth_signup.models.res_users import SignupError from odoo.addons.auth_signup.controllers.main import AuthSignupHome @@ -20,6 +21,8 @@ import json _logger = logging.getLogger(__name__) + + class KalaAuthSignupHome(Home): @http.route('/web/signup', type='http', auth='public', website=True, sitemap=False) def kalachakra_web_auth_signup(self, *args, **kw): @@ -60,6 +63,51 @@ class KalaAuthSignupHome(Home): class kalachakra_event(WebsiteEventController,PaymentProcessing): + #afficher la liste des prochains événement sur la home page (sans les retraites ! ) + @http.route('/event/get_country_booking_event_list', type='json', auth='public', website=True) + def get_country_booking_events(self, **post): + + Event = request.env['event.event'] + country_code = request.session['geoip'].get('country_code') + result = {'events': [], 'country': False} + events = None + domain = request.website.website_domain() + if country_code: + country = request.env['res.country'].search([('code', '=', country_code)], limit=1) + events = Event.search(domain + ['&','|', ('address_id', '=', None), ('country_id.code', '=', country_code), ('date_begin', '>=', '%s 00:00:00' % fields.Date.today()),('booking_event','=',True)], order="date_begin") + if not events: + events = Event.search(domain + [('booking_event','=',True),('date_begin', '>=', '%s 00:00:00' % fields.Date.today())], order="date_begin") + for event in events: + if country_code and event.country_id.code == country_code: + result['country'] = country + result['events'].append({ + "date": self.get_formated_date(event), + "event": event, + "url": event.website_url}) + return request.env['ir.ui.view']._render_template("kalachakra.country_booking_events_list", result) + + @http.route('/event/get_country_event_list', type='json', auth='public', website=True) + def get_country_events(self, **post): + + Event = request.env['event.event'] + country_code = request.session['geoip'].get('country_code') + result = {'events': [], 'country': False} + events = None + domain = request.website.website_domain() + if country_code: + country = request.env['res.country'].search([('code', '=', country_code)], limit=1) + events = Event.search(domain + ['&','|', ('address_id', '=', None), ('country_id.code', '=', country_code), ('date_begin', '>=', '%s 00:00:00' % fields.Date.today()),('booking_event','=',False)], order="date_begin") + if not events: + events = Event.search(domain + [('booking_event','=',False),('date_begin', '>=', '%s 00:00:00' % fields.Date.today())], order="date_begin") + for event in events: + if country_code and event.country_id.code == country_code: + result['country'] = country + result['events'].append({ + "date": self.get_formated_date(event), + "event": event, + "url": event.website_url}) + return request.env['ir.ui.view']._render_template("website_event.country_events_list", result) + def _extract_searched_event_tags(self, searches): tags = request.env['event.tag'] diff --git a/static/js/kalachakra.js b/static/js/kalachakra.js index 9481ae4..4c939a3 100644 --- a/static/js/kalachakra.js +++ b/static/js/kalachakra.js @@ -90,4 +90,49 @@ odoo.define('kalachakra.main', function (require) { -}); \ No newline at end of file +}); + +odoo.define('kalachakra.widget_booking_event', function (require) { + 'use strict'; + + var publicWidget = require('web.public.widget'); + + publicWidget.registry.visitor2 = publicWidget.Widget.extend({ + selector: ".oe_country_booking_events, .country_booking_events", + disabledInEditableMode: false, + + /** + * @override + */ + start: function () { + var defs = [this._super.apply(this, arguments)]; + var self = this; + var $eventBookingList = this.$('.country_booking_events_list'); + this._originalContent = $eventBookingList[0].outerHTML; + + defs.push(this._rpc({route: '/event/get_country_booking_event_list'}).then(function (data) { + if (data) { + self._$loadedContent = $(data); + + self._$loadedContent.attr('contentEditable', false); + self._$loadedContent.addClass('o_temp_auto_element'); + self._$loadedContent.attr('data-temp-auto-element-original-content', self._originalContent); + + $eventBookingList.replaceWith(self._$loadedContent); + } + })); + return Promise.all(defs); + }, + /** + * @override + */ + destroy: function () { + this._super.apply(this, arguments); + if (this._$loadedContent) { + this._$loadedContent.replaceWith(this._originalContent); + } + }, + }); + }); + + \ No newline at end of file diff --git a/views/website_snippets.xml b/views/website_snippets.xml new file mode 100644 index 0000000..7857377 --- /dev/null +++ b/views/website_snippets.xml @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + \ No newline at end of file