[IMP]show timezone option, select bydefault and change timezone value according to...
authorVidhin Mehta (OpenERP) <vme@tinyerp.com>
Fri, 21 Mar 2014 06:45:41 +0000 (12:15 +0530)
committerVidhin Mehta (OpenERP) <vme@tinyerp.com>
Fri, 21 Mar 2014 06:45:41 +0000 (12:15 +0530)
bzr revid: vme@tinyerp.com-20140321064541-zvrnx1b9azgrjkh7

addons/website_event_track/controllers/event.py
addons/website_event_track/static/src/js/website_event_track.js
addons/website_event_track/views/website_event.xml

index ccb8bd0..4253681 100644 (file)
@@ -30,8 +30,21 @@ import re
 import werkzeug.utils
 
 controllers = controllers()
-
+import pytz
+from pytz import timezone
 class website_event(http.Controller):
+    
+    @http.route(['/website_event/change_time/'], type='json', auth="user", website=True)
+    def change_time(self, datum):
+        time_collection = eval(datum.get('time_collection'))
+        local_tz = pytz.timezone (datum.get('time_zone'))
+        new_list = []
+        for time in time_collection:
+            start_time = (time[0].replace(tzinfo=pytz.utc).astimezone(local_tz)).strftime('%H:%M')
+            end_time = (time[1].replace(tzinfo=pytz.utc).astimezone(local_tz)).strftime('%H:%M')
+            new_list.append(start_time +" - "+ end_time)
+        return new_list
+        
     @http.route(['/event/<model("event.event"):event>/track/<model("event.track"):track>'], type='http', auth="public", website=True, multilang=True)
     def event_track_view(self, event, track, **post):
         track_obj = request.registry.get('event.track')
@@ -129,7 +142,7 @@ class website_event(http.Controller):
         new_schedule = {}
         location_object = request.registry.get('event.track.location')
         event_track_obj = request.registry.get('event.track')
-        
+        time_collection = []
         #Make all possible timeslot for each day.
         for track in fetch_tracks:
             room_list.append(track[1])
@@ -144,6 +157,7 @@ class website_event(http.Controller):
             unsort_tracks[key] = OrderedDict()
             for value in new_schedule[key]:
                 unsort_tracks[key][value[0].strftime('%H:%M')+" - "+value[1].strftime('%H:%M')] = []
+                time_collection.append([value[0],value[1]])
         
         #Add track to its related time slot and day.
         for track in fetch_tracks:
@@ -174,7 +188,6 @@ class website_event(http.Controller):
                              'color': color,
                              'publish': not event_tracks.website_published
                        })
-                
         #Get All Locations and make room_list contain unique value.
         room_list = list(set(room_list))
         room_list.sort()
@@ -204,6 +217,12 @@ class website_event(http.Controller):
             format_date.append((datetime.datetime.strptime(skip, '%m-%d-%y')).strftime("%d %B, %Y"))
             for loc in skip_td[skip].keys():
                 skip_td[skip][loc] = list(set(skip_td[skip][loc]))
+                
+        timezone = []
+        for tt in pytz.common_timezones:
+            melbourne = pytz.timezone(tt)
+            timezone.append([melbourne.utcoffset(datetime.datetime.now()).total_seconds()/60, tt])
+        
         values = {
             'event': event,
             'main_object': event,
@@ -211,7 +230,9 @@ class website_event(http.Controller):
             'days': unsort_tracks,
             'skip_td': skip_td,
             'talks':talks,
-            'format_date':format_date
+            'format_date':format_date,
+            'timezone':timezone,
+            'time_collection':time_collection
         }
         return request.website.render("website_event_track.agenda", values)
 
index efccf56..5edcbdb 100644 (file)
@@ -1,4 +1,22 @@
 $(document).ready(function() {
+    console.log(openerp);
+    var offset = -(new Date().getTimezoneOffset());
+    var time_collection = $("select#timezone").attr('data');
+    $("select#timezone").bind('change keyup', function(e){
+          openerp.jsonRpc('/website_event/change_time/', 'call', {
+                'datum': {'time_collection':time_collection,'time_zone':$(this).find("option:selected").text()},
+            }).done(function (msg) {
+                var change_time = $("td#change_time");
+                $.each(change_time, function(key, element){
+                    $(element).text(msg[key]);
+                });
+           });
+    });
+    var select = $("select#timezone option").filter(function(){return this.value==offset}).first();
+    if(select){
+        select.attr("selected","selected");
+        $("select#timezone").trigger('change');
+    }
     function set_value(td_contain){
         var search_object = {};
         $.each(td_contain, function(key, element2){
index b0f3a81..3e5ea19 100644 (file)
         <section class="container">
           <div class="row">
             <div id="left_column">
+                <select id="timezone" t-att-data="time_collection">
+                    <t t-foreach="timezone" t-as="time">
+                        <option t-att-value="time[0]"><t t-esc="time[1]" /></option>
+                    </t> 
+                </select>
             </div>
             <div class="col-md-12" id="right_column">
                 <t t-foreach="days" t-as="day">
@@ -76,7 +81,7 @@
                         <t t-foreach="days[day]" t-as="slot">
                             <t t-set="skip_it" t-value="skip_td[day].keys()"/>
                             <tr id="agenda_tr">
-                                <td t-attf-style="width:#{10}%;"><t t-esc= "slot"/></td>
+                                <td t-attf-style="width:#{10}%;" id = "change_time"><t t-esc= "slot"/></td>
                                 <t t-foreach="room_list" t-as="room">
                                     <t t-set="sid" t-value="not (room[0] in skip_it and slot in skip_td[day][room[0]])" />
                                     <t t-if="sid">
         </section>
     </t>
 </template>
-
-
 <template id="tracks">
     <t t-call="website_event.event_details">
         <div id="left_column">