From d4e7b18a553e1920548c4cd6de4faa9815c5cb02 Mon Sep 17 00:00:00 2001 From: "Parth Gajjar (Open ERP)" Date: Wed, 26 Feb 2014 17:01:21 +0530 Subject: [PATCH 01/14] [ADD] added snippet for country event, script for finding coordinates from brwoser, And display events from users country bzr revid: pga@tinyerp.com-20140226113121-vni0182v0cc2u3d4 --- addons/website/static/src/css/website.css | 6 ++ addons/website/static/src/css/website.sass | 6 ++ .../src/img/blocks/block-country_events.png | Bin 0 -> 790 bytes addons/website_event/controllers/main.py | 22 +++++++ .../static/src/js/website_geolocation.js | 40 ++++++++++++ addons/website_event/views/website_event.xml | 58 ++++++++++++++++++ 6 files changed, 132 insertions(+) create mode 100644 addons/website/static/src/img/blocks/block-country_events.png create mode 100644 addons/website_event/static/src/js/website_geolocation.js diff --git a/addons/website/static/src/css/website.css b/addons/website/static/src/css/website.css index e47b7a41baa..b386c3f4769 100644 --- a/addons/website/static/src/css/website.css +++ b/addons/website/static/src/css/website.css @@ -529,3 +529,9 @@ span[data-oe-type="monetary"] { width: 400px; margin: 40px auto; } + +.oe_website_overflow_ellipsis{ + white-space:nowrap; + overflow:hidden; + text-overflow:ellipsis; +} diff --git a/addons/website/static/src/css/website.sass b/addons/website/static/src/css/website.sass index 3cdfe37a896..9e69f85065d 100644 --- a/addons/website/static/src/css/website.sass +++ b/addons/website/static/src/css/website.sass @@ -428,3 +428,9 @@ span[data-oe-type="monetary"] .oe_website_login_container width: 400px margin: 40px auto + +.oe_website_overflow_ellipsis + white-space:nowrap + overflow:hidden + text-overflow:ellipsis + diff --git a/addons/website/static/src/img/blocks/block-country_events.png b/addons/website/static/src/img/blocks/block-country_events.png new file mode 100644 index 0000000000000000000000000000000000000000..52254ba4c3e96f80f0aeed224a03af32d3a659d7 GIT binary patch literal 790 zcmeAS@N?(olHy`uVBq!ia0vp^DM0Mc!3HE{I};W%FfiTqba4!+xb^n-Z~ve|iQ|R; zUwFA3;Mu)q&Wfv1m7T6%otG}vyIiMrh3U}gn12(R($1O8Q3#*g;D7)9&8!(7v&8+{ zzo%E%B^F5Bzy7mm-ofHmEi<%Abr=;`1ROeMI(8jh^ybZ*4Y$%5PNo*<|3%J#d_^^XLHT*bR>uMU0D%lNt_ zoMlBwS@`5VpMR$o7k^%F?QSmpSXjR2`kzV}@AAm_D>I{iCEj0cyx+uf>tv>b5A2m? z!usdgOr4RX^(B1Xv5RZV^|t5Qd@Cy0@aWuTla77Urqtb7fBN*X$E;f&(isb-LMJQ4 z%|Aay!j${cgA&FhHG$cOIXM&>7?^Mp9y5z#3#CiLB&N-?vefL5Q=T<*?$oVcOHZb3 z4$_&aa`O4-O;dfmN-{m??SEly*fOuL($qrbWD3`WORshmhpR1LraIM6{&nq_i2nMT zLlU93d@cX9D_?xwVAz|~7Q(ya`mS{W8;g%%8OUIrTDyE;9*kr#PHfI zCPg&Am@+NOU$(_M_L!{quX458{|YOWI2c(3fc`z=q_EX)2LsgOC6OhOVBr?M*Y$5N wF#y##Ffg|0b?bEl0|%@FqK!ph^>g)u=TG?^Jp9EHnBEyYUHx3vIVCg!0K!IH$N&HU literal 0 HcmV?d00001 diff --git a/addons/website_event/controllers/main.py b/addons/website_event/controllers/main.py index 2a6e1d134e3..132fc14ed09 100644 --- a/addons/website_event/controllers/main.py +++ b/addons/website_event/controllers/main.py @@ -28,6 +28,7 @@ controllers = controllers() from datetime import datetime, timedelta +import time from dateutil.relativedelta import relativedelta from openerp import tools import werkzeug.urls @@ -215,3 +216,24 @@ class website_event(http.Controller): } event_id = Event.create(request.cr, request.uid, vals, context=context) return request.redirect("/event/%s/?enable_editor=1" % event_id) + + @http.route('/event/get_country_event_list/', type='http', auth='public', website=True) + def get_country_events(self,country_code ,**post): + cr, uid, context = request.cr, request.uid, request.context + event_obj = request.registry['event.event'] + event_ids = event_obj.search(request.cr, request.uid, [('country_id.code', '=', country_code),('state', '=', 'confirm'),('date_begin','>=', time.strftime('%Y-%m-%d 00:00:00'))], order="date_begin", context=request.context) + events = event_obj.browse(request.cr, request.uid, event_ids, context=request.context) + country_obj = request.registry['res.country'] + country_ids = country_obj.search(request.cr, request.uid, [('code', '=', country_code)], context=request.context) + country = country_obj.browse(request.cr, request.uid, country_ids[0], context=request.context) + result = {'events':[], 'country': country} + for event in events: + start_date = datetime.strptime(event.date_begin.split(' ')[0], "%Y-%m-%d") + end_date = datetime.strptime(event.date_end.split(' ')[0], "%Y-%m-%d") + if end_date == start_date: + result['events'].append({"date": start_date.strftime("%b")+" "+start_date.strftime("%e"), + "event": event, 'url': event.website_url}) + else: + result['events'].append({"date":start_date.strftime("%b")+" "+start_date.strftime("%e")+"-"+end_date.strftime("%e"), + "event": event, 'url': event.website_url}) + return request.website.render("website_event.country_events_list",result) diff --git a/addons/website_event/static/src/js/website_geolocation.js b/addons/website_event/static/src/js/website_geolocation.js new file mode 100644 index 00000000000..3d48b042433 --- /dev/null +++ b/addons/website_event/static/src/js/website_geolocation.js @@ -0,0 +1,40 @@ +(function() { + "use strict"; + function getLocation() + { + if (navigator.geolocation) + { + navigator.geolocation.getCurrentPosition(showPosition); + } + else{alert("Geolocation is not supported by this browser.");} + } + + function showPosition(position) + { + var latitude = position.coords.latitude; + var longitude = position.coords.longitude; + $.ajax({ + url: "https://maps.googleapis.com/maps/api/geocode/json?latlng="+latitude+","+longitude+"&sensor=false", + type: 'GET', + dataType: 'json', + success: function(response, status, xhr, wfe){ + if(response.status == 'OK'){ + var last_element = response.results[response.results.length - 1] + if( last_element.types.indexOf( "country" ) != -1){ + var country_obj = last_element.address_components[0]; + $('img.event_country_flag').attr('src','base/static/img/country_flags/'+country_obj.short_name.toLowerCase()+'.png'); + $.post( "/event/get_country_event_list/"+country_obj.short_name, function( data ) { + $( ".country_events_list" ).replaceWith( data ); + }); + } + } + } + }); + } + + $(document).ready(function () { + if($('.country_events').length){ + getLocation(); + } + }); +})(); \ No newline at end of file diff --git a/addons/website_event/views/website_event.xml b/addons/website_event/views/website_event.xml index d002521b021..c2d2129ecdd 100644 --- a/addons/website_event/views/website_event.xml +++ b/addons/website_event/views/website_event.xml @@ -336,5 +336,63 @@ + + + + + + From 6a3a62d94c6f0eef5a7facbd3640a66b66ad2637 Mon Sep 17 00:00:00 2001 From: "Parth Gajjar (Open ERP)" Date: Fri, 28 Feb 2014 15:11:48 +0530 Subject: [PATCH 02/14] [IMP] moved snippet to content, Get country with help of GeoIP module bzr revid: pga@tinyerp.com-20140228094148-e2nr13o9e9u0vkor --- addons/website_event/controllers/main.py | 46 ++++++----- .../static/src/js/website_geolocation.js | 32 +------- addons/website_event/views/website_event.xml | 77 +++++++++++-------- 3 files changed, 79 insertions(+), 76 deletions(-) diff --git a/addons/website_event/controllers/main.py b/addons/website_event/controllers/main.py index e92db8260e7..7f3ed2c74dc 100644 --- a/addons/website_event/controllers/main.py +++ b/addons/website_event/controllers/main.py @@ -32,6 +32,7 @@ import time from dateutil.relativedelta import relativedelta from openerp import tools import werkzeug.urls +import GeoIP class website_event(http.Controller): @http.route(['/event/', '/event/page/'], type='http', auth="public", website=True, multilang=True) @@ -205,23 +206,32 @@ class website_event(http.Controller): event_id = Event.create(request.cr, request.uid, vals, context=context) return request.redirect("/event/%s/?enable_editor=1" % event_id) - @http.route('/event/get_country_event_list/', type='http', auth='public', website=True) - def get_country_events(self,country_code ,**post): - cr, uid, context = request.cr, request.uid, request.context - event_obj = request.registry['event.event'] - event_ids = event_obj.search(request.cr, request.uid, [('country_id.code', '=', country_code),('state', '=', 'confirm'),('date_begin','>=', time.strftime('%Y-%m-%d 00:00:00'))], order="date_begin", context=request.context) - events = event_obj.browse(request.cr, request.uid, event_ids, context=request.context) + def get_visitors_country(self): + GI = GeoIP.open('/usr/share/GeoIP/GeoIP.dat', 0) + return {'country_code': GI.country_code_by_addr(request.httprequest.remote_addr), 'country_name': GI.country_name_by_addr(request.httprequest.remote_addr)} + + def get_formated_date(self, event): + start_date = datetime.strptime(event.date_begin, "%Y-%m-%d %H:%M:%S").date() + end_date = datetime.strptime(event.date_end, "%Y-%m-%d %H:%M:%S").date() + return start_date.strftime("%b")+" "+start_date.strftime("%e")+ (end_date != start_date and ("-"+end_date.strftime("%e")) or "") + + @http.route('/event/get_country_event_list', type='http', auth='public', website=True) + def get_country_events(self ,**post): country_obj = request.registry['res.country'] - country_ids = country_obj.search(request.cr, request.uid, [('code', '=', country_code)], context=request.context) - country = country_obj.browse(request.cr, request.uid, country_ids[0], context=request.context) - result = {'events':[], 'country': country} - for event in events: - start_date = datetime.strptime(event.date_begin.split(' ')[0], "%Y-%m-%d") - end_date = datetime.strptime(event.date_end.split(' ')[0], "%Y-%m-%d") - if end_date == start_date: - result['events'].append({"date": start_date.strftime("%b")+" "+start_date.strftime("%e"), - "event": event, 'url': event.website_url}) - else: - result['events'].append({"date":start_date.strftime("%b")+" "+start_date.strftime("%e")+"-"+end_date.strftime("%e"), - "event": event, 'url': event.website_url}) + event_obj = request.registry['event.event'] + cr, uid, context,event_ids = request.cr, request.uid, request.context,[] + country_code = self.get_visitors_country()['country_code'] + result = {'events':[]} + if country_code: + country_ids = country_obj.search(request.cr, request.uid, [('code', '=', country_code)], context=request.context) + result['country'] = country_obj.browse(request.cr, request.uid, country_ids[0], context=request.context) + event_ids = event_obj.search(request.cr, request.uid, [('country_id.code', '=', country_code),('date_begin','>=', time.strftime('%Y-%m-%d 00:00:00'))], order="date_begin", context=request.context) + if not event_ids: + event_ids = event_obj.search(request.cr, request.uid, [('date_begin','>=', time.strftime('%Y-%m-%d 00:00:00'))], order="date_begin", context=request.context) + result['country'] = False + for event in event_obj.browse(request.cr, request.uid, event_ids, context=request.context): + result['events'].append({ + "date": self.get_formated_date(event), + "event": event, + "url": event.website_url}) return request.website.render("website_event.country_events_list",result) diff --git a/addons/website_event/static/src/js/website_geolocation.js b/addons/website_event/static/src/js/website_geolocation.js index 3d48b042433..d295f3dd04d 100644 --- a/addons/website_event/static/src/js/website_geolocation.js +++ b/addons/website_event/static/src/js/website_geolocation.js @@ -1,33 +1,9 @@ (function() { "use strict"; - function getLocation() - { - if (navigator.geolocation) - { - navigator.geolocation.getCurrentPosition(showPosition); - } - else{alert("Geolocation is not supported by this browser.");} - } - - function showPosition(position) - { - var latitude = position.coords.latitude; - var longitude = position.coords.longitude; - $.ajax({ - url: "https://maps.googleapis.com/maps/api/geocode/json?latlng="+latitude+","+longitude+"&sensor=false", - type: 'GET', - dataType: 'json', - success: function(response, status, xhr, wfe){ - if(response.status == 'OK'){ - var last_element = response.results[response.results.length - 1] - if( last_element.types.indexOf( "country" ) != -1){ - var country_obj = last_element.address_components[0]; - $('img.event_country_flag').attr('src','base/static/img/country_flags/'+country_obj.short_name.toLowerCase()+'.png'); - $.post( "/event/get_country_event_list/"+country_obj.short_name, function( data ) { - $( ".country_events_list" ).replaceWith( data ); - }); - } - } + function getLocation(){ + $.post( "/event/get_country_event_list/", function( data ) { + if(data){ + $( ".country_events_list" ).replaceWith( data ); } }); } diff --git a/addons/website_event/views/website_event.xml b/addons/website_event/views/website_event.xml index f52bcff5338..5435114236f 100644 --- a/addons/website_event/views/website_event.xml +++ b/addons/website_event/views/website_event.xml @@ -338,54 +338,71 @@ + + + From 4268297466a7c62f9ae6138aceeede98793e55b0 Mon Sep 17 00:00:00 2001 From: "Parth Gajjar (Open ERP)" Date: Fri, 28 Feb 2014 17:53:22 +0530 Subject: [PATCH 03/14] [IMP] improved domain for event, Hide element on edit bzr revid: pga@tinyerp.com-20140228122322-enn6p2x7n1c2shi0 --- addons/website_event/controllers/main.py | 2 +- addons/website_event/views/website_event.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/website_event/controllers/main.py b/addons/website_event/controllers/main.py index 7f3ed2c74dc..26a1e732ad8 100644 --- a/addons/website_event/controllers/main.py +++ b/addons/website_event/controllers/main.py @@ -225,7 +225,7 @@ class website_event(http.Controller): if country_code: country_ids = country_obj.search(request.cr, request.uid, [('code', '=', country_code)], context=request.context) result['country'] = country_obj.browse(request.cr, request.uid, country_ids[0], context=request.context) - event_ids = event_obj.search(request.cr, request.uid, [('country_id.code', '=', country_code),('date_begin','>=', time.strftime('%Y-%m-%d 00:00:00'))], order="date_begin", context=request.context) + event_ids = event_obj.search(request.cr, request.uid, ['|', ('address_id', '=', None),('country_id.code', '=', country_code),('date_begin','>=', time.strftime('%Y-%m-%d 00:00:00'))], order="date_begin", context=request.context) if not event_ids: event_ids = event_obj.search(request.cr, request.uid, [('date_begin','>=', time.strftime('%Y-%m-%d 00:00:00'))], order="date_begin", context=request.context) result['country'] = False diff --git a/addons/website_event/views/website_event.xml b/addons/website_event/views/website_event.xml index 5435114236f..fc304499af0 100644 --- a/addons/website_event/views/website_event.xml +++ b/addons/website_event/views/website_event.xml @@ -379,7 +379,7 @@ + + - - -