diff --git a/addons/caldav/caldav_view.xml b/addons/caldav/caldav_view.xml
index 639d19db75f..2c95f47a14e 100644
--- a/addons/caldav/caldav_view.xml
+++ b/addons/caldav/caldav_view.xml
@@ -1,6 +1,89 @@
+
+
+ crm.case.caldav.attendee
+ crm.caldav.attendee
+ form
+
+
+
+
+
+
+ crm.case.caldav.attendee
+ crm.caldav.attendee
+ tree
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ crm.case.caldav.alarm.form
+ crm.caldav.alarm
+ form
+
+
+
+
+
+
+ crm.case.caldav.alarm.tree
+ crm.caldav.alarm
+ tree
+
+
+
+
+
+
+
+
+
+
+
+
+
Add RRule
caldav.set.rrule
diff --git a/addons/caldav/common.py b/addons/caldav/common.py
index c973163af06..2654c51caa9 100644
--- a/addons/caldav/common.py
+++ b/addons/caldav/common.py
@@ -309,7 +309,7 @@ class set_rrule_wizard(osv.osv_memory):
else:
model = context.get('model')
obj = self.pool.get(model)
- res_obj = obj.browse(cr, uid, context['active_id'])[0]
+ res_obj = obj.browse(cr, uid, context['active_id'])
weekdays = ['mo', 'tu', 'we', 'th', 'fr', 'sa', 'su']
weekstring = ''
monthstring = ''
@@ -362,4 +362,4 @@ class set_rrule_wizard(osv.osv_memory):
set_rrule_wizard()
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/crm/__init__.py b/addons/crm/__init__.py
index 458f4cd8265..6308c9a1e2a 100644
--- a/addons/crm/__init__.py
+++ b/addons/crm/__init__.py
@@ -21,7 +21,7 @@
import crm
import crm_segmentation
-import crm_calendar
+import crm_meeting
import crm_config
import report
diff --git a/addons/crm/__terp__.py b/addons/crm/__terp__.py
index f76a435566b..c75ab1649ed 100644
--- a/addons/crm/__terp__.py
+++ b/addons/crm/__terp__.py
@@ -48,7 +48,7 @@ between mails and Open ERP.""",
'caldav',
'process'
],
- 'init_xml': ['crm_data.xml'
+ 'init_xml': ['crm_data.xml', 'crm_meeting_data.xml'
],
'update_xml': [
'crm_wizard.xml',
@@ -57,8 +57,10 @@ between mails and Open ERP.""",
'crm_config_view.xml',
'crm_bugs_view.xml',
'crm_jobs_view.xml',
- 'crm_lead_view.xml',
+ 'crm_lead_view.xml',
+ 'crm_meeting_wizard.xml',
'crm_meeting_view.xml',
+ 'crm_meeting_menu.xml',
'crm_opportunity_view.xml',
'crm_fund_view.xml',
'crm_claims_view.xml',
@@ -70,7 +72,7 @@ between mails and Open ERP.""",
'security/ir.model.access.csv',
'process/crm_configuration_process.xml'
],
- 'demo_xml': ['crm_demo.xml'],
+ 'demo_xml': ['crm_demo.xml', 'crm_meeting_demo.xml'],
'installable': True,
'active': False,
'certificate': '0079056041421',
diff --git a/addons/crm/crm.py b/addons/crm/crm.py
index 3c488d760ae..fe34eca501e 100755
--- a/addons/crm/crm.py
+++ b/addons/crm/crm.py
@@ -1105,47 +1105,5 @@ class crm_email_add_cc_wizard(osv.osv_memory):
return {}
crm_email_add_cc_wizard()
-
-
-class crm_calendar_config_wizard(osv.osv_memory):
- _name = 'crm.calendar.config_wizard'
- _columns = {
- 'name': fields.char('Name', size=64),
- 'caldav': fields.boolean('Caldav Properties View', help="Manages the fields required for Caldav Properties.")
- }
-
- def action_create(self, cr, uid, ids, context=None):
- res = self.read(cr, uid, ids)[0]
- idref = {}
- if res['caldav']:
- for fname in ('view', 'wizard', 'data'):
- try:
- fp = tools.file_open(os.path.join('crm', 'crm_caldav_' + fname + '.xml'))
- except IOError, e:
- fp = None
- if fp:
- tools.convert_xml_import(cr, 'crm', fp, idref, 'init', noupdate=True)
- cr.commit()
-
- return {
- 'view_type': 'form',
- "view_mode": 'form',
- 'res_model': 'ir.actions.configuration.wizard',
- 'type': 'ir.actions.act_window',
- 'target': 'new',
- }
-
- def action_cancel(self, cr, uid, ids, context=None):
- return {
- 'view_type': 'form',
- "view_mode": 'form',
- 'res_model': 'ir.actions.configuration.wizard',
- 'type': 'ir.actions.act_window',
- 'target': 'new',
- }
-
-crm_calendar_config_wizard()
-
-
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/crm/crm_caldav_data.xml b/addons/crm/crm_caldav_data.xml
deleted file mode 100644
index 91b80586d69..00000000000
--- a/addons/crm/crm_caldav_data.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
- Run Event Reminder
-
-
- 1
- days
- -1
-
-
-
-
-
-
-
diff --git a/addons/crm/crm_caldav_view.xml b/addons/crm/crm_caldav_view.xml
deleted file mode 100644
index b3ca3b69e39..00000000000
--- a/addons/crm/crm_caldav_view.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-
-
-
-
- crm.case.caldav.attendee
- crm.caldav.attendee
- form
-
-
-
-
-
-
- crm.case.caldav.attendee
- crm.caldav.attendee
- tree
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- crm.case.caldav.alarm.form
- crm.caldav.alarm
- form
-
-
-
-
-
-
- crm.case.caldav.alarm.tree
- crm.caldav.alarm
- tree
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- crm.case.caldav.form
- crm.case
- form
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- crm.case.caldav.tree1
- crm.case
- tree
-
-
-
-
-
-
-
-
-
-
diff --git a/addons/crm/crm_calendar.py b/addons/crm/crm_meeting.py
similarity index 80%
rename from addons/crm/crm_calendar.py
rename to addons/crm/crm_meeting.py
index f321138a2dd..c125e7b498c 100644
--- a/addons/crm/crm_calendar.py
+++ b/addons/crm/crm_meeting.py
@@ -28,11 +28,11 @@ import re
import time
import tools
-class crm_case(osv.osv):
- _name = 'crm.case'
- _inherit = 'crm.case'
- _description = 'Cases'
-
+class crm_meeting(osv.osv):
+ _name = 'crm.meeting'
+ _description = "Meeting Cases"
+ _order = "id desc"
+ _inherits = {'crm.case':"inherit_case_id"}
__attribute__ = {
'class' : {'field':'class', 'type':'text'},
'created' : {'field':'create_date', 'type':'datetime'}, # keep none for now
@@ -68,22 +68,7 @@ class crm_case(osv.osv):
# 'duration' : {'field':'duration'},
'dtend' : {'field':'date_closed', 'type':'datetime'},
'valarm' : {'field':'alarm_id', 'type':'many2one', 'object' : 'crm.caldav.alarm'},
- }
-
- def _get_location(self, cr, uid, ids, name, arg, context=None):
- res = {}
- for case in self.browse(cr, uid, ids):
- if case.partner_address_id:
- add = case.partner_address_id
- st = add.street and add.street+',\n' or ''
- st2 = add.street2 and add.street2+',\n' or ''
- ct = add.city and add.city+',\n' or ''
- zip = add.zip and add.zip or ''
- country = add.country_id and add.country_id.name+',\n' or ''
- res[case.id] = st + st2+ ct + country + zip
- else:
- res[case.id] = ''
- return res
+ }
def _get_rdates(self, cr, uid, ids, name, arg, context=None):
res = {}
@@ -97,44 +82,44 @@ class crm_case(osv.osv):
return res
_columns = {
+ 'inherit_case_id': fields.many2one('crm.case','Case',ondelete='cascade'),
'class' : fields.selection([('PUBLIC', 'PUBLIC'), ('PRIVATE', 'PRIVATE'), \
- ('CONFIDENTIAL', 'CONFIDENTIAL')], 'Class'),
- 'location' : fields.function(_get_location, method=True, store=True, \
- string='Location', type='text'),
+ ('CONFIDENTIAL', 'CONFIDENTIAL')], 'Privacy'),
+ 'location' : fields.char('Location', size=264, help="Gives Location of Meeting"),
'freebusy' : fields.text('FreeBusy'),
'transparent' : fields.selection([('TRANSPARENT', 'TRANSPARENT'), \
('OPAQUE', 'OPAQUE')], 'Trensparent'),
'caldav_url' : fields.char('Caldav URL', size=264),
'exdate' : fields.text('Exception Date/Times', help="This property defines the list\
of date/time exceptions for arecurring calendar component."),
- 'exrule' : fields.text('Exception Rule', help="defines a rule or repeating pattern\
+ 'exrule' : fields.char('Exception Rule', size=352, help="defines a rule or repeating pattern\
for anexception to a recurrence set"),
- 'rrule' : fields.text('Recurrent Rule', readonly=True),
+ 'rrule' : fields.char('Recurrent Rule', size=352),
'rdates' : fields.function(_get_rdates, method=True, string='Recurrent Dates', \
store=True, type='text'),
- 'attendees': fields.many2many('crm.caldav.attendee', 'crm_attendee_rel', 'case_id', \
+ 'attendees': fields.many2many('crm.caldav.attendee', 'crm_attendee_rel', 'case_id', \
'attendee_id', 'Attendees'),
- 'alarm_id' : fields.many2one('crm.caldav.alarm', 'Alarm'),
+ 'alarm_id' : fields.many2one('crm.caldav.alarm', 'Alarm'),
}
- _defaults = {
- 'caldav_url': lambda *a: 'http://localhost:8080',
+ _defaults = {
'class': lambda *a: 'PUBLIC',
'transparent': lambda *a: 'OPAQUE',
- }
+ }
def run_scheduler(self, cr, uid, automatic=False, use_new_cursor=False, \
context=None):
if not context:
context = {}
- cr.execute('select c.id as id, c.date as date, alarm.id as alarm_id, alarm.name as name,\
+ cr.execute('select c.id as id, crm_case.date as date, alarm.id as alarm_id, alarm.name as name,\
alarm.trigger_interval, alarm.trigger_duration, alarm.trigger_related, \
- alarm.trigger_occurs from crm_case c \
+ alarm.trigger_occurs from crm_meeting c \
+ join crm_case on c.inherit_case_id = crm_case.id \
join crm_caldav_alarm alarm on (alarm.id=c.alarm_id) \
where alarm_id is not null and alarm.active=True')
case_with_alarm = cr.dictfetchall()
- case_obj = self.pool.get('crm.case')
+ case_obj = self.pool.get('crm.meeting')
attendee_obj = self.pool.get('crm.caldav.attendee')
mail_to = []
for alarmdata in case_with_alarm:
@@ -180,7 +165,7 @@ class crm_case(osv.osv):
crm_alarm = self.pool.get('crm.caldav.alarm')
alarm_obj.__attribute__.update(crm_alarm.__attribute__)
- ical = event_obj.export_ical(cr, uid, crm_data, {'model': 'crm.case'})
+ ical = event_obj.export_ical(cr, uid, crm_data, {'model': 'crm.meeting'})
caendar_val = ical.serialize()
caendar_val = caendar_val.replace('"', '').strip()
return caendar_val
@@ -199,9 +184,6 @@ class crm_case(osv.osv):
alarm_obj.__attribute__.update(crm_alarm.__attribute__)
vals = event_obj.import_ical(cr, uid, file_content)
for val in vals:
- # TODO: Select proper section
- section_id = self.pool.get('crm.case.section').search(cr, uid, [])[0]
- val.update({'section_id' : section_id})
is_exists = common.uid2openobjectid(cr, val['id'], self._name )
val.pop('id')
if val.has_key('create_date'): val.pop('create_date')
@@ -214,7 +196,7 @@ class crm_case(osv.osv):
def search(self, cr, uid, args, offset=0, limit=None, order=None,
context=None, count=False):
- res = super(crm_case, self).search(cr, uid, args, offset,
+ res = super(crm_meeting, self).search(cr, uid, args, offset,
limit, order, context, count)
return res
@@ -226,32 +208,40 @@ class crm_case(osv.osv):
new_ids.append(id)
if 'case_id' in vals :
vals['case_id'] = common.caldevIDs2readIDs(vals['case_id'])
- res = super(crm_case, self).write(cr, uid, new_ids, vals, context=context)
+ res = super(crm_meeting, self).write(cr, uid, new_ids, vals, context=context)
return res
- def browse(self, cr, uid, select, context=None, list_class=None, fields_process={}):
- if not isinstance(select, list): select = [select]
+ def browse(self, cr, uid, ids, context=None, list_class=None, fields_process={}):
+ if isinstance(ids, (str, int, long)):
+ select = [ids]
+ else:
+ select = ids
select = map(lambda x:common.caldevIDs2readIDs(x), select)
- return super(crm_case, self).browse(cr, uid, select, context, list_class, fields_process)
+ res = super(crm_meeting, self).browse(cr, uid, select, context, list_class, fields_process)
+ if isinstance(ids, (str, int, long)):
+ return res and res[0] or False
+ return res
def read(self, cr, uid, ids, fields=None, context={}, load='_classic_read'):
""" logic for recurrent event
- example : 123-20091111170822"""
+ example : 123-20091111170822"""
if context and context.has_key('read'):
- return super(crm_case, self).read(cr, uid, ids, fields=fields, context=context, \
+ return super(crm_meeting, self).read(cr, uid, ids, fields=fields, context=context, \
load=load)
if not type(ids) == list :
# Called from code
- return super(crm_case, self).read(cr, uid, common.caldevIDs2readIDs(ids), \
+ return super(crm_meeting, self).read(cr, uid, common.caldevIDs2readIDs(ids), \
fields=fields, context=context, load=load)
else:
ids = map(lambda x:common.caldevIDs2readIDs(x), ids)
- fields.append('date')
- res = super(crm_case, self).read(cr, uid, ids, fields=fields, context=context, load=load)
+
+ if fields and 'date' not in fields:
+ fields.append('date')
+ res = super(crm_meeting, self).read(cr, uid, ids, fields=fields, context=context, load=load)
read_ids = ",".join([str(x) for x in ids])
if not read_ids:
return []
- cr.execute('select id,rrule,rdates from crm_case where id in (%s)' % read_ids)
+ cr.execute('select id,rrule,rdates from crm_meeting where id in (%s)' % read_ids)
rrules = filter(lambda x: not x['rrule']==None, cr.dictfetchall())
rdates = []
if not rrules:
@@ -283,8 +273,8 @@ class crm_case(osv.osv):
result += [val1]
return result
- def copy(self, cr, uid, id, default=None, context={}):
- return super(crm_case, self).copy(cr, uid, common.caldevIDs2readIDs(id), \
+ def copy(self, cr, uid, id, default=None, context={}):
+ return super(crm_meeting, self).copy(cr, uid, common.caldevIDs2readIDs(id), \
default, context)
def unlink(self, cr, uid, ids, context=None):
@@ -301,16 +291,16 @@ class crm_case(osv.osv):
self.write(cr, uid, [common.caldevIDs2readIDs(id)], {'exdate' : exdate})
else:
ids = map(lambda x:common.caldevIDs2readIDs(x), ids)
- return super(crm_case, self).unlink(cr, uid, common.caldevIDs2readIDs(ids))
+ return super(crm_meeting, self).unlink(cr, uid, common.caldevIDs2readIDs(ids))
else:
- return super(crm_case, self).unlink(cr, uid, ids)
+ return super(crm_meeting, self).unlink(cr, uid, ids)
def create(self, cr, uid, vals, context={}):
if 'case_id' in vals:
vals['case_id'] = common.caldevIDs2readIDs(vals['case_id'])
- return super(crm_case, self).create(cr, uid, vals, context)
+ return super(crm_meeting, self).create(cr, uid, vals, context)
-crm_case()
+crm_meeting()
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/crm/crm_meeting_data.xml b/addons/crm/crm_meeting_data.xml
index 086222c9f25..8d9a9b52426 100644
--- a/addons/crm/crm_meeting_data.xml
+++ b/addons/crm/crm_meeting_data.xml
@@ -59,6 +59,20 @@
Future
+
+
+ Run Event Reminder
+
+
+ 1
+ days
+ -1
+
+
+
+
+
diff --git a/addons/crm/crm_meeting_demo.xml b/addons/crm/crm_meeting_demo.xml
index df5246e31a4..b572f749f2e 100644
--- a/addons/crm/crm_meeting_demo.xml
+++ b/addons/crm/crm_meeting_demo.xml
@@ -6,7 +6,7 @@
-->
-
+
@@ -23,7 +23,7 @@
-
+
@@ -41,7 +41,7 @@
-
+
@@ -59,7 +59,7 @@
-
+
@@ -76,7 +76,7 @@
-
+
@@ -94,7 +94,7 @@
-
+
diff --git a/addons/crm/crm_meeting_menu.xml b/addons/crm/crm_meeting_menu.xml
index a7458fa388d..f6381b26afa 100755
--- a/addons/crm/crm_meeting_menu.xml
+++ b/addons/crm/crm_meeting_menu.xml
@@ -5,15 +5,14 @@
+ />
-
-
+
@@ -46,14 +45,13 @@
+ />
-
-
+
@@ -83,7 +81,7 @@
- crm.case
+ crm.meeting
calendar,tree,form,gantt
@@ -123,7 +121,7 @@
Next Meetings
- crm.case
+ crm.meeting
form
tree,calendar,form,gantt
diff --git a/addons/crm/crm_meeting_view.xml b/addons/crm/crm_meeting_view.xml
index 3a0c40d2bba..fa396cd8341 100644
--- a/addons/crm/crm_meeting_view.xml
+++ b/addons/crm/crm_meeting_view.xml
@@ -7,7 +7,7 @@
CRM - Meetings Form
- crm.case
+ crm.meeting
form
CRM - Meetings Tree
- crm.case
+ crm.meeting
tree
-
+
@@ -69,7 +93,7 @@
CRM - Meetings Calendar
- crm.case
+ crm.meeting
calendar
@@ -83,11 +107,11 @@
CRM - Meetings Gantt
- crm.case
+ crm.meeting
gantt
-
+
@@ -95,8 +119,8 @@
- crm.case.meetings.select
- crm.case
+ CRM - Meetings Search
+ crm.meeting
search
@@ -114,6 +138,6 @@
-
+
diff --git a/addons/crm/crm_caldav_wizard.xml b/addons/crm/crm_meeting_wizard.xml
similarity index 50%
rename from addons/crm/crm_caldav_wizard.xml
rename to addons/crm/crm_meeting_wizard.xml
index fa20285638d..0be9650a456 100644
--- a/addons/crm/crm_caldav_wizard.xml
+++ b/addons/crm/crm_meeting_wizard.xml
@@ -1,19 +1,20 @@
+
-
-
-
-
-
\ No newline at end of file
+
diff --git a/addons/crm/crm_view.xml b/addons/crm/crm_view.xml
index 6798ed51e59..8bd4fd653d5 100644
--- a/addons/crm/crm_view.xml
+++ b/addons/crm/crm_view.xml
@@ -731,44 +731,7 @@
tree,form
-
-
-
-
-
-
-
-
-
-
+
diff --git a/addons/crm/security/ir.model.access.csv b/addons/crm/security/ir.model.access.csv
index c1b4b1738d6..cb1cc46f9e8 100644
--- a/addons/crm/security/ir.model.access.csv
+++ b/addons/crm/security/ir.model.access.csv
@@ -33,4 +33,3 @@
"access_crm_case_category2_manager","crm_case_category2 manager","model_crm_case_category2","crm.group_crm_manager",1,1,1,1
"access_crm_generic_wizard_manager","crm.generic_wizard","model_crm_generic_wizard","crm.group_crm_manager",1,1,1,1
"access_crm_generic_wizard_manager","crm.generic_wizard","model_crm_generic_wizard","crm.group_crm_user",1,0,0,0
-"access_crm_calendar_config_wizard","crm.calendar.config_wizard","model_crm_calendar_config_wizard",,1,1,1,1
diff --git a/addons/crm/wizard/wizard_cal_export.py b/addons/crm/wizard/wizard_cal_export.py
index a166e55f292..6a537f24f78 100644
--- a/addons/crm/wizard/wizard_cal_export.py
+++ b/addons/crm/wizard/wizard_cal_export.py
@@ -47,7 +47,7 @@ class crm_cal_export_wizard(wizard.interface):
}
def _process_export_ics(self, cr, uid, data, context):
- case_obj = pooler.get_pool(cr.dbname).get('crm.case')
+ case_obj = pooler.get_pool(cr.dbname).get('crm.meeting')
calendar = case_obj.export_cal(cr, uid, data['ids'], context)
return {'file_path': base64.encodestring(calendar), \
'name': 'OpenERP Events.ics'}
@@ -61,4 +61,4 @@ class crm_cal_export_wizard(wizard.interface):
crm_cal_export_wizard('caldav.crm.export')
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/crm/wizard/wizard_cal_import.py b/addons/crm/wizard/wizard_cal_import.py
index 8a1809cab50..def39ae5712 100644
--- a/addons/crm/wizard/wizard_cal_import.py
+++ b/addons/crm/wizard/wizard_cal_import.py
@@ -52,7 +52,7 @@ class crm_cal_import_wizard(wizard.interface):
}
def _process_imp_ics(self, cr, uid, data, context=None):
- case_obj = pooler.get_pool(cr.dbname).get('crm.case')
+ case_obj = pooler.get_pool(cr.dbname).get('crm.meeting')
vals = case_obj.import_cal(cr, uid, data['form']['file_path'], context)
global cnt
cnt = 0
@@ -82,4 +82,4 @@ class crm_cal_import_wizard(wizard.interface):
crm_cal_import_wizard('caldav.crm.import')
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/crm/wizard/wizard_cal_subscribe.py b/addons/crm/wizard/wizard_cal_subscribe.py
index 5b312a11e67..587b21f6f24 100644
--- a/addons/crm/wizard/wizard_cal_subscribe.py
+++ b/addons/crm/wizard/wizard_cal_subscribe.py
@@ -58,7 +58,7 @@ class crm_cal_subscribe_wizard(wizard.interface):
f = urllib.urlopen(data['form']['url_path'])
caldata= f.fp.read()
f.close()
- case_obj = pooler.get_pool(cr.dbname).get('crm.case')
+ case_obj = pooler.get_pool(cr.dbname).get('crm.meeting')
context.update({'url': data['form']['url_path']})
vals = case_obj.import_cal(cr, uid, base64.encodestring(caldata), context)
if vals:
@@ -87,4 +87,4 @@ class crm_cal_subscribe_wizard(wizard.interface):
crm_cal_subscribe_wizard('caldav.crm.subscribe')
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: