[FIX]: base_calendar, caldav: Fixed problem of wrong attribute value in attendee and put proper email and cn value while importing ics file with attendee data
bzr revid: rpa@openerp.co.in-20100127131941-gubmtane9u92wi1s
This commit is contained in:
parent
941667e77d
commit
cb5b75b569
|
@ -27,6 +27,7 @@ from tools.translate import _
|
|||
import base64
|
||||
import pooler
|
||||
import re
|
||||
import tools
|
||||
import vobject
|
||||
|
||||
# O-1 Optional and can come only once
|
||||
|
@ -84,7 +85,7 @@ def get_attribute_mapping(cr, uid, calname, context={}):
|
|||
if not res.get('uid', None):
|
||||
res['uid'] = {}
|
||||
res['uid']['field'] = 'id'
|
||||
res[attr]['type'] = "integer"
|
||||
res['uid']['type'] = "integer"
|
||||
return res
|
||||
|
||||
def map_data(cr, uid, obj):
|
||||
|
@ -170,12 +171,15 @@ class CalDAV(object):
|
|||
self.__attribute__[name][type] = None
|
||||
return True
|
||||
|
||||
def parse_ics(self, cr, uid, child):
|
||||
def parse_ics(self, cr, uid, child, cal_children=None, context=None):
|
||||
att_data = []
|
||||
for cal_data in child.getChildren():
|
||||
if cal_data.name.lower() == 'attendee':
|
||||
ctx = context.copy()
|
||||
if cal_children:
|
||||
ctx.update({'model': cal_children[cal_data.name.lower()]})
|
||||
attendee = self.pool.get('basic.calendar.attendee')
|
||||
att_data.append(attendee.import_cal(cr, uid, cal_data))
|
||||
att_data.append(attendee.import_cal(cr, uid, cal_data, context=ctx))
|
||||
self.ical_set(cal_data.name.lower(), att_data, 'value')
|
||||
continue
|
||||
if cal_data.name.lower() == 'valarm':
|
||||
|
@ -230,7 +234,7 @@ class CalDAV(object):
|
|||
data[map_field][0], vevent, context=context)
|
||||
elif data[map_field]:
|
||||
if map_type in ("char", "text"):
|
||||
vevent.add(field).value = str(data[map_field].encode('utf8'))
|
||||
vevent.add(field).value = tools.ustr(data[map_field])
|
||||
elif map_type in ('datetime', 'date') and data[map_field]:
|
||||
if field in ('exdate'):
|
||||
vevent.add(field).value = [parser.parse(data[map_field])]
|
||||
|
@ -239,12 +243,12 @@ class CalDAV(object):
|
|||
elif map_type == "timedelta":
|
||||
vevent.add(field).value = timedelta(hours=data[map_field])
|
||||
elif map_type == "many2one":
|
||||
vevent.add(field).value = (data.get(map_field)[1]).encode('utf8')
|
||||
vevent.add(field).value = tools.ustr(data.get(map_field)[1])
|
||||
elif map_type in ("float", "integer"):
|
||||
vevent.add(field).value = str(data.get(map_field))
|
||||
elif map_type == "selection":
|
||||
if not self.ical_get(field, 'mapping'):
|
||||
vevent.add(field).value = (data[map_field].encode('utf8')).upper()
|
||||
vevent.add(field).value = (tools.ustr(data[map_field])).upper()
|
||||
else:
|
||||
for key1, val1 in self.ical_get(field, 'mapping').items():
|
||||
if val1 == data[map_field]:
|
||||
|
@ -291,7 +295,7 @@ class CalDAV(object):
|
|||
res = []
|
||||
for child in parsedCal.getChildren():
|
||||
if child.name.lower() in ('vevent', 'vtodo'):
|
||||
vals = self.parse_ics(cr, uid, child)
|
||||
vals = self.parse_ics(cr, uid, child, context=context)
|
||||
else:
|
||||
vals = {}
|
||||
continue
|
||||
|
@ -359,7 +363,7 @@ class Calendar(CalDAV, osv.osv):
|
|||
if child.name.lower() in cal_children:
|
||||
context.update({'model': cal_children[child.name.lower()]})
|
||||
self.__attribute__ = get_attribute_mapping(cr, uid, child.name.lower(), context=context)
|
||||
val = self.parse_ics(cr, uid, child)
|
||||
val = self.parse_ics(cr, uid, child, cal_children=cal_children, context=context)
|
||||
obj = self.pool.get(cal_children[child.name.lower()])
|
||||
if hasattr(obj, 'check_import'):
|
||||
obj.check_import(cr, uid, [val], context=context)
|
||||
|
@ -638,7 +642,10 @@ class Attendee(CalDAV, osv.osv_memory):
|
|||
'language': None, # Use: 0-1 Specify the language for text values in a property or property parameter.
|
||||
}
|
||||
|
||||
def import_cal(self, cr, uid, ical_data):
|
||||
def import_cal(self, cr, uid, ical_data, context=None):
|
||||
ctx = context.copy()
|
||||
ctx.update({'model': context.get('model', None)})
|
||||
self.__attribute__ = get_attribute_mapping(cr, uid, self._calname, ctx)
|
||||
for para in ical_data.params:
|
||||
if para.lower() == 'cn':
|
||||
self.ical_set(para.lower(), ical_data.params[para][0]+':'+ \
|
||||
|
@ -652,7 +659,9 @@ class Attendee(CalDAV, osv.osv_memory):
|
|||
|
||||
def export_cal(self, cr, uid, model, attendee_ids, vevent, context={}):
|
||||
attendee_object = self.pool.get(model)
|
||||
self.__attribute__ = get_attribute_mapping(cr, uid, self._calname, context)
|
||||
ctx = context.copy()
|
||||
ctx.update({'model': model})
|
||||
self.__attribute__ = get_attribute_mapping(cr, uid, self._calname, ctx)
|
||||
for attendee in attendee_object.read(cr, uid, attendee_ids, []):
|
||||
attendee_add = vevent.add('attendee')
|
||||
cn_val = ''
|
||||
|
@ -662,9 +671,10 @@ class Attendee(CalDAV, osv.osv_memory):
|
|||
attendee_add.params[a_key] = [str(attendee[a_val['field']])]
|
||||
elif a_val['type'] == 'boolean':
|
||||
attendee_add.params[a_key] = [str(attendee[a_val['field']])]
|
||||
if a_val['field'] == 'cn':
|
||||
if a_val['field'] == 'cn' and attendee[a_val['field']]:
|
||||
cn_val = [str(attendee[a_val['field']])]
|
||||
attendee_add.params['CN'] = cn_val
|
||||
if cn_val:
|
||||
attendee_add.params['CN'] = cn_val
|
||||
return vevent
|
||||
|
||||
Attendee()
|
||||
|
|
|
@ -215,6 +215,15 @@ request was delegated to"),
|
|||
def do_decline(self, cr, uid, ids, context=None, *args):
|
||||
self.write(cr, uid, ids, {'state': 'declined'}, context)
|
||||
|
||||
def create(self, cr, uid, vals, context={}):
|
||||
if not vals.get("email") and vals.get("cn"):
|
||||
cnval = vals.get("cn").split(':')
|
||||
email = filter(lambda x:x.__contains__('@'), cnval)
|
||||
vals['email'] = email[0]
|
||||
vals['cn'] = vals.get("cn")
|
||||
res = super(calendar_attendee, self).create(cr, uid, vals, context)
|
||||
return res
|
||||
|
||||
calendar_attendee()
|
||||
|
||||
class res_alarm(osv.osv):
|
||||
|
|
|
@ -260,5 +260,9 @@
|
|||
<field name="target">new</field>
|
||||
</record>
|
||||
|
||||
<menuitem id="menu_attendee_invitations"
|
||||
name="My Invitations" parent="base_calendar.menu_calendar_configuration"
|
||||
sequence="10" action="action_view_attendee_form" />
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
Loading…
Reference in New Issue