Browse Source

home

dev-rcn
root 3 years ago
parent
commit
01a40cc65c
4 changed files with 171 additions and 2 deletions
  1. +2
    -1
      __manifest__.py
  2. +48
    -0
      controllers/kalachakra.py
  3. +46
    -1
      static/js/kalachakra.js
  4. +75
    -0
      views/website_snippets.xml

+ 2
- 1
__manifest__.py View File

@ -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'
],


+ 48
- 0
controllers/kalachakra.py View File

@ -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']


+ 46
- 1
static/js/kalachakra.js View File

@ -90,4 +90,49 @@ odoo.define('kalachakra.main', function (require) {
});
});
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);
}
},
});
});

+ 75
- 0
views/website_snippets.xml View File

@ -0,0 +1,75 @@
<odoo>
<template id="s_country_booking_events" name="Booking Events">
<div class="s_country_booking_events_list oe_country_booking_events #{_classes}">
<div class="country_booking_events_list">
<h6 class="o_wevent_sidebar_title">
<i class="fa fa-globe mr-2"/>Upcoming booking Events
</h6>
</div>
</div>
</template>
<template id="snippets" inherit_id="website_event.snippets">
<xpath expr="//t[@t-snippet='website_event.s_country_events']" position="replace">
<t t-snippet="website_event.s_country_events" t-thumbnail="/website_event/static/src/img/snippets_thumbs/s_country_events.svg"/>
<t t-snippet="kalachakra.s_country_booking_events" t-thumbnail="/website_event/static/src/img/snippets_thumbs/s_country_events.svg"/>
</xpath>
</template>
<template id="snippet_options" inherit_id="website.snippet_options">
<xpath expr="//*[@t-set='so_content_addition_selector']" position="inside">.oe_country_booking_events</xpath>
</template>
<!-- <template id="snippet_website_event_opt" name="Snippet event Options" inherit_id="website.snippet_options">
<xpath expr="//div[@data-js='Box']" position="inside">
<div data-selector=".s_country_events_list">
<we-checkbox string="display only booking event" data-js="only_booking_event"/>
</div>
</xpath>
</template> -->
<template id="index_sidebar_country_booking_event" inherit_id="website_event.index_sidebar" active="True" customize_show="True" name="Country Booking Events" priority="70">
<xpath expr="//div[@id='o_wevent_index_sidebar']" position="inside">
<div class="o_wevent_sidebar_block">
<t t-snippet-call="website_event.s_country_booking_events"/>
</div>
</xpath>
</template>
<template id="country_booking_events_list" name="Country Booking Events List">
<div class="country_booking_events_list">
<t t-if="events">
<h6 class="o_wevent_sidebar_title">
<t t-if="country">
<i class="fa fa-flag mr-2"/>Booking events: <span t-esc="country.name"/>
<img class="img-fluid" t-att-src="website.image_url(country, 'image')" alt=""/>
</t>
<t t-else="">
<i class="fa fa-globe mr-2"/>Upcoming Booking events
</t>
</h6>
<ul class="list-group mb-3">
<li t-foreach="events[:5]" t-as="event_dict" class="list-group-item d-flex justify-content-between">
<a t-att-href="event_dict['url']">
<i t-if="not event_dict['event'].website_published" class="fa fa-ban text-danger mr-1" role="img" aria-label="Unpublished" title="Unpublished"/>
<span t-esc="event_dict['event'].name" t-attf-class="#{(not event_dict['event'].website_published) and 'text-danger' or ''}"/>
</a>
<span t-esc="event_dict['date']"/>
</li>
</ul>
<div t-if="len(events) &gt; 5">
<t t-if="country">
<a t-attf-href="/event?country=#{country.id}" class="small"><b>See all events from <span t-esc="country.name"/></b></a>
</t>
<t t-else="">
<a href="/event" class="small"><b>View all</b></a>
</t>
</div>
</t>
</div>
</template>
</odoo>

Loading…
Cancel
Save