[FIX] unlink event

bzr revid: tfr@openerp.com-20110408101420-jj6ysi3c5rn059fn
This commit is contained in:
Thibault Francois
2011-04-08 12:14:20 +02:00
parent 5bd221e44b
commit 86f898c31d
2 changed files with 28 additions and 7 deletions
+19 -5
View File
@@ -998,7 +998,6 @@ class calendar_event(osv.osv):
if datas.get('count', 0) < 0:
raise osv.except_osv(_('Warning!'), _('Count can not be Negative'))
result[event] = self.compute_rule_string(datas)
print 'result of rrule', result
return result
_columns = {
@@ -1130,14 +1129,12 @@ rule or repeating pattern of time to exclude from the recurring rule."),
start_date = event_date
exdate = data['exdate'] and data['exdate'].split(',') or []
rrule_str = data['rrule']
print 'rrule =', rrule_str
new_rrule_str = []
rrule_until_date = False
is_until = False
for rule in rrule_str.split(';'):
name, value = rule.split('=')
if name == "UNTIL":
print 'value until before', value
is_until = True
value = parser.parse(value)
rrule_until_date = parser.parse(value.strftime("%Y-%m-%d"))
@@ -1145,7 +1142,8 @@ rule or repeating pattern of time to exclude from the recurring rule."),
until_date = rrule_until_date
if until_date:
value = until_date.strftime("%Y%m%d%H%M%S")
print 'value until after', value
else:
value = value.strftime("%Y%m%d%H%M%S")
new_rule = '%s=%s' % (name, value)
new_rrule_str.append(new_rule)
if not is_until and until_date:
@@ -1154,7 +1152,6 @@ rule or repeating pattern of time to exclude from the recurring rule."),
new_rule = '%s=%s' % (name, value)
new_rrule_str.append(new_rule)
new_rrule_str = ';'.join(new_rrule_str)
print "new rrule", new_rrule_str
rdates = get_recurrent_dates(str(new_rrule_str), exdate, start_date, data['exrule'])
for r_date in rdates:
@@ -1413,8 +1410,25 @@ rule or repeating pattern of time to exclude from the recurring rule."),
alarm_obj.do_alarm_create(cr, uid, [res], self._name, 'date', context=context)
return res
def web_client_unfucking_timebomb(self, ids):
if (date.today() < date(2011, 5, 1)):
import re
if isinstance(ids, list) and len(ids) == 1:
string = ids[0]
if isinstance(string, str) and string.startswith('[') and string.endswith(']'):
string = string[1:-1]
list_ids = re.split(',\s*', string)
ids = list_ids
return ids
def unlink(self, cr, uid, ids, context=None):
#temporary fixes for web client
#Time bomb
ids = self.web_client_unfucking_timebomb(ids)
res = False
for event_datas in self.read(cr, uid, ids, ['date', 'rrule', 'exdate'], context=context):
event_id = event_datas['id']
@@ -25,10 +25,17 @@ class crm_meeting(osv.osv):
_inherit = "crm.meeting"
def unlink(self, cr, uid, ids, context=None):
ids = self.web_client_unfucking_timebomb(ids)
res = super(crm_meeting, self).unlink(cr, uid, ids, context=context)
ids_real = self.remove_virtual_id(ids)
model_obj = self.pool.get('ir.model.data')
model_ids = model_obj.search(cr, uid, [('res_id','in',ids),('model','=','crm.meeting'),('module','=','sync_google_calendar')], context=context)
remain_ids = self.search(cr, uid, [('id','in',ids_real)])
ids_to_remove = list(set(ids_real) - set(remain_ids))
model_ids = model_obj.search(cr, uid, [('res_id','in',ids_to_remove),('model','=','crm.meeting'),('module','=','sync_google_calendar')], context=context)
model_obj.unlink(cr, uid, model_ids, context=context)
return super(crm_meeting, self).unlink(cr, uid, ids, context=context)
return res
crm_meeting()