[IMP]: Caldav: Improvement for caldav alarm export
bzr revid: rpa@tinyerp.com-20091217062630-x84cwkgmm2jkv95q
This commit is contained in:
parent
9d3016681b
commit
12119467bd
|
@ -20,7 +20,7 @@
|
|||
#
|
||||
##############################################################################
|
||||
|
||||
from datetime import datetime
|
||||
from datetime import datetime, timedelta
|
||||
from dateutil import parser
|
||||
from dateutil.rrule import *
|
||||
from osv import fields, osv
|
||||
|
@ -110,12 +110,27 @@ class CalDAV(object):
|
|||
alarm = vevent.add('valarm')
|
||||
alarm_object = self.pool.get('crm.caldav.alarm')
|
||||
alarm_data = alarm_object.read(cr, uid, data[map_field][0], [])
|
||||
|
||||
# Compute trigger data
|
||||
interval = alarm_data['trigger_interval']
|
||||
duration = alarm_data['trigger_duration']
|
||||
related = alarm_data['trigger_related']
|
||||
occurs = alarm_data['trigger_occurs']
|
||||
value_string = (occurs == 'BEFORE' and '-P' or 'P') +\
|
||||
str(duration) + interval[0]
|
||||
duration = (occurs == 'AFTER' and alarm_data['trigger_duration']) \
|
||||
or -(alarm_data['trigger_duration'])
|
||||
related = alarm_data['trigger_related']
|
||||
trigger = alarm.add('TRIGGER')
|
||||
trigger.params['RELATED'] = [related.upper()]
|
||||
if interval == 'DAYS':
|
||||
delta = timedelta(days=duration)
|
||||
if interval == 'HOURS':
|
||||
delta = timedelta(hours=duration)
|
||||
if interval == 'MINUTES':
|
||||
delta = timedelta(minutes=duration)
|
||||
trigger.value = delta
|
||||
|
||||
# Compute other details
|
||||
alarm.add('DESCRIPTION').value = alarm_data['name']
|
||||
alarm.add('ACTION').value = alarm_data['action']
|
||||
|
||||
elif data[map_field]:
|
||||
if map_type == "text":
|
||||
vevent.add(field).value = str(data[map_field])
|
||||
|
@ -148,7 +163,7 @@ class CalDAV(object):
|
|||
vals = map_data(cr, uid, self)
|
||||
return vals
|
||||
|
||||
|
||||
|
||||
class Calendar(CalDAV, osv.osv_memory):
|
||||
_name = 'caldav.calendar'
|
||||
__attribute__ = {
|
||||
|
@ -322,7 +337,7 @@ class Attendee(CalDAV, osv.osv_memory):
|
|||
'dir': None, # Use: 0-1 Specify reference to a directory entry associated with the calendar user specified by the property.
|
||||
'language': None, # Use: 0-1 Specify the language for text values in a property or property parameter.
|
||||
}
|
||||
|
||||
|
||||
def import_ical(self, cr, uid, ical_data):
|
||||
for para in ical_data.params:
|
||||
if para.lower() == 'cn':
|
||||
|
@ -332,4 +347,4 @@ class Attendee(CalDAV, osv.osv_memory):
|
|||
vals = map_data(cr, uid, self)
|
||||
return vals
|
||||
|
||||
Attendee()
|
||||
Attendee()
|
||||
|
|
|
@ -113,7 +113,7 @@ class crm_caldav_alarm(osv.osv):
|
|||
'trigger_interval' : fields.selection([('MINUTES', 'MINUTES'), ('HOURS', 'HOURS'), \
|
||||
('DAYS', 'DAYS')], 'Trugger duration', required=True),
|
||||
'trigger_duration' : fields.integer('TIme' , required=True),
|
||||
'trigger_related' : fields.selection([('starts', 'The event starts'), ('end', \
|
||||
'trigger_related' : fields.selection([('start', 'The event starts'), ('end', \
|
||||
'The event ends')], 'Trigger Occures at', required=True),
|
||||
'duration' : fields.integer('Duration'),
|
||||
'repeat' : fields.integer('Repeat'), # TODO
|
||||
|
@ -126,7 +126,7 @@ class crm_caldav_alarm(osv.osv):
|
|||
'trigger_interval' : lambda *x: 'MINUTES',
|
||||
'trigger_duration' : lambda *x: 5,
|
||||
'trigger_occurs' : lambda *x: 'BEFORE',
|
||||
'trigger_related' : lambda *x: 'starts',
|
||||
'trigger_related' : lambda *x: 'start',
|
||||
}
|
||||
|
||||
crm_caldav_alarm()
|
||||
|
@ -238,13 +238,14 @@ class crm_case(osv.osv):
|
|||
mail_to = []
|
||||
for alarmdata in case_with_alarm:
|
||||
dtstart = datetime.datetime.strptime(alarmdata['date'], "%Y-%m-%d %H:%M:%S")
|
||||
if alarmdata['trigger_duration'] == 'DAYS':
|
||||
delta = datetime.timedelta(days=alarmdata['trigger_interval'])
|
||||
if alarmdata['trigger_duration'] == 'HOURS':
|
||||
delta = datetime.timedelta(hours=alarmdata['trigger_interval'])
|
||||
if alarmdata['trigger_duration'] == 'MINUTES':
|
||||
delta = datetime.timedelta(minutes=alarmdata['trigger_interval'])
|
||||
alarm_time = dtstart + (alarmdata['trigger_related']== 'AFTER' and delta or -delta)
|
||||
if alarmdata['trigger_interval'] == 'DAYS':
|
||||
delta = datetime.timedelta(days=alarmdata['trigger_duration'])
|
||||
if alarmdata['trigger_interval'] == 'HOURS':
|
||||
delta = datetime.timedelta(hours=alarmdata['trigger_duration'])
|
||||
if alarmdata['trigger_interval'] == 'MINUTES':
|
||||
delta = datetime.timedelta(minutes=alarmdata['trigger_duration'])
|
||||
alarm_time = dtstart + (alarmdata['trigger_occurs']== 'AFTER' and delta or -delta)
|
||||
print 'alarm_time', alarm_time
|
||||
if datetime.datetime.now() >= alarm_time:
|
||||
case_val = case_obj.browse(cr, uid, alarmdata.get('id'), context)[0]
|
||||
for att in case_val.attendees:
|
||||
|
|
Loading…
Reference in New Issue