[MERGE]: merging from same branch

bzr revid: mga@tinyerp.com-20100201134556-eu8a21yev2v7q9ww
This commit is contained in:
Mantavya Gajjar 2010-02-01 19:15:56 +05:30
commit ed07a21cb4
14 changed files with 818 additions and 455 deletions

View File

@ -25,7 +25,9 @@ from dateutil.rrule import *
from osv import osv, fields
from tools.translate import _
import base64
import math
import pooler
import pytz
import re
import tools
import vobject
@ -200,6 +202,7 @@ class CalDAV(object):
if not datas:
return
for data in datas:
tzval = None
vevent = ical.add(name)
for field in self.__attribute__.keys():
map_field = self.ical_get(field, 'field')
@ -237,6 +240,11 @@ class CalDAV(object):
alarm_obj = self.pool.get('basic.calendar.alarm')
vevent = alarm_obj.export_cal(cr, uid, model, \
data[map_field][0], vevent, context=ctx)
elif field == 'vtimezone' and data[map_field]:
tzval = data[map_field]
tz_obj = self.pool.get('basic.calendar.timezone')
ical = tz_obj.export_cal(cr, uid, None, \
data[map_field], ical, context=context)
elif data[map_field]:
if map_type in ("char", "text"):
vevent.add(field).value = tools.ustr(data[map_field])
@ -244,7 +252,10 @@ class CalDAV(object):
if field in ('exdate'):
vevent.add(field).value = [parser.parse(data[map_field])]
else:
vevent.add(field).value = parser.parse(data[map_field])
dtfield = vevent.add(field)
dtfield.value = parser.parse(data[map_field])
if tzval:
dtfield.params['TZID'] = [tzval]
elif map_type == "timedelta":
vevent.add(field).value = timedelta(hours=data[map_field])
elif map_type == "many2one":
@ -296,11 +307,14 @@ class CalDAV(object):
ical_data = base64.decodestring(content)
self.__attribute__ = get_attribute_mapping(cr, uid, self._calname, context)
parsedCal = vobject.readOne(ical_data)
att_data = []
res = []
vals = {}
for child in parsedCal.getChildren():
if child.name.lower() in ('vevent', 'vtodo'):
vals = self.parse_ics(cr, uid, child, context=context)
elif child.name.lower() == 'vtimezone':
tz_obj = self.pool.get('basic.calendar.timezone')
tz_obj.import_cal(cr, uid, child, context=context)
else:
vals = {}
continue
@ -588,15 +602,51 @@ class FreeBusy(CalDAV):
}
class Timezone(CalDAV):
class Timezone(CalDAV, osv.osv_memory):
_name = 'basic.calendar.timezone'
_calname = 'vtimezone'
__attribute__ = {
'tzid': None, # Use: R-1, Type: Text, Specifies the text value that uniquely identifies the "VTIMEZONE" calendar component.
'tzid': {'field': 'tzid'}, # Use: R-1, Type: Text, Specifies the text value that uniquely identifies the "VTIMEZONE" calendar component.
'last-mod': None, # Use: O-1, Type: DATE-TIME, Specifies the date and time that the information associated with the calendar component was last revised in the calendar store.
'tzurl': None, # Use: O-1, Type: URI, Provides a means for a VTIMEZONE component to point to a network location that can be used to retrieve an up-to-date version of itself.
'standardc': {'tzprop': None}, # Use: R-1,
'daylightc': {'tzprop': None}, # Use: R-1,
'x-prop': None, # Use: O-n, Type: Text,
}
def get_name_offset(self, cr, uid, tzid, context={}):
mytz = pytz.timezone(tzid)
mydt = datetime.now(tz=mytz)
offset = mydt.utcoffset()
val = offset.days * 24 + float(offset.seconds) / 3600
realoffset = '%02d%02d' % (math.floor(abs(val)), \
round(abs(val) % 1 + 0.01, 2) * 60)
realoffset = (val < 0 and ('-' + realoffset) or ('+' + realoffset))
return (mydt.tzname(), realoffset)
def export_cal(self, cr, uid, model, tzid, ical, context={}):
ctx = context.copy()
ctx.update({'model': model})
cal_tz = ical.add('vtimezone')
cal_tz.add('TZID').value = tzid
tz_std = cal_tz.add('STANDARD')
tzname, offset = self.get_name_offset(cr, uid, tzid)
tz_std.add("TZOFFSETFROM").value = offset
tz_std.add("TZOFFSETTO").value = offset
tz_std.add("DTSTART").value = datetime.now() # TODO
tz_std.add("TZNAME").value = tzname
return ical
def import_cal(self, cr, uid, ical_data, context=None):
for child in ical_data.getChildren():
if child.name.lower() == 'tzid':
tzname = child.value
self.ical_set(child.name.lower(), tzname, 'value')
vals = map_data(cr, uid, self)
return vals
Timezone()
class Alarm(CalDAV, osv.osv_memory):

View File

@ -1,10 +1,7 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<data noupdate="1">
<record model="basic.calendar" id="basic_calendar1">
<field name="name">OpenERP</field>
</record>
<!-- Event attributes-->

View File

@ -19,15 +19,16 @@
#
##############################################################################
from base_calendar import base_calendar
from datetime import datetime, timedelta
from datetime import datetime, timedelta
from dateutil import parser
from osv import fields, osv
from base_calendar import base_calendar
from service import web_services
from tools.translate import _
import base64
import pooler
import pytz
import re
import time
@ -423,6 +424,9 @@ class calendar_event(osv.osv):
_name = "calendar.event"
_description = "Calendar Event"
__attribute__ = {}
def _tz_get(self,cr,uid, context={}):
return [(x, x) for x in pytz.all_timezones]
def onchange_rrule_type(self, cr, uid, ids, rtype, *args, **argv):
if rtype == 'none' or not rtype:
@ -483,7 +487,9 @@ rule or repeating pattern for anexception to a recurrence set"),
'caldav_alarm_id': fields.many2one('calendar.alarm', 'Alarm'),
'recurrent_uid': fields.integer('Recurrent ID'),
'recurrent_id': fields.datetime('Recurrent ID date'),
}
'vtimezone': fields.selection(_tz_get, 'Timezone', size=64),
'user_id': fields.many2one('res.users', 'Responsible'),
}
_defaults = {
'class': lambda *a: 'public',

View File

@ -129,381 +129,5 @@
<field eval="'do_run_scheduler'" name="function" />
<field eval="'(False,)'" name="args" />
</record>
<record model="basic.calendar.lines" id="calendar_lines_event">
<field name="name">vevent</field>
<field name="calendar_id" ref="base_calendar.basic_calendar1" />
<field name="object_id" search="[('model','=','calendar.event')]" />
</record>
<record model="basic.calendar.lines" id="calendar_lines_todo">
<field name="name">vtodo</field>
<field name="calendar_id" ref="base_calendar.basic_calendar1" />
<field name="object_id" search="[('model','=','calendar.todo')]" />
</record>
<record model="basic.calendar.lines" id="calendar_lines_alarm">
<field name="name">valarm</field>
<field name="calendar_id" ref="base_calendar.basic_calendar1" />
<field name="object_id" search="[('model','=','calendar.alarm')]" />
</record>
<record model="basic.calendar.lines" id="calendar_lines_attendee">
<field name="name">attendee</field>
<field name="calendar_id" ref="base_calendar.basic_calendar1" />
<field name="object_id" search="[('model','=','calendar.attendee')]" />
</record>
<record model="basic.calendar.fields" id="map_event_1">
<field name="name" ref="base_calendar.field_event_uid"/>
<field name="type_id" ref="caldav.calendar_lines_event" />
<field name="field_id" search="[('name','=','id'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_2">
<field name="name" ref="base_calendar.field_event_recurrence-id"/>
<field name="type_id" ref="caldav.calendar_lines_event" />
<field name="field_id" search="[('name','=','recurrent_id'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_5">
<field name="name" ref="base_calendar.field_event_rrule"/>
<field name="type_id" ref="caldav.calendar_lines_event" />
<field name="field_id" search="[('name','=','rrule'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_6">
<field name="name" ref="base_calendar.field_event_dtend"/>
<field name="type_id" ref="caldav.calendar_lines_event" />
<field name="field_id" search="[('name','=','date_deadline'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_7">
<field name="name" ref="base_calendar.field_event_valarm"/>
<field name="type_id" ref="caldav.calendar_lines_event" />
<field name="field_id" search="[('name','=','caldav_alarm_id'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_9">
<field name="name" ref="base_calendar.field_event_location"/>
<field name="type_id" ref="caldav.calendar_lines_event" />
<field name="field_id" search="[('name','=','location'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_10">
<field name="name" ref="base_calendar.field_event_exrule"/>
<field name="type_id" ref="caldav.calendar_lines_event" />
<field name="field_id" search="[('name','=','exrule'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_12">
<field name="name" ref="base_calendar.field_event_exdate"/>
<field name="type_id" ref="caldav.calendar_lines_event" />
<field name="field_id" search="[('name','=','exdate'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_13">
<field name="name" ref="base_calendar.field_event_dtstamp"/>
<field name="type_id" ref="caldav.calendar_lines_event" />
<field name="field_id" search="[('name','=','date'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_14">
<field name="name" ref="base_calendar.field_event_description"/>
<field name="type_id" ref="caldav.calendar_lines_event" />
<field name="field_id" search="[('name','=','description'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_15">
<field name="name" ref="base_calendar.field_event_dtstart"/>
<field name="type_id" ref="caldav.calendar_lines_event" />
<field name="field_id" search="[('name','=','date'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_16">
<field name="name" ref="base_calendar.field_event_class"/>
<field name="type_id" ref="caldav.calendar_lines_event" />
<field name="field_id" search="[('name','=','class'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_18">
<field name="name" ref="base_calendar.field_event_created"/>
<field name="type_id" ref="caldav.calendar_lines_event" />
<field name="field_id" search="[('name','=','create_date'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_19">
<field name="name" ref="base_calendar.field_event_url"/>
<field name="type_id" ref="caldav.calendar_lines_event" />
<field name="field_id" search="[('name','=','caldav_url'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_20">
<field name="name" ref="base_calendar.field_event_summary"/>
<field name="type_id" ref="caldav.calendar_lines_event" />
<field name="field_id" search="[('name','=','name'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_todo_2">
<field name="name" ref="base_calendar.field_todo_exdate"/>
<field name="type_id" ref="caldav.calendar_lines_todo" />
<field name="field_id" search="[('name','=','exdate'),('model_id.model','=','calendar.todo')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_todo_4">
<field name="name" ref="base_calendar.field_todo_valarm"/>
<field name="type_id" ref="caldav.calendar_lines_todo" />
<field name="field_id" search="[('name','=','caldav_alarm_id'),('model_id.model','=','calendar.todo')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_todo_5">
<field name="name" ref="base_calendar.field_todo_description"/>
<field name="type_id" ref="caldav.calendar_lines_todo" />
<field name="field_id" search="[('name','=','description'),('model_id.model','=','calendar.todo')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_todo_6">
<field name="name" ref="base_calendar.field_todo_seq"/>
<field name="type_id" ref="caldav.calendar_lines_todo" />
<field name="field_id" search="[('name','=','sequence'),('model_id.model','=','calendar.todo')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_todo_7">
<field name="name" ref="base_calendar.field_todo_url"/>
<field name="type_id" ref="caldav.calendar_lines_todo" />
<field name="field_id" search="[('name','=','caldav_url'),('model_id.model','=','calendar.todo')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_todo_11">
<field name="name" ref="base_calendar.field_todo_summary"/>
<field name="type_id" ref="caldav.calendar_lines_todo" />
<field name="field_id" search="[('name','=','name'),('model_id.model','=','calendar.todo')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_todo_13">
<field name="name" ref="base_calendar.field_todo_location"/>
<field name="type_id" ref="caldav.calendar_lines_todo" />
<field name="field_id" search="[('name','=','location'),('model_id.model','=','calendar.todo')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_todo_14">
<field name="name" ref="base_calendar.field_todo_exrule"/>
<field name="type_id" ref="caldav.calendar_lines_todo" />
<field name="field_id" search="[('name','=','exrule'),('model_id.model','=','calendar.todo')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_todo_16">
<field name="name" ref="base_calendar.field_todo_dtstart"/>
<field name="type_id" ref="caldav.calendar_lines_todo" />
<field name="field_id" search="[('name','=','date'),('model_id.model','=','calendar.todo')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_todo_17">
<field name="name" ref="base_calendar.field_todo_rrule"/>
<field name="type_id" ref="caldav.calendar_lines_todo" />
<field name="field_id" search="[('name','=','rrule'),('model_id.model','=','calendar.todo')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_todo_18">
<field name="name" ref="base_calendar.field_todo_class"/>
<field name="type_id" ref="caldav.calendar_lines_todo" />
<field name="field_id" search="[('name','=','class'),('model_id.model','=','calendar.todo')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_todo_19">
<field name="name" ref="base_calendar.field_todo_uid"/>
<field name="type_id" ref="caldav.calendar_lines_todo" />
<field name="field_id" search="[('name','=','id'),('model_id.model','=','calendar.todo')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_alarm_1">
<field name="name" ref="base_calendar.field_alarm_attendee"/>
<field name="type_id" ref="caldav.calendar_lines_alarm" />
<field name="field_id" search="[('name','=','attendee_ids'),('model_id.model','=','calendar.alarm')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_alarm_2">
<field name="name" ref="base_calendar.field_alarm_trigger_duration"/>
<field name="type_id" ref="caldav.calendar_lines_alarm" />
<field name="field_id" search="[('name','=','trigger_duration'),('model_id.model','=','res.alarm')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_alarm_3">
<field name="name" ref="base_calendar.field_alarm_description"/>
<field name="type_id" ref="caldav.calendar_lines_alarm" />
<field name="field_id" search="[('name','=','description'),('model_id.model','=','calendar.alarm')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_alarm_4">
<field name="name" ref="base_calendar.field_alarm_attach"/>
<field name="type_id" ref="caldav.calendar_lines_alarm" />
<field name="field_id" search="[('name','=','attach'),('model_id.model','=','calendar.alarm')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_alarm_5">
<field name="name" ref="base_calendar.field_alarm_trigger_occurs"/>
<field name="type_id" ref="caldav.calendar_lines_alarm" />
<field name="field_id" search="[('name','=','trigger_occurs'),('model_id.model','=','res.alarm')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_alarm_6">
<field name="name" ref="base_calendar.field_alarm_trigger_interval"/>
<field name="type_id" ref="caldav.calendar_lines_alarm" />
<field name="field_id" search="[('name','=','trigger_interval'),('model_id.model','=','res.alarm')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_alarm_7">
<field name="name" ref="base_calendar.field_alarm_summary"/>
<field name="type_id" ref="caldav.calendar_lines_alarm" />
<field name="field_id" search="[('name','=','name'),('model_id.model','=','calendar.alarm')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_alarm_8">
<field name="name" ref="base_calendar.field_alarm_duration"/>
<field name="type_id" ref="caldav.calendar_lines_alarm" />
<field name="field_id" search="[('name','=','duration'),('model_id.model','=','res.alarm')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_alarm_9">
<field name="name" ref="base_calendar.field_alarm_repeat"/>
<field name="type_id" ref="caldav.calendar_lines_alarm" />
<field name="field_id" search="[('name','=','repeat'),('model_id.model','=','res.alarm')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_alarm_10">
<field name="name" ref="base_calendar.field_alarm_action"/>
<field name="type_id" ref="caldav.calendar_lines_alarm" />
<field name="field_id" search="[('name','=','action'),('model_id.model','=','calendar.alarm')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_alarm_11">
<field name="name" ref="base_calendar.field_alarm_trigger_related"/>
<field name="type_id" ref="caldav.calendar_lines_alarm" />
<field name="field_id" search="[('name','=','trigger_related'),('model_id.model','=','res.alarm')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_attendee_1">
<field name="name" ref="base_calendar.field_attendee_cn"/>
<field name="type_id" ref="caldav.calendar_lines_attendee" />
<field name="field_id" search="[('name','=','cn'),('model_id.model','=','calendar.attendee')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_attendee_2">
<field name="name" ref="base_calendar.field_attendee_sent-by"/>
<field name="type_id" ref="caldav.calendar_lines_attendee" />
<field name="field_id" search="[('name','=','sent_by'),('model_id.model','=','calendar.attendee')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_attendee_3">
<field name="name" ref="base_calendar.field_attendee_language"/>
<field name="type_id" ref="caldav.calendar_lines_attendee" />
<field name="field_id" search="[('name','=','language'),('model_id.model','=','calendar.attendee')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_attendee_4">
<field name="name" ref="base_calendar.field_attendee_delegated-from"/>
<field name="type_id" ref="caldav.calendar_lines_attendee" />
<field name="field_id" search="[('name','=','delegated_from'),('model_id.model','=','calendar.attendee')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_attendee_5">
<field name="name" ref="base_calendar.field_attendee_member"/>
<field name="type_id" ref="caldav.calendar_lines_attendee" />
<field name="field_id" search="[('name','=','member'),('model_id.model','=','calendar.attendee')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_attendee_6">
<field name="name" ref="base_calendar.field_attendee_cutype"/>
<field name="type_id" ref="caldav.calendar_lines_attendee" />
<field name="field_id" search="[('name','=','cutype'),('model_id.model','=','calendar.attendee')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_attendee_7">
<field name="name" ref="base_calendar.field_attendee_role"/>
<field name="type_id" ref="caldav.calendar_lines_attendee" />
<field name="field_id" search="[('name','=','role'),('model_id.model','=','calendar.attendee')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_attendee_8">
<field name="name" ref="base_calendar.field_attendee_partstat"/>
<field name="type_id" ref="caldav.calendar_lines_attendee" />
<field name="field_id" search="[('name','=','state'),('model_id.model','=','calendar.attendee')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_attendee_9">
<field name="name" ref="base_calendar.field_attendee_delegated-to"/>
<field name="type_id" ref="caldav.calendar_lines_attendee" />
<field name="field_id" search="[('name','=','delegated_to'),('model_id.model','=','calendar.attendee')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_attendee_10">
<field name="name" ref="base_calendar.field_attendee_dir"/>
<field name="type_id" ref="caldav.calendar_lines_attendee" />
<field name="field_id" search="[('name','=','dir'),('model_id.model','=','calendar.attendee')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_attendee_11">
<field name="name" ref="base_calendar.field_attendee_rsvp"/>
<field name="type_id" ref="caldav.calendar_lines_attendee" />
<field name="field_id" search="[('name','=','rsvp'),('model_id.model','=','calendar.attendee')]" />
<field name="fn">field</field>
</record>
</data>
</openerp>

View File

@ -580,7 +580,7 @@ class crm_case(osv.osv):
def __history(self, cr, uid, cases, keyword, history=False, email=False, details=None, context={}):
model_obj = self.pool.get('ir.model')
model_obj = self.pool.get('ir.model')
for case in cases:
model_ids = model_obj.search(cr, uid, [('model','=',case._name)])
data = {
@ -820,14 +820,7 @@ class crm_case_history(osv.osv):
_name = "crm.case.history"
_description = "Case history"
_order = "id desc"
_inherits = {'crm.case.log':"log_id"}
def create(self, cr, user, vals, context=None):
if vals.has_key('res_id') and vals['res_id']:
case_obj = self.pool.get(vals['model_id'])
cases = case_obj.browse(cr, user, [vals['res_id']])
case_obj._action(cr, user, cases, '')
return super(crm_case_history, self).create(cr, user, vals, context)
_inherits = {'crm.case.log':"log_id"}
def _note_get(self, cursor, user, ids, name, arg, context=None):
res = {}

View File

@ -49,9 +49,9 @@ class crm_cases(osv.osv):
res = mailgate_obj.partner_get(cr, uid, msg['From'])
if res:
data.update(res)
res = self.create(cr, uid, data)
res = self.create(cr, uid, data)
cases = self.browse(cr, uid, [res])
self.__history(cr, uid, cases, _('Receive'), history=True, email=msg['From'])
self._history(cr, uid, cases, _('Receive'), history=True, email=msg['From'])
return res
def msg_update(self, cr, uid, ids, msg, data={}, default_act='pending'):
@ -80,7 +80,7 @@ class crm_cases(osv.osv):
res = self.write(cr, uid, ids, data)
cases = self.browse(cr, uid, [res])
self.__history(cr, uid, cases, _('Receive'), history=True, email=msg['From'])
self._history(cr, uid, cases, _('Receive'), history=True, email=msg['From'])
getattr(self,act)(cr, uid, ids)
return res

View File

@ -25,33 +25,101 @@
<record model="res.request.link" id="request_link_meeting">
<field name="name">Case Meeting</field>
<field name="object">crm.meeting</field>
</record>
</record>
<record model="basic.calendar.lines" id="caldav.calendar_lines_event">
<!-- Event Attribute mapping for Calendar-->
<record model="basic.calendar" id="base_calendar.basic_calendar1">
<field name="name">meeting</field>
</record>
<record model="basic.calendar.lines" id="caldav.calendar_lines_event">
<field name="name">vevent</field>
<field name="calendar_id" ref="base_calendar.basic_calendar1" />
<field name="object_id" search="[('model','=','crm.meeting')]" />
<field name="domain">[('user_id','=', uid)]</field>
</record>
<record model="basic.calendar.lines" id="caldav.calendar_lines_alarm">
<field name="name">valarm</field>
<field name="calendar_id" ref="base_calendar.basic_calendar1" />
<field name="object_id" search="[('model','=','calendar.alarm')]" />
</record>
<record model="basic.calendar.lines" id="caldav.calendar_lines_attendee">
<field name="name">attendee</field>
<field name="calendar_id" ref="base_calendar.basic_calendar1" />
<field name="object_id" search="[('model','=','calendar.attendee')]" />
</record>
<record model="basic.calendar.fields" id="map_event_1">
<field name="name" ref="base_calendar.field_event_uid"/>
<field name="type_id" ref="caldav.calendar_lines_event" />
<field name="field_id" search="[('name','=','id'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<!-- Event Attribute mapping-->
<record model="basic.calendar.fields" id="map_event_2">
<field name="name" ref="base_calendar.field_event_recurrence-id"/>
<field name="type_id" ref="caldav.calendar_lines_event" />
<field name="field_id" search="[('name','=','recurrent_id'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="caldav.map_event_4">
<record model="basic.calendar.fields" id="map_event_4">
<field name="name" ref="base_calendar.field_event_attendee" />
<field name="type_id" ref="caldav.calendar_lines_event" />
<field name="field_id" search="[('name','=','attendee_ids'),('model_id.model','=','crm.meeting')]" />
<field name="fn">field</field>
</record>
</record>
<record model="basic.calendar.fields" id="map_event_5">
<field name="name" ref="base_calendar.field_event_rrule"/>
<field name="type_id" ref="caldav.calendar_lines_event" />
<field name="field_id" search="[('name','=','rrule'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_8">
<record model="basic.calendar.fields" id="map_event_6">
<field name="name" ref="base_calendar.field_event_dtend"/>
<field name="type_id" ref="caldav.calendar_lines_event" />
<field name="field_id" search="[('name','=','date_deadline'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_7">
<field name="name" ref="base_calendar.field_event_valarm"/>
<field name="type_id" ref="caldav.calendar_lines_event" />
<field name="field_id" search="[('name','=','caldav_alarm_id'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_8">
<field name="name" ref="base_calendar.field_event_priority"/>
<field name="type_id" ref="caldav.calendar_lines_event" />
<field name="field_id" search="[('name','=','priority'),('model_id.model','=','crm.meeting')]" />
<field name="fn">field</field>
</record>
</record>
<record model="basic.calendar.fields" id="map_event_11">
<record model="basic.calendar.fields" id="map_event_9">
<field name="name" ref="base_calendar.field_event_location"/>
<field name="type_id" ref="caldav.calendar_lines_event" />
<field name="field_id" search="[('name','=','location'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_10">
<field name="name" ref="base_calendar.field_event_exrule"/>
<field name="type_id" ref="caldav.calendar_lines_event" />
<field name="field_id" search="[('name','=','exrule'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_11">
<field name="name" ref="base_calendar.field_event_status"/>
<field name="type_id" ref="caldav.calendar_lines_event" />
<field name="field_id" search="[('name','=','state'),('model_id.model','=','crm.meeting')]" />
@ -59,5 +127,220 @@
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_12">
<field name="name" ref="base_calendar.field_event_exdate"/>
<field name="type_id" ref="caldav.calendar_lines_event" />
<field name="field_id" search="[('name','=','exdate'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_13">
<field name="name" ref="base_calendar.field_event_dtstamp"/>
<field name="type_id" ref="caldav.calendar_lines_event" />
<field name="field_id" search="[('name','=','date'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_14">
<field name="name" ref="base_calendar.field_event_description"/>
<field name="type_id" ref="caldav.calendar_lines_event" />
<field name="field_id" search="[('name','=','description'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_15">
<field name="name" ref="base_calendar.field_event_dtstart"/>
<field name="type_id" ref="caldav.calendar_lines_event" />
<field name="field_id" search="[('name','=','date'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_16">
<field name="name" ref="base_calendar.field_event_class"/>
<field name="type_id" ref="caldav.calendar_lines_event" />
<field name="field_id" search="[('name','=','class'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_18">
<field name="name" ref="base_calendar.field_event_created"/>
<field name="type_id" ref="caldav.calendar_lines_event" />
<field name="field_id" search="[('name','=','create_date'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_19">
<field name="name" ref="base_calendar.field_event_url"/>
<field name="type_id" ref="caldav.calendar_lines_event" />
<field name="field_id" search="[('name','=','caldav_url'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_20">
<field name="name" ref="base_calendar.field_event_summary"/>
<field name="type_id" ref="caldav.calendar_lines_event" />
<field name="field_id" search="[('name','=','name'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_alarm_1">
<field name="name" ref="base_calendar.field_alarm_attendee"/>
<field name="type_id" ref="caldav.calendar_lines_alarm" />
<field name="field_id" search="[('name','=','attendee_ids'),('model_id.model','=','calendar.alarm')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_alarm_2">
<field name="name" ref="base_calendar.field_alarm_trigger_duration"/>
<field name="type_id" ref="caldav.calendar_lines_alarm" />
<field name="field_id" search="[('name','=','trigger_duration'),('model_id.model','=','res.alarm')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_alarm_3">
<field name="name" ref="base_calendar.field_alarm_description"/>
<field name="type_id" ref="caldav.calendar_lines_alarm" />
<field name="field_id" search="[('name','=','description'),('model_id.model','=','calendar.alarm')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_alarm_4">
<field name="name" ref="base_calendar.field_alarm_attach"/>
<field name="type_id" ref="caldav.calendar_lines_alarm" />
<field name="field_id" search="[('name','=','attach'),('model_id.model','=','calendar.alarm')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_alarm_5">
<field name="name" ref="base_calendar.field_alarm_trigger_occurs"/>
<field name="type_id" ref="caldav.calendar_lines_alarm" />
<field name="field_id" search="[('name','=','trigger_occurs'),('model_id.model','=','res.alarm')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_alarm_6">
<field name="name" ref="base_calendar.field_alarm_trigger_interval"/>
<field name="type_id" ref="caldav.calendar_lines_alarm" />
<field name="field_id" search="[('name','=','trigger_interval'),('model_id.model','=','res.alarm')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_alarm_7">
<field name="name" ref="base_calendar.field_alarm_summary"/>
<field name="type_id" ref="caldav.calendar_lines_alarm" />
<field name="field_id" search="[('name','=','name'),('model_id.model','=','calendar.alarm')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_alarm_8">
<field name="name" ref="base_calendar.field_alarm_duration"/>
<field name="type_id" ref="caldav.calendar_lines_alarm" />
<field name="field_id" search="[('name','=','duration'),('model_id.model','=','res.alarm')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_alarm_9">
<field name="name" ref="base_calendar.field_alarm_repeat"/>
<field name="type_id" ref="caldav.calendar_lines_alarm" />
<field name="field_id" search="[('name','=','repeat'),('model_id.model','=','res.alarm')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_alarm_10">
<field name="name" ref="base_calendar.field_alarm_action"/>
<field name="type_id" ref="caldav.calendar_lines_alarm" />
<field name="field_id" search="[('name','=','action'),('model_id.model','=','calendar.alarm')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_alarm_11">
<field name="name" ref="base_calendar.field_alarm_trigger_related"/>
<field name="type_id" ref="caldav.calendar_lines_alarm" />
<field name="field_id" search="[('name','=','trigger_related'),('model_id.model','=','res.alarm')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_attendee_1">
<field name="name" ref="base_calendar.field_attendee_cn"/>
<field name="type_id" ref="caldav.calendar_lines_attendee" />
<field name="field_id" search="[('name','=','cn'),('model_id.model','=','calendar.attendee')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_attendee_2">
<field name="name" ref="base_calendar.field_attendee_sent-by"/>
<field name="type_id" ref="caldav.calendar_lines_attendee" />
<field name="field_id" search="[('name','=','sent_by'),('model_id.model','=','calendar.attendee')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_attendee_3">
<field name="name" ref="base_calendar.field_attendee_language"/>
<field name="type_id" ref="caldav.calendar_lines_attendee" />
<field name="field_id" search="[('name','=','language'),('model_id.model','=','calendar.attendee')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_attendee_4">
<field name="name" ref="base_calendar.field_attendee_delegated-from"/>
<field name="type_id" ref="caldav.calendar_lines_attendee" />
<field name="field_id" search="[('name','=','delegated_from'),('model_id.model','=','calendar.attendee')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_attendee_5">
<field name="name" ref="base_calendar.field_attendee_member"/>
<field name="type_id" ref="caldav.calendar_lines_attendee" />
<field name="field_id" search="[('name','=','member'),('model_id.model','=','calendar.attendee')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_attendee_6">
<field name="name" ref="base_calendar.field_attendee_cutype"/>
<field name="type_id" ref="caldav.calendar_lines_attendee" />
<field name="field_id" search="[('name','=','cutype'),('model_id.model','=','calendar.attendee')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_attendee_7">
<field name="name" ref="base_calendar.field_attendee_role"/>
<field name="type_id" ref="caldav.calendar_lines_attendee" />
<field name="field_id" search="[('name','=','role'),('model_id.model','=','calendar.attendee')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_attendee_8">
<field name="name" ref="base_calendar.field_attendee_partstat"/>
<field name="type_id" ref="caldav.calendar_lines_attendee" />
<field name="field_id" search="[('name','=','state'),('model_id.model','=','calendar.attendee')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_attendee_9">
<field name="name" ref="base_calendar.field_attendee_delegated-to"/>
<field name="type_id" ref="caldav.calendar_lines_attendee" />
<field name="field_id" search="[('name','=','delegated_to'),('model_id.model','=','calendar.attendee')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_attendee_10">
<field name="name" ref="base_calendar.field_attendee_dir"/>
<field name="type_id" ref="caldav.calendar_lines_attendee" />
<field name="field_id" search="[('name','=','dir'),('model_id.model','=','calendar.attendee')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_attendee_11">
<field name="name" ref="base_calendar.field_attendee_rsvp"/>
<field name="type_id" ref="caldav.calendar_lines_attendee" />
<field name="field_id" search="[('name','=','rsvp'),('model_id.model','=','calendar.attendee')]" />
<field name="fn">field</field>
</record>
</data>
</openerp>

View File

@ -91,6 +91,7 @@
<field name="alarm_id" string="Reminder" widget="selection" />
<field name="class"/>
<field name="user_id"/>
<field name="vtimezone"/>
<field name="recurrent_id" invisible="1" />
<field name="recurrent_uid" invisible="1" />
<field name="rrule" invisible="1" />

View File

@ -1,13 +1,17 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<record model="basic.calendar.lines" id="caldav.calendar_lines_todo">
<field name="name">vtodo</field>
<field name="calendar_id" ref="base_calendar.basic_calendar1" />
<field name="object_id" search="[('model','=','project.task')]" />
<record model="basic.calendar" id="base_calendar.basic_calendar2">
<field name="name">meeting_todo</field>
</record>
<record model="basic.calendar.lines" id="caldav.calendar_lines_todo">
<field name="name">vtodo</field>
<field name="calendar_id" ref="base_calendar.basic_calendar2" />
<field name="object_id" search="[('model','=','project.task')]" />
<field name="domain">[('user_id','=', uid)]</field>
</record>
<record model="basic.calendar.fields" id="map_todo_1">
<field name="name" ref="base_calendar.field_todo_status" />
<field name="type_id" ref="caldav.calendar_lines_todo" />
@ -15,34 +19,430 @@
<field name="mapping">{'needs-action': 'draft', 'completed': 'done', 'in-process': 'open', 'cancelled': 'cancelled'}</field>
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_todo_3">
<record model="basic.calendar.fields" id="map_todo_2">
<field name="name" ref="base_calendar.field_todo_exdate"/>
<field name="type_id" ref="caldav.calendar_lines_todo" />
<field name="field_id" search="[('name','=','exdate'),('model_id.model','=','calendar.todo')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_todo_3">
<field name="name" ref="base_calendar.field_todo_attendee" />
<field name="type_id" ref="caldav.calendar_lines_todo" />
<field name="field_id" search="[('name','=','attendee_ids'),('model_id.model','=','project.task')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_todo_9">
<record model="basic.calendar.fields" id="map_todo_4">
<field name="name" ref="base_calendar.field_todo_valarm"/>
<field name="type_id" ref="caldav.calendar_lines_todo" />
<field name="field_id" search="[('name','=','caldav_alarm_id'),('model_id.model','=','calendar.todo')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_todo_5">
<field name="name" ref="base_calendar.field_todo_description"/>
<field name="type_id" ref="caldav.calendar_lines_todo" />
<field name="field_id" search="[('name','=','description'),('model_id.model','=','calendar.todo')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_todo_6">
<field name="name" ref="base_calendar.field_todo_seq"/>
<field name="type_id" ref="caldav.calendar_lines_todo" />
<field name="field_id" search="[('name','=','sequence'),('model_id.model','=','calendar.todo')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_todo_7">
<field name="name" ref="base_calendar.field_todo_url"/>
<field name="type_id" ref="caldav.calendar_lines_todo" />
<field name="field_id" search="[('name','=','caldav_url'),('model_id.model','=','calendar.todo')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_todo_9">
<field name="name" ref="base_calendar.field_todo_percent"/>
<field name="type_id" ref="caldav.calendar_lines_todo" />
<field name="field_id" search="[('name','=','progress'),('model_id.model','=','project.task')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_todo_12">
<record model="basic.calendar.fields" id="map_todo_11">
<field name="name" ref="base_calendar.field_todo_summary"/>
<field name="type_id" ref="caldav.calendar_lines_todo" />
<field name="field_id" search="[('name','=','name'),('model_id.model','=','calendar.todo')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_todo_12">
<field name="name" ref="base_calendar.field_event_priority"/>
<field name="type_id" ref="caldav.calendar_lines_todo" />
<field name="field_id" search="[('name','=','priority'),('model_id.model','=','project.task')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_todo_15">
<record model="basic.calendar.fields" id="map_todo_13">
<field name="name" ref="base_calendar.field_todo_location"/>
<field name="type_id" ref="caldav.calendar_lines_todo" />
<field name="field_id" search="[('name','=','location'),('model_id.model','=','calendar.todo')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_todo_14">
<field name="name" ref="base_calendar.field_todo_exrule"/>
<field name="type_id" ref="caldav.calendar_lines_todo" />
<field name="field_id" search="[('name','=','exrule'),('model_id.model','=','calendar.todo')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_todo_15">
<field name="name" ref="base_calendar.field_todo_duration"/>
<field name="type_id" ref="caldav.calendar_lines_todo" />
<field name="field_id" search="[('name','=','planned_hours'),('model_id.model','=','project.task')]" />
<field name="fn">hours</field>
</record>
<record model="basic.calendar.fields" id="map_todo_16">
<field name="name" ref="base_calendar.field_todo_dtstart"/>
<field name="type_id" ref="caldav.calendar_lines_todo" />
<field name="field_id" search="[('name','=','date'),('model_id.model','=','calendar.todo')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_todo_17">
<field name="name" ref="base_calendar.field_todo_rrule"/>
<field name="type_id" ref="caldav.calendar_lines_todo" />
<field name="field_id" search="[('name','=','rrule'),('model_id.model','=','calendar.todo')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_todo_18">
<field name="name" ref="base_calendar.field_todo_class"/>
<field name="type_id" ref="caldav.calendar_lines_todo" />
<field name="field_id" search="[('name','=','class'),('model_id.model','=','calendar.todo')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_todo_19">
<field name="name" ref="base_calendar.field_todo_uid"/>
<field name="type_id" ref="caldav.calendar_lines_todo" />
<field name="field_id" search="[('name','=','id'),('model_id.model','=','calendar.todo')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.lines" id="caldav.calendar_lines_event2">
<field name="name">vevent</field>
<field name="calendar_id" ref="base_calendar.basic_calendar2" />
<field name="object_id" search="[('model','=','crm.meeting')]" />
<field name="domain">[('user_id','=', uid)]</field>
</record>
<record model="basic.calendar.lines" id="caldav.calendar_lines_alarm2">
<field name="name">valarm</field>
<field name="calendar_id" ref="base_calendar.basic_calendar2" />
<field name="object_id" search="[('model','=','calendar.alarm')]" />
</record>
<record model="basic.calendar.lines" id="caldav.calendar_lines_attendee2">
<field name="name">attendee</field>
<field name="calendar_id" ref="base_calendar.basic_calendar2" />
<field name="object_id" search="[('model','=','calendar.attendee')]" />
</record>
<record model="basic.calendar.fields" id="map_event_1">
<field name="name" ref="base_calendar.field_event_uid"/>
<field name="type_id" ref="caldav.calendar_lines_event2" />
<field name="field_id" search="[('name','=','id'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_2">
<field name="name" ref="base_calendar.field_event_recurrence-id"/>
<field name="type_id" ref="caldav.calendar_lines_event2" />
<field name="field_id" search="[('name','=','recurrent_id'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_4">
<field name="name" ref="base_calendar.field_event_attendee" />
<field name="type_id" ref="caldav.calendar_lines_event2" />
<field name="field_id" search="[('name','=','attendee_ids'),('model_id.model','=','crm.meeting')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_5">
<field name="name" ref="base_calendar.field_event_rrule"/>
<field name="type_id" ref="caldav.calendar_lines_event2" />
<field name="field_id" search="[('name','=','rrule'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_6">
<field name="name" ref="base_calendar.field_event_dtend"/>
<field name="type_id" ref="caldav.calendar_lines_event2" />
<field name="field_id" search="[('name','=','date_deadline'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_7">
<field name="name" ref="base_calendar.field_event_valarm"/>
<field name="type_id" ref="caldav.calendar_lines_event2" />
<field name="field_id" search="[('name','=','caldav_alarm_id'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_8">
<field name="name" ref="base_calendar.field_event_priority"/>
<field name="type_id" ref="caldav.calendar_lines_event2" />
<field name="field_id" search="[('name','=','priority'),('model_id.model','=','crm.meeting')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_9">
<field name="name" ref="base_calendar.field_event_location"/>
<field name="type_id" ref="caldav.calendar_lines_event2" />
<field name="field_id" search="[('name','=','location'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_10">
<field name="name" ref="base_calendar.field_event_exrule"/>
<field name="type_id" ref="caldav.calendar_lines_event2" />
<field name="field_id" search="[('name','=','exrule'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_11">
<field name="name" ref="base_calendar.field_event_status"/>
<field name="type_id" ref="caldav.calendar_lines_event2" />
<field name="field_id" search="[('name','=','state'),('model_id.model','=','crm.meeting')]" />
<field name="mapping">{'tentative': 'draft', 'confirmed': 'open', 'cancelled': 'cancel'}</field>
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_12">
<field name="name" ref="base_calendar.field_event_exdate"/>
<field name="type_id" ref="caldav.calendar_lines_event2" />
<field name="field_id" search="[('name','=','exdate'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_13">
<field name="name" ref="base_calendar.field_event_dtstamp"/>
<field name="type_id" ref="caldav.calendar_lines_event2" />
<field name="field_id" search="[('name','=','date'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_14">
<field name="name" ref="base_calendar.field_event_description"/>
<field name="type_id" ref="caldav.calendar_lines_event2" />
<field name="field_id" search="[('name','=','description'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_15">
<field name="name" ref="base_calendar.field_event_dtstart"/>
<field name="type_id" ref="caldav.calendar_lines_event2" />
<field name="field_id" search="[('name','=','date'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_16">
<field name="name" ref="base_calendar.field_event_class"/>
<field name="type_id" ref="caldav.calendar_lines_event2" />
<field name="field_id" search="[('name','=','class'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_18">
<field name="name" ref="base_calendar.field_event_created"/>
<field name="type_id" ref="caldav.calendar_lines_event2" />
<field name="field_id" search="[('name','=','create_date'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_19">
<field name="name" ref="base_calendar.field_event_url"/>
<field name="type_id" ref="caldav.calendar_lines_event2" />
<field name="field_id" search="[('name','=','caldav_url'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_event_20">
<field name="name" ref="base_calendar.field_event_summary"/>
<field name="type_id" ref="caldav.calendar_lines_event2" />
<field name="field_id" search="[('name','=','name'),('model_id.model','=','calendar.event')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_alarm_1">
<field name="name" ref="base_calendar.field_alarm_attendee"/>
<field name="type_id" ref="caldav.calendar_lines_alarm2" />
<field name="field_id" search="[('name','=','attendee_ids'),('model_id.model','=','calendar.alarm')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_alarm_2">
<field name="name" ref="base_calendar.field_alarm_trigger_duration"/>
<field name="type_id" ref="caldav.calendar_lines_alarm2" />
<field name="field_id" search="[('name','=','trigger_duration'),('model_id.model','=','res.alarm')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_alarm_3">
<field name="name" ref="base_calendar.field_alarm_description"/>
<field name="type_id" ref="caldav.calendar_lines_alarm2" />
<field name="field_id" search="[('name','=','description'),('model_id.model','=','calendar.alarm')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_alarm_4">
<field name="name" ref="base_calendar.field_alarm_attach"/>
<field name="type_id" ref="caldav.calendar_lines_alarm2" />
<field name="field_id" search="[('name','=','attach'),('model_id.model','=','calendar.alarm')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_alarm_5">
<field name="name" ref="base_calendar.field_alarm_trigger_occurs"/>
<field name="type_id" ref="caldav.calendar_lines_alarm2" />
<field name="field_id" search="[('name','=','trigger_occurs'),('model_id.model','=','res.alarm')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_alarm_6">
<field name="name" ref="base_calendar.field_alarm_trigger_interval"/>
<field name="type_id" ref="caldav.calendar_lines_alarm2" />
<field name="field_id" search="[('name','=','trigger_interval'),('model_id.model','=','res.alarm')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_alarm_7">
<field name="name" ref="base_calendar.field_alarm_summary"/>
<field name="type_id" ref="caldav.calendar_lines_alarm2" />
<field name="field_id" search="[('name','=','name'),('model_id.model','=','calendar.alarm')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_alarm_8">
<field name="name" ref="base_calendar.field_alarm_duration"/>
<field name="type_id" ref="caldav.calendar_lines_alarm2" />
<field name="field_id" search="[('name','=','duration'),('model_id.model','=','res.alarm')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_alarm_9">
<field name="name" ref="base_calendar.field_alarm_repeat"/>
<field name="type_id" ref="caldav.calendar_lines_alarm2" />
<field name="field_id" search="[('name','=','repeat'),('model_id.model','=','res.alarm')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_alarm_10">
<field name="name" ref="base_calendar.field_alarm_action"/>
<field name="type_id" ref="caldav.calendar_lines_alarm2" />
<field name="field_id" search="[('name','=','action'),('model_id.model','=','calendar.alarm')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_alarm_11">
<field name="name" ref="base_calendar.field_alarm_trigger_related"/>
<field name="type_id" ref="caldav.calendar_lines_alarm2" />
<field name="field_id" search="[('name','=','trigger_related'),('model_id.model','=','res.alarm')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_attendee_1">
<field name="name" ref="base_calendar.field_attendee_cn"/>
<field name="type_id" ref="caldav.calendar_lines_attendee2" />
<field name="field_id" search="[('name','=','cn'),('model_id.model','=','calendar.attendee')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_attendee_2">
<field name="name" ref="base_calendar.field_attendee_sent-by"/>
<field name="type_id" ref="caldav.calendar_lines_attendee2" />
<field name="field_id" search="[('name','=','sent_by'),('model_id.model','=','calendar.attendee')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_attendee_3">
<field name="name" ref="base_calendar.field_attendee_language"/>
<field name="type_id" ref="caldav.calendar_lines_attendee2" />
<field name="field_id" search="[('name','=','language'),('model_id.model','=','calendar.attendee')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_attendee_4">
<field name="name" ref="base_calendar.field_attendee_delegated-from"/>
<field name="type_id" ref="caldav.calendar_lines_attendee2" />
<field name="field_id" search="[('name','=','delegated_from'),('model_id.model','=','calendar.attendee')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_attendee_5">
<field name="name" ref="base_calendar.field_attendee_member"/>
<field name="type_id" ref="caldav.calendar_lines_attendee2" />
<field name="field_id" search="[('name','=','member'),('model_id.model','=','calendar.attendee')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_attendee_6">
<field name="name" ref="base_calendar.field_attendee_cutype"/>
<field name="type_id" ref="caldav.calendar_lines_attendee2" />
<field name="field_id" search="[('name','=','cutype'),('model_id.model','=','calendar.attendee')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_attendee_7">
<field name="name" ref="base_calendar.field_attendee_role"/>
<field name="type_id" ref="caldav.calendar_lines_attendee2" />
<field name="field_id" search="[('name','=','role'),('model_id.model','=','calendar.attendee')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_attendee_8">
<field name="name" ref="base_calendar.field_attendee_partstat"/>
<field name="type_id" ref="caldav.calendar_lines_attendee2" />
<field name="field_id" search="[('name','=','state'),('model_id.model','=','calendar.attendee')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_attendee_9">
<field name="name" ref="base_calendar.field_attendee_delegated-to"/>
<field name="type_id" ref="caldav.calendar_lines_attendee2" />
<field name="field_id" search="[('name','=','delegated_to'),('model_id.model','=','calendar.attendee')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_attendee_10">
<field name="name" ref="base_calendar.field_attendee_dir"/>
<field name="type_id" ref="caldav.calendar_lines_attendee2" />
<field name="field_id" search="[('name','=','dir'),('model_id.model','=','calendar.attendee')]" />
<field name="fn">field</field>
</record>
<record model="basic.calendar.fields" id="map_attendee_11">
<field name="name" ref="base_calendar.field_attendee_rsvp"/>
<field name="type_id" ref="caldav.calendar_lines_attendee2" />
<field name="field_id" search="[('name','=','rsvp'),('model_id.model','=','calendar.attendee')]" />
<field name="fn">field</field>
</record>
</data>
</openerp>
</openerp>

View File

@ -66,7 +66,7 @@
<field name="inherit_id" ref="project.view_task_form2" />
<field name="type">form</field>
<field name="arch" type="xml">
<field name="date_close" position="after">
<field name="progress" position="after">
<group colspan="2" col="3">
<field name="rrule_type" string="Recurrency"
on_change="onchange_rrule_type(rrule_type)" colspan="1" />

View File

@ -257,6 +257,8 @@ class survey_analysis(report_rml):
sqc.question_id = sr.question_id and sra.answer_id = %d and sqc.title ='%s'\
group by sra.answer_id,sqc.rating_weight" % (ans.id,matrix_ans[mat_col]))
col_weight = cr.fetchone()
if not col_weight :
col_weight= (0,0)
res_count = col_weight[0]
if tot_res:
rating_weight_sum += col_weight[1] * tot_res

View File

@ -268,7 +268,7 @@ class survey_browse_response(report_rml):
</blockTable>"""
elif que.type in ['matrix_of_choices_only_one_ans','matrix_of_choices_only_multi_ans','rating_scale','matrix_of_drop_down_menus']:
if len(answer) and answer[0].state == "done":
if que.comment_column:
if que.type in ['matrix_of_choices_only_one_ans','rating_scale'] and que.comment_column:
pass
cols_widhts = []
cols_widhts.append(200)
@ -278,7 +278,7 @@ class survey_browse_response(report_rml):
tmp=0.0
sum = 0.0
i = 0
if que.comment_column:
if que.type in ['matrix_of_choices_only_one_ans','rating_scale'] and que.comment_column:
for col in cols_widhts:
if i==0:
cols_widhts[i] = cols_widhts[i]/2.0
@ -292,7 +292,7 @@ class survey_browse_response(report_rml):
if col.title not in matrix_ans:
matrix_ans.append(col.title)
len_matrix = len(matrix_ans)
if que.comment_column:
if que.type in ['matrix_of_choices_only_one_ans','rating_scale'] and que.comment_column:
matrix_ans.append(que.column_name)
rml+="""<blockTable colWidths=" """ + colWidths + """ " style="Table1"><tr>"""
for mat_col in matrix_ans:
@ -342,14 +342,14 @@ class survey_browse_response(report_rml):
<rect x="0.1cm" y="-0.45cm" width="0.5 cm" height="0.5cm" fill="yes" stroke="yes" round="0.1cm"/>
</illustration>"""
rml+= """<td>""" + value + """</td>"""
if que.comment_column:
if que.type in ['matrix_of_choices_only_one_ans','rating_scale'] and que.comment_column:
if comment_value=='False':
comment_value = ''
rml+= """<td><para style="response">"""+ to_xml(tools.ustr(comment_value)) + """</para></td>"""
rml+=""" </tr></blockTable>"""
if que.comment_field_type:
if que.is_comment_require:
rml+="""<blockTable colWidths="500" style="Table1"><tr>
<td><para style="answer">""" + to_xml(tools.ustr(answer[0].comment)) + """</para></td></tr></blockTable>"""
<td><para style="answer">""" + to_xml(tools.ustr(answer[0].comment or '')) + """</para></td></tr></blockTable>"""
else:
rml +="""<blockTable colWidths="500" style="Table1">
<tr> <td> <para style="response">No Response</para></td> </tr>

View File

@ -331,9 +331,9 @@ class survey_question(osv.osv):
raise osv.except_osv(_('Error !'),_("Maximum Required Answer is greater than Minimum Required Answer"))
if question['type'] == 'matrix_of_drop_down_menus' and vals.has_key('column_heading_ids'):
for col in vals['column_heading_ids']:
if col[2].has_key('menu_choice') and not col[2]['menu_choice']:
if col[2] and col[2].has_key('menu_choice') and not col[2]['menu_choice']:
raise osv.except_osv(_('Error !'),_("You must enter one or more menu choices in column heading"))
elif col[2].has_key('menu_choice') and col[2]['menu_choice'].strip() == '':
elif col[2] and col[2].has_key('menu_choice') and col[2]['menu_choice'].strip() == '':
raise osv.except_osv(_('Error !'),_("You must enter one or more menu choices in column heading (white spaces not allowed)"))
return super(survey_question, self).write(cr, uid, ids, vals, context=context)
@ -740,24 +740,28 @@ class survey_question_wiz(osv.osv_memory):
fields[tools.ustr(que) + "_commentcolumn_"+tools.ustr(row['id']) + "_field"] = {'type':'char', 'size' : 255, 'string':tools.ustr(que_rec['column_name']), 'views':{}}
etree.SubElement(xml_group, 'field', {'name': tools.ustr(que) + "_commentcolumn_"+tools.ustr(row['id'])+ "_field"})
elif que_rec['type'] == 'matrix_of_choices_only_multi_ans':
xml_group = etree.SubElement(xml_group, 'group', {'col': '2', 'colspan': '2'})
xml_group = etree.SubElement(xml_group, 'group', {'col': str(len(que_rec['column_heading_ids']) + 1), 'colspan': '4'})
etree.SubElement(xml_group, 'separator', {'string': '.','colspan': '1'})
for col in que_col_head.read(cr, uid, que_rec['column_heading_ids']):
etree.SubElement(xml_group, 'separator', {'string': tools.ustr(col['title']),'colspan': '1'})
for row in ans_ids:
etree.SubElement(xml_group, 'label', {'string': to_xml(tools.ustr(row['answer'])) +' :-', 'align': '0.0'})
etree.SubElement(xml_group, 'newline')
for col in que_col_head.read(cr, uid, que_rec['column_heading_ids']):
etree.SubElement(xml_group, 'field', {'name': tools.ustr(que) + "_" + tools.ustr(row['id']) + "_" + tools.ustr(col['title'])})
etree.SubElement(xml_group, 'field', {'name': tools.ustr(que) + "_" + tools.ustr(row['id']) + "_" + tools.ustr(col['title']), 'nolabel':"1"})
fields[tools.ustr(que) + "_" + tools.ustr(row['id']) + "_" + tools.ustr(col['title'])] = {'type':'boolean', 'string': col['title']}
elif que_rec['type'] == 'matrix_of_drop_down_menus':
xml_group = etree.SubElement(xml_group, 'group', {'col': '2', 'colspan': '2'})
xml_group = etree.SubElement(xml_group, 'group', {'col': str(len(que_rec['column_heading_ids']) + 1), 'colspan': '4'})
etree.SubElement(xml_group, 'separator', {'string': '.','colspan': '1'})
for col in que_col_head.read(cr, uid, que_rec['column_heading_ids']):
etree.SubElement(xml_group, 'separator', {'string': tools.ustr(col['title']),'colspan': '1'})
for row in ans_ids:
etree.SubElement(xml_group, 'label', {'string': to_xml(tools.ustr(row['answer']))+' :-', 'align': '0.0'})
etree.SubElement(xml_group, 'newline')
for col in que_col_head.read(cr, uid, que_rec['column_heading_ids']):
selection = []
if col['menu_choice']:
for item in col['menu_choice'].split('\n'):
if item and not item.strip() == '': selection.append((item ,item))
etree.SubElement(xml_group, 'field', {'name': tools.ustr(que) + "_" + tools.ustr(row['id']) + "_" + tools.ustr(col['title'])})
etree.SubElement(xml_group, 'field', {'name': tools.ustr(que) + "_" + tools.ustr(row['id']) + "_" + tools.ustr(col['title']),'nolabel':'1'})
fields[tools.ustr(que) + "_" + tools.ustr(row['id']) + "_" + tools.ustr(col['title'])] = {'type':'selection', 'string': col['title'], 'selection':selection}
elif que_rec['type'] == 'multiple_textboxes':
xml_group = etree.SubElement(xml_group, 'group', {'col': '1', 'colspan': '4'})
@ -1238,7 +1242,7 @@ class survey_question_wiz(osv.osv_memory):
numeric_sum += int(val)
elif val and len(key.split('_')) == 3:
resp_obj.write(cr, uid, update, {'state': 'done'})
if type(val) == type(''):
if type(val) == type('') or type(val) == type(u''):
ans_create_id = res_ans_obj.create(cr, uid, {'response_id':update, 'answer_id':ans_id_len[1], 'answer' : ans_id_len[2], 'value_choice' : val})
sur_name_read['store_ans'][update].update({key:val})
else:

View File

@ -30,7 +30,7 @@
<button name="%(action_view_survey_name)d" states="open,draft,close,cancel"
string="Answer Survey" type="action" icon="gtk-execute" context="{'survey_id': active_id}" attrs="{'readonly':[('state','!=','open')]}"/>
<button name="%(action_view_survey_name)d" states="open,draft,close,cancel"
string="Edit Survey" type="action" icon="gtk-edit" context="{'active':True,'edit' : True,'survey_id': active_id}" attrs="{'readonly':[('state','!=','draft')]}"/>
string="Edit Survey" type="action" icon="gtk-edit" context="{'active':True,'edit' : True,'survey_id': active_id}"/>
</group>
<notebook colspan="4">
<page string="Survey">
@ -93,15 +93,16 @@
<field name="comment_valid_err_msg" nolabel="1" colspan="4"/>
</group>
</group>
<group attrs="{'invisible':[('type','!=','matrix_of_choices_only_multi_ans'),('type','!=','matrix_of_choices_only_one_ans'),('type','!=','matrix_of_drop_down_menus'),('type','!=','rating_scale')]}">
<field name="comment_column"/>
<group colspan="2" attrs="{'invisible':[('comment_column','!=',True)]}">
<field name="column_name" colspan="2"/>
</group>
</group>
</group>
</group>
<newline/>
<group attrs="{'invisible':[('type','!=','matrix_of_choices_only_one_ans'),('type','!=','rating_scale')]}">
<field name="comment_column"/>
<group colspan="2" attrs="{'invisible':[('comment_column','!=',True)]}">
<field name="column_name" colspan="2"/>
</group>
</group>
<newline/>
<group attrs="{'invisible':[('type','!=','single_textbox'), ('type','!=','multiple_textboxes')]}">
<separator string="Validation" colspan="4"/>
<group colspan="4">
@ -351,15 +352,16 @@
<field name="comment_valid_err_msg" nolabel="1" colspan="4"/>
</group>
</group>
<group attrs="{'invisible':[('type','!=','matrix_of_choices_only_multi_ans'),('type','!=','matrix_of_choices_only_one_ans'),('type','!=','matrix_of_drop_down_menus'),('type','!=','rating_scale')]}">
<field name="comment_column"/>
<group colspan="2" attrs="{'invisible':[('comment_column','!=',True)]}">
<field name="column_name" colspan="2"/>
</group>
</group>
</group>
</group>
<newline/>
<group attrs="{'invisible':[('type','!=','matrix_of_choices_only_one_ans'),('type','!=','rating_scale')]}">
<field name="comment_column"/>
<group colspan="2" attrs="{'invisible':[('comment_column','!=',True)]}">
<field name="column_name" colspan="2"/>
</group>
</group>
<newline/>
<group attrs="{'invisible':[('type','!=','single_textbox'), ('type','!=','multiple_textboxes')]}">
<separator string="Validation" colspan="4"/>
<group colspan="4">
@ -544,15 +546,16 @@
<field name="comment_valid_err_msg" nolabel="1" colspan="4"/>
</group>
</group>
<group attrs="{'invisible':[('type','!=','matrix_of_choices_only_multi_ans'),('type','!=','matrix_of_choices_only_one_ans'),('type','!=','matrix_of_drop_down_menus'),('type','!=','rating_scale')]}">
<field name="comment_column"/>
<group colspan="2" attrs="{'invisible':[('comment_column','!=',True)]}">
<field name="column_name" colspan="2"/>
</group>
</group>
</group>
</group>
<newline/>
<group attrs="{'invisible':[('type','!=','matrix_of_choices_only_one_ans'),('type','!=','rating_scale')]}">
<field name="comment_column"/>
<group colspan="2" attrs="{'invisible':[('comment_column','!=',True)]}">
<field name="column_name" colspan="2"/>
</group>
</group>
<newline/>
<group attrs="{'invisible':[('type','!=','single_textbox'), ('type','!=','multiple_textboxes')]}">
<separator string="Validation" colspan="4"/>
<group colspan="4">