diff --git a/addons/base_calendar/__openerp__.py b/addons/base_calendar/__openerp__.py index acf7810c727..79516e8d05f 100644 --- a/addons/base_calendar/__openerp__.py +++ b/addons/base_calendar/__openerp__.py @@ -38,13 +38,12 @@ If you need to manage your meetings, you should install the CRM module. 'author': 'OpenERP SA', 'category': 'Hidden/Dependency', 'website': 'http://www.openerp.com', - 'demo': ['crm_meeting_demo.xml'], + 'demo': ['base_calendar_demo.xml'], 'data': [ 'security/calendar_security.xml', 'security/ir.model.access.csv', - 'crm_meeting_view.xml', + 'base_calendar_view.xml', 'base_calendar_data.xml', -# 'res_config_view.xml', ], 'js': [ 'static/src/js/*.js' @@ -53,7 +52,10 @@ If you need to manage your meetings, you should install the CRM module. 'css': [ 'static/src/css/base_calender.css' ], - #'test' : ['test/base_calendar_test.yml'], + 'test' : [ + 'test/base_calendar_test.yml', + 'test/test_crm_recurrent_meeting_case2.yml' + ], 'installable': True, 'application': True, 'auto_install': False, diff --git a/addons/base_calendar/base_calendar.py b/addons/base_calendar/base_calendar.py index 0d71c317666..e59ea3147a8 100644 --- a/addons/base_calendar/base_calendar.py +++ b/addons/base_calendar/base_calendar.py @@ -907,20 +907,18 @@ class crm_meeting(osv.Model): }, } _columns = { - 'create_date': fields.datetime('Creation Date', readonly=True), - 'write_date': fields.datetime('Write Date', readonly=True), +# 'create_date': fields.datetime('Creation Date', readonly=True), +# 'write_date': fields.datetime('Write Date', readonly=True), + 'id': fields.integer('ID', readonly=True), + + 'state': fields.selection([('draft', 'Unconfirmed'), ('open', 'Confirmed')], string='Status', size=16, readonly=True, track_visibility='onchange'), - - # Meeting fields + 'name': fields.char('Meeting Subject', size=128, required=True, states={'done': [('readonly', True)]}), 'is_attendee': fields.function(_compute, string='Attendee', type="boolean", multi='attendee'), 'attendee_status': fields.function(_compute, string='Attendee Status', type="selection", multi='attendee'), 'display_time': fields.function(_compute, string='Event Time', type="char", multi='attendee'), - - # --------------------- - # OLD CALENDAR_EVENT - # --------------------- - 'id': fields.integer('ID', readonly=True), + 'sequence': fields.integer('Sequence'), 'date': fields.datetime('Date', states={'done': [('readonly', True)]}, required=True,track_visibility='onchange'), @@ -1046,18 +1044,6 @@ class crm_meeting(osv.Model): return {'value': value} -# def unlink_events(self, cr, uid, ids, context=None): -# """ -# This function deletes event which are linked with the event with recurrent_id -# (Removes the events which refers to the same UID value) -# """ -# if context is None: -# context = {} -# for event_id in ids: -# r_ids = self.search(cr,uid,[('recurrent_id','=',event_id)],context=context) -# self.unlink(cr, uid, r_ids, context=context) -# return True - def new_invitation_token(self, cr, uid, record, partner_id): db_uuid = self.pool.get('ir.config_parameter').get_param(cr, uid, 'database.uuid') invitation_token = hashlib.sha256('%s-%s-%s-%s-%s' % (time.time(), db_uuid, record._name, record.id, partner_id)).hexdigest() @@ -1468,12 +1454,10 @@ class crm_meeting(osv.Model): return res def write(self, cr, uid, ids, values, context=None): - print "Write : ",ids - print values def _only_changes_to_apply_on_real_ids(field_names): ''' return True if changes are only to be made on the real ids''' for field in field_names: - if field not in ['message_follower_ids']: + if field not in ['name','message_follower_ids']: return False return True @@ -1567,11 +1551,8 @@ class crm_meeting(osv.Model): if vals.get('recurrency', True) and vals.get('end_type', 'count') in ('count', unicode('count')) and \ (vals.get('rrule_type') or vals.get('count') or vals.get('date') or vals.get('date_deadline')): vals['end_date'] = self._get_recurrency_end_date(vals, context=context) - - print "CREATE WITH VALUES",vals res = super(crm_meeting, self).create(cr, uid, vals, context=context) - #res = self.write(cr, uid, id_res,vals, context) self.create_attendees(cr, uid, [res], context=context) return res @@ -1683,16 +1664,16 @@ class crm_meeting(osv.Model): return super(crm_meeting, self).search(cr, uid, domain, context=context) - def delete(self,cr,uid,ids,context=None): - if not isinstance(ids, list): - ids = [ids] - all_ids = [] - for id_to_unlink in ids: - all_ids += self.get_linked_ids(cr, uid, id_to_unlink, context=context) - print "in deleTe functIon === ids : %s, all_ids : %s" % (ids,all_ids) - all_ids = list(set(all_ids)) - res = super(crm_meeting, self).unlink(cr, uid, all_ids, context=context) - return all_ids +# def delete(self,cr,uid,ids,context=None): +# if not isinstance(ids, list): +# ids = [ids] +# all_ids = [] +# for id_to_unlink in ids: +# all_ids += self.get_linked_ids(cr, uid, id_to_unlink, context=context) +# print "in deleTe functIon === ids : %s, all_ids : %s" % (ids,all_ids) +# all_ids = list(set(all_ids)) +# res = super(crm_meeting, self).unlink(cr, uid, all_ids, context=context) +# return all_ids def unlink(self, cr, uid, ids,unlink_level=0, context=None): @@ -1706,15 +1687,14 @@ class crm_meeting(osv.Model): #One time moved to google_Calendar, we can specify, an if not in google, and not rec or get_inst = 0, we delete it for event_id in ids: - #if unlink_level == 1 and len(str(event_id).split('-')) == 1: ## if ID REAL if unlink_level == 1 and len(str(event_id).split('-')) == 1: ## if ID REAL if self.browse(cr,uid,event_id).recurrent_id: - print "Could not be deleted ! because instance of recursive" + # print "Could not be deleted ! because instance of recursive" ids_to_exclure.append(event_id) else: ids_to_unlink.append(event_id) else: - print "Could not be deleted ! because instance virtual" + #print "Could not be deleted ! because instance virtual" ids_to_exclure.append(event_id) diff --git a/addons/base_calendar/crm_meeting_demo.xml b/addons/base_calendar/base_calendar_demo.xml similarity index 99% rename from addons/base_calendar/crm_meeting_demo.xml rename to addons/base_calendar/base_calendar_demo.xml index 0ba1584214e..e94f7681d25 100644 --- a/addons/base_calendar/crm_meeting_demo.xml +++ b/addons/base_calendar/base_calendar_demo.xml @@ -10,7 +10,7 @@ Another Partner - another@partner.com + another_partner@example.com Another User diff --git a/addons/base_calendar/crm_meeting_view.xml b/addons/base_calendar/base_calendar_view.xml similarity index 100% rename from addons/base_calendar/crm_meeting_view.xml rename to addons/base_calendar/base_calendar_view.xml diff --git a/addons/base_calendar/test/base_calendar_test.yml b/addons/base_calendar/test/base_calendar_test.yml index c0861961053..c95646c0fc6 100644 --- a/addons/base_calendar/test/base_calendar_test.yml +++ b/addons/base_calendar/test/base_calendar_test.yml @@ -27,6 +27,18 @@ !python {model: crm.meeting}: | ids = self.search(cr, uid, [('date', '>=', '2011-04-30 16:00:00'), ('date', '<=', '2011-05-31 00:00:00')], context={'virtual_id': True} ) assert len(ids) == 9, 'Wrong number of events found' +- + Now I move a virtual event, to see that a real event is well created and depending from the native recurrence +- + !python {model: crm.meeting}: | + ids = self.search(cr, uid, [('date', '>=', '2011-04-30 16:00:00'), ('date', '<=', '2011-05-31 00:00:00')], context={'virtual_id': True} ) + before = self.search(cr, uid, [('date', '>=', '2011-04-30 16:00:00'), ('date', '<=', '2011-05-31 00:00:00')], context={'virtual_id': False}) + self.write(cr, uid,[ids[1]], {'name':'New Name','recurrency' : True}, context={'virtual_id': True}) + after = self.search(cr, uid, [('date', '>=', '2011-04-30 16:00:00'), ('date', '<=', '2011-05-31 00:00:00')], context={'virtual_id': False}) + assert len(after) == len(before)+1, 'Wrong number of events found, after to have moved a virtual event' + new_id = list(set(after)-set(before))[0] + new_event = self.browse(cr,uid,new_id,context=context) + assert new_event.recurrent_id == before[0], 'Recurrent_id not correctly passed to the new event' - Now I will make All day event and test it - @@ -41,14 +53,14 @@ - In order to check reminder I will first create reminder - - !record {model: res.alarm, id: res_alarm_daybeforeeventstarts0}: + !record {model: calendar.alarm, id: res_alarm_daybeforeeventstarts0}: name: 1 Day before event starts - trigger_duration: 1 - trigger_interval: days - trigger_occurs: before - trigger_related: start + duration: 1 + interval: days + type: notification + - Now I will assign this reminder to all day event - !python {model: crm.meeting}: | - self.write(cr, uid, [ref("crm_meeting_alldaytestevent0")], {'alarm_id': ref("res_alarm_daybeforeeventstarts0")}) + self.write(cr, uid, [ref("crm_meeting_alldaytestevent0")], {'alarm_ids': [(6,0,[ref("res_alarm_daybeforeeventstarts0")])]}) diff --git a/addons/base_calendar/test/test_crm_recurrent_meeting_case2.yml b/addons/base_calendar/test/test_crm_recurrent_meeting_case2.yml index 0fd34fdd010..12c1bb363cb 100644 --- a/addons/base_calendar/test/test_crm_recurrent_meeting_case2.yml +++ b/addons/base_calendar/test/test_crm_recurrent_meeting_case2.yml @@ -70,9 +70,8 @@ I change name of my monthly Sprint Review meeting. - !python {model: crm.meeting}: | - from base_calendar import base_calendar - base_cal_id = base_calendar.real_id2base_calendar_id(ref('crm_meeting_sprintreview0'), '2011-09-01 13:01:00') - self.write(cr, uid, [base_cal_id], {'name': 'Sprint Review for google modules'}) + idval = '%d-%s' % (ref('crm_meeting_sprintreview0'), '20110901130100') + self.write(cr, uid, [idval], {'name': 'Sprint Review for google modules'}) - I check whether all the records are edited or not. - @@ -85,13 +84,13 @@ I change description of my weekly meeting Review code with programmer. - !python {model: crm.meeting}: | - from base_calendar import base_calendar - base_cal_id = base_calendar.real_id2base_calendar_id(ref('crm_meeting_reviewcodewithprogrammer0'), '2011-04-25 12:47:00') - self.write(cr, uid, [base_cal_id], {'description': 'Review code of the module: sync_google_calendar.'}) + idval = '%d-%s' % (ref('crm_meeting_sprintreview0'), '20110425124700') + self.write(cr, uid, [idval], {'description': 'Review code of the module: sync_google_calendar.'}) - I check whether the record is edited perfectly or not. - !python {model: crm.meeting}: | - meeting_ids = self.search(cr, uid, [('recurrent_id', '=', ref('crm_meeting_reviewcodewithprogrammer0')), ('recurrent_id_date','=','2011-04-25 12:47:00')], context) + meeting_ids = self.search(cr, uid, [('recurrent_id', '=', ref('crm_meeting_sprintreview0')), ('recurrent_id_date','=','2011-04-25 12:47:00')], context) + print ref('crm_meeting_reviewcodewithprogrammer0'),meeting_ids assert meeting_ids, 'Meeting is not edited !' diff --git a/addons/google_calendar/google_calendar.py b/addons/google_calendar/google_calendar.py index f2c00f80ffe..dd437b419b9 100644 --- a/addons/google_calendar/google_calendar.py +++ b/addons/google_calendar/google_calendar.py @@ -308,7 +308,7 @@ class google_calendar(osv.osv): response = self.create_an_event(cr,uid,att.event_id,context=context) update_date = datetime.strptime(response['updated'],"%Y-%m-%dT%H:%M:%S.%fz") crm_meeting.write(cr, uid, att.event_id.id, {'oe_update_date':update_date}) - att_obj.write(cr, uid, [att.id], {'google_internal_event_id': response['id'], 'oe_syncro_date':update_date}) + att_obj.write(cr, uid, [att.id], {'google_internal_event_id': response['id'], 'oe_synchro_date':update_date}) #Check that response OK and return according to that cr.commit() return True @@ -723,7 +723,7 @@ class calendar_attendee(osv.osv): _inherit = 'calendar.attendee' _columns = { - 'google_internal_event_id': fields.char('Google Calendar Event Id', size=124), + 'google_internal_event_id': fields.char('Google Calendar Event Id', size=256), 'oe_synchro_date': fields.datetime('OpenERP Synchro Date'), } diff --git a/addons/google_calendar/google_calendar.pyc b/addons/google_calendar/google_calendar.pyc index f8d03454c1d..11651b4817b 100644 Binary files a/addons/google_calendar/google_calendar.pyc and b/addons/google_calendar/google_calendar.pyc differ