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')
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])
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:
'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()
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,
'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)
$(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){
<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">
<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">