[calendar] add timezone parameter to calendarevent in order order do get the good date/hours in ical exports
This commit is contained in:
parent
33393780ab
commit
0936e1dfc4
6 changed files with 28 additions and 3 deletions
|
|
@ -128,6 +128,19 @@ class AgendadulibreModule(Module, CapCalendarEvent):
|
||||||
return self.browser.get_event(event_id)
|
return self.browser.get_event(event_id)
|
||||||
|
|
||||||
def fill_obj(self, event, fields):
|
def fill_obj(self, event, fields):
|
||||||
return self.browser.get_event(event.id, event)
|
event = self.browser.get_event(event.id, event)
|
||||||
|
choice = self.config['region'].get().split('#')
|
||||||
|
selected_region = '' if len(choice) < 2 else choice[-1]
|
||||||
|
if selected_region == '23':
|
||||||
|
event.timezone = 'America/Guadeloupe'
|
||||||
|
elif selected_region == '24':
|
||||||
|
event.timezone = 'America/Guyana'
|
||||||
|
elif selected_region == '26':
|
||||||
|
event.timezone = 'Indian/Reunion'
|
||||||
|
elif selected_region == '25':
|
||||||
|
event.timezone = 'America/Martinique'
|
||||||
|
else:
|
||||||
|
event.timezone = 'Europe/Paris'
|
||||||
|
return event
|
||||||
|
|
||||||
OBJECTS = {AgendadulibreBrowser: fill_obj}
|
OBJECTS = {AgendadulibreBrowser: fill_obj}
|
||||||
|
|
|
||||||
|
|
@ -645,4 +645,5 @@ class AllocineBrowser(Browser):
|
||||||
event.location = location
|
event.location = location
|
||||||
event.start_date = start_date
|
event.start_date = start_date
|
||||||
event.summary = summary
|
event.summary = summary
|
||||||
|
event.timezone = 'Europe/Paris'
|
||||||
yield event
|
yield event
|
||||||
|
|
|
||||||
|
|
@ -30,3 +30,4 @@ class HybrideCalendarEvent(BaseCalendarEvent):
|
||||||
self.transp = TRANSP.TRANSPARENT
|
self.transp = TRANSP.TRANSPARENT
|
||||||
self.status = STATUS.CONFIRMED
|
self.status = STATUS.CONFIRMED
|
||||||
self.category = CATEGORIES.CINE
|
self.category = CATEGORIES.CINE
|
||||||
|
self.timezone = 'Europe/Paris'
|
||||||
|
|
|
||||||
|
|
@ -28,3 +28,4 @@ class RazibusCalendarEvent(BaseCalendarEvent):
|
||||||
self.transp = TRANSP.TRANSPARENT
|
self.transp = TRANSP.TRANSPARENT
|
||||||
self.status = STATUS.CONFIRMED
|
self.status = STATUS.CONFIRMED
|
||||||
self.category = CATEGORIES.CONCERT
|
self.category = CATEGORIES.CONCERT
|
||||||
|
self.timezone = 'Europe/Paris'
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@
|
||||||
from __future__ import print_function
|
from __future__ import print_function
|
||||||
|
|
||||||
from datetime import time, datetime
|
from datetime import time, datetime
|
||||||
|
from dateutil import tz
|
||||||
|
|
||||||
from weboob.tools.date import parse_date
|
from weboob.tools.date import parse_date
|
||||||
from weboob.tools.application.formatters.iformatter import IFormatter, PrettyFormatter
|
from weboob.tools.application.formatters.iformatter import IFormatter, PrettyFormatter
|
||||||
|
|
@ -54,11 +55,18 @@ class ICalFormatter(IFormatter):
|
||||||
def format_obj(self, obj, alias):
|
def format_obj(self, obj, alias):
|
||||||
result = u'BEGIN:VEVENT\r\n'
|
result = u'BEGIN:VEVENT\r\n'
|
||||||
|
|
||||||
|
utc_zone = tz.gettz('UTC')
|
||||||
|
|
||||||
|
event_timezone = tz.gettz(obj.timezone)
|
||||||
start_date = obj.start_date if not empty(obj.start_date) else datetime.now()
|
start_date = obj.start_date if not empty(obj.start_date) else datetime.now()
|
||||||
result += u'DTSTART:%s\r\n' % start_date.strftime("%Y%m%dT%H%M%SZ")
|
start_date = start_date.replace(tzinfo=event_timezone)
|
||||||
|
utc_start_date = start_date.astimezone(utc_zone)
|
||||||
|
result += u'DTSTART:%s\r\n' % utc_start_date.strftime("%Y%m%dT%H%M%SZ")
|
||||||
|
|
||||||
end_date = obj.end_date if not empty(obj.end_date) else datetime.combine(start_date, time.max)
|
end_date = obj.end_date if not empty(obj.end_date) else datetime.combine(start_date, time.max)
|
||||||
result += u'DTEND:%s\r\n' % end_date.strftime("%Y%m%dT%H%M%SZ")
|
end_date = end_date.replace(tzinfo=event_timezone)
|
||||||
|
utc_end_date = end_date.astimezone(utc_zone)
|
||||||
|
result += u'DTEND:%s\r\n' % utc_end_date.strftime("%Y%m%dT%H%M%SZ")
|
||||||
|
|
||||||
result += u'SUMMARY:%s\r\n' % obj.summary
|
result += u'SUMMARY:%s\r\n' % obj.summary
|
||||||
result += u'UID:%s\r\n' % obj.id
|
result += u'UID:%s\r\n' % obj.id
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,7 @@ class BaseCalendarEvent(BaseObject):
|
||||||
url = StringField('URL of the event')
|
url = StringField('URL of the event')
|
||||||
start_date = DateField('Start date of the event')
|
start_date = DateField('Start date of the event')
|
||||||
end_date = DateField('End date of the event')
|
end_date = DateField('End date of the event')
|
||||||
|
timezone = StringField('Timezone of the event in order to convert to utc time', default='Etc/UCT')
|
||||||
summary = StringField('Title of the event')
|
summary = StringField('Title of the event')
|
||||||
city = StringField('Name of the city in witch event will take place')
|
city = StringField('Name of the city in witch event will take place')
|
||||||
location = StringField('Location of the event')
|
location = StringField('Location of the event')
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue