[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 osv import osv, fields
from tools.translate import _ from tools.translate import _
import base64 import base64
import math
import pooler import pooler
import pytz
import re import re
import tools import tools
import vobject import vobject
@ -200,6 +202,7 @@ class CalDAV(object):
if not datas: if not datas:
return return
for data in datas: for data in datas:
tzval = None
vevent = ical.add(name) vevent = ical.add(name)
for field in self.__attribute__.keys(): for field in self.__attribute__.keys():
map_field = self.ical_get(field, 'field') map_field = self.ical_get(field, 'field')
@ -237,6 +240,11 @@ class CalDAV(object):
alarm_obj = self.pool.get('basic.calendar.alarm') alarm_obj = self.pool.get('basic.calendar.alarm')
vevent = alarm_obj.export_cal(cr, uid, model, \ vevent = alarm_obj.export_cal(cr, uid, model, \
data[map_field][0], vevent, context=ctx) 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]: elif data[map_field]:
if map_type in ("char", "text"): if map_type in ("char", "text"):
vevent.add(field).value = tools.ustr(data[map_field]) vevent.add(field).value = tools.ustr(data[map_field])
@ -244,7 +252,10 @@ class CalDAV(object):
if field in ('exdate'): if field in ('exdate'):
vevent.add(field).value = [parser.parse(data[map_field])] vevent.add(field).value = [parser.parse(data[map_field])]
else: 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": elif map_type == "timedelta":
vevent.add(field).value = timedelta(hours=data[map_field]) vevent.add(field).value = timedelta(hours=data[map_field])
elif map_type == "many2one": elif map_type == "many2one":
@ -296,11 +307,14 @@ class CalDAV(object):
ical_data = base64.decodestring(content) ical_data = base64.decodestring(content)
self.__attribute__ = get_attribute_mapping(cr, uid, self._calname, context) self.__attribute__ = get_attribute_mapping(cr, uid, self._calname, context)
parsedCal = vobject.readOne(ical_data) parsedCal = vobject.readOne(ical_data)
att_data = []
res = [] res = []
vals = {}
for child in parsedCal.getChildren(): for child in parsedCal.getChildren():
if child.name.lower() in ('vevent', 'vtodo'): if child.name.lower() in ('vevent', 'vtodo'):
vals = self.parse_ics(cr, uid, child, context=context) 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: else:
vals = {} vals = {}
continue continue
@ -588,15 +602,51 @@ class FreeBusy(CalDAV):
} }
class Timezone(CalDAV): class Timezone(CalDAV, osv.osv_memory):
_name = 'basic.calendar.timezone'
_calname = 'vtimezone'
__attribute__ = { __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. '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. '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, 'standardc': {'tzprop': None}, # Use: R-1,
'daylightc': {'tzprop': None}, # Use: R-1, 'daylightc': {'tzprop': None}, # Use: R-1,
'x-prop': None, # Use: O-n, Type: Text, '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): class Alarm(CalDAV, osv.osv_memory):

View File

@ -1,10 +1,7 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<openerp> <openerp>
<data noupdate="1"> <data noupdate="1">
<record model="basic.calendar" id="basic_calendar1">
<field name="name">OpenERP</field>
</record>
<!-- Event attributes--> <!-- 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 datetime import datetime, timedelta from datetime import datetime, timedelta
from dateutil import parser from dateutil import parser
from osv import fields, osv from osv import fields, osv
from base_calendar import base_calendar
from service import web_services from service import web_services
from tools.translate import _ from tools.translate import _
import base64 import base64
import pooler import pooler
import pytz
import re import re
import time import time
@ -423,6 +424,9 @@ class calendar_event(osv.osv):
_name = "calendar.event" _name = "calendar.event"
_description = "Calendar Event" _description = "Calendar Event"
__attribute__ = {} __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): def onchange_rrule_type(self, cr, uid, ids, rtype, *args, **argv):
if rtype == 'none' or not rtype: 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'), 'caldav_alarm_id': fields.many2one('calendar.alarm', 'Alarm'),
'recurrent_uid': fields.integer('Recurrent ID'), 'recurrent_uid': fields.integer('Recurrent ID'),
'recurrent_id': fields.datetime('Recurrent ID date'), 'recurrent_id': fields.datetime('Recurrent ID date'),
} 'vtimezone': fields.selection(_tz_get, 'Timezone', size=64),
'user_id': fields.many2one('res.users', 'Responsible'),
}
_defaults = { _defaults = {
'class': lambda *a: 'public', 'class': lambda *a: 'public',

View File

@ -129,381 +129,5 @@
<field eval="'do_run_scheduler'" name="function" /> <field eval="'do_run_scheduler'" name="function" />
<field eval="'(False,)'" name="args" /> <field eval="'(False,)'" name="args" />
</record> </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> </data>
</openerp> </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={}): 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: for case in cases:
model_ids = model_obj.search(cr, uid, [('model','=',case._name)]) model_ids = model_obj.search(cr, uid, [('model','=',case._name)])
data = { data = {
@ -820,14 +820,7 @@ class crm_case_history(osv.osv):
_name = "crm.case.history" _name = "crm.case.history"
_description = "Case history" _description = "Case history"
_order = "id desc" _order = "id desc"
_inherits = {'crm.case.log':"log_id"} _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)
def _note_get(self, cursor, user, ids, name, arg, context=None): def _note_get(self, cursor, user, ids, name, arg, context=None):
res = {} res = {}

View File

@ -49,9 +49,9 @@ class crm_cases(osv.osv):
res = mailgate_obj.partner_get(cr, uid, msg['From']) res = mailgate_obj.partner_get(cr, uid, msg['From'])
if res: if res:
data.update(res) data.update(res)
res = self.create(cr, uid, data) res = self.create(cr, uid, data)
cases = self.browse(cr, uid, [res]) 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 return res
def msg_update(self, cr, uid, ids, msg, data={}, default_act='pending'): 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) res = self.write(cr, uid, ids, data)
cases = self.browse(cr, uid, [res]) 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) getattr(self,act)(cr, uid, ids)
return res return res

View File

@ -25,33 +25,101 @@
<record model="res.request.link" id="request_link_meeting"> <record model="res.request.link" id="request_link_meeting">
<field name="name">Case Meeting</field> <field name="name">Case Meeting</field>
<field name="object">crm.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="name">vevent</field>
<field name="calendar_id" ref="base_calendar.basic_calendar1" /> <field name="calendar_id" ref="base_calendar.basic_calendar1" />
<field name="object_id" search="[('model','=','crm.meeting')]" /> <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>
<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="name" ref="base_calendar.field_event_attendee" />
<field name="type_id" ref="caldav.calendar_lines_event" /> <field name="type_id" ref="caldav.calendar_lines_event" />
<field name="field_id" search="[('name','=','attendee_ids'),('model_id.model','=','crm.meeting')]" /> <field name="field_id" search="[('name','=','attendee_ids'),('model_id.model','=','crm.meeting')]" />
<field name="fn">field</field> <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="name" ref="base_calendar.field_event_priority"/>
<field name="type_id" ref="caldav.calendar_lines_event" /> <field name="type_id" ref="caldav.calendar_lines_event" />
<field name="field_id" search="[('name','=','priority'),('model_id.model','=','crm.meeting')]" /> <field name="field_id" search="[('name','=','priority'),('model_id.model','=','crm.meeting')]" />
<field name="fn">field</field> <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="name" ref="base_calendar.field_event_status"/>
<field name="type_id" ref="caldav.calendar_lines_event" /> <field name="type_id" ref="caldav.calendar_lines_event" />
<field name="field_id" search="[('name','=','state'),('model_id.model','=','crm.meeting')]" /> <field name="field_id" search="[('name','=','state'),('model_id.model','=','crm.meeting')]" />
@ -59,5 +127,220 @@
<field name="fn">field</field> <field name="fn">field</field>
</record> </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> </data>
</openerp> </openerp>

View File

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

View File

@ -1,13 +1,17 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<openerp> <openerp>
<data noupdate="1"> <data noupdate="1">
<record model="basic.calendar" id="base_calendar.basic_calendar2">
<record model="basic.calendar.lines" id="caldav.calendar_lines_todo"> <field name="name">meeting_todo</field>
<field name="name">vtodo</field>
<field name="calendar_id" ref="base_calendar.basic_calendar1" />
<field name="object_id" search="[('model','=','project.task')]" />
</record> </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"> <record model="basic.calendar.fields" id="map_todo_1">
<field name="name" ref="base_calendar.field_todo_status" /> <field name="name" ref="base_calendar.field_todo_status" />
<field name="type_id" ref="caldav.calendar_lines_todo" /> <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="mapping">{'needs-action': 'draft', 'completed': 'done', 'in-process': 'open', 'cancelled': 'cancelled'}</field>
<field name="fn">field</field> <field name="fn">field</field>
</record> </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="name" ref="base_calendar.field_todo_attendee" />
<field name="type_id" ref="caldav.calendar_lines_todo" /> <field name="type_id" ref="caldav.calendar_lines_todo" />
<field name="field_id" search="[('name','=','attendee_ids'),('model_id.model','=','project.task')]" /> <field name="field_id" search="[('name','=','attendee_ids'),('model_id.model','=','project.task')]" />
<field name="fn">field</field> <field name="fn">field</field>
</record> </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="name" ref="base_calendar.field_todo_percent"/>
<field name="type_id" ref="caldav.calendar_lines_todo" /> <field name="type_id" ref="caldav.calendar_lines_todo" />
<field name="field_id" search="[('name','=','progress'),('model_id.model','=','project.task')]" /> <field name="field_id" search="[('name','=','progress'),('model_id.model','=','project.task')]" />
<field name="fn">field</field> <field name="fn">field</field>
</record> </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="name" ref="base_calendar.field_event_priority"/>
<field name="type_id" ref="caldav.calendar_lines_todo" /> <field name="type_id" ref="caldav.calendar_lines_todo" />
<field name="field_id" search="[('name','=','priority'),('model_id.model','=','project.task')]" /> <field name="field_id" search="[('name','=','priority'),('model_id.model','=','project.task')]" />
<field name="fn">field</field> <field name="fn">field</field>
</record> </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="name" ref="base_calendar.field_todo_duration"/>
<field name="type_id" ref="caldav.calendar_lines_todo" /> <field name="type_id" ref="caldav.calendar_lines_todo" />
<field name="field_id" search="[('name','=','planned_hours'),('model_id.model','=','project.task')]" /> <field name="field_id" search="[('name','=','planned_hours'),('model_id.model','=','project.task')]" />
<field name="fn">hours</field> <field name="fn">hours</field>
</record> </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> </data>
</openerp> </openerp>

View File

@ -66,7 +66,7 @@
<field name="inherit_id" ref="project.view_task_form2" /> <field name="inherit_id" ref="project.view_task_form2" />
<field name="type">form</field> <field name="type">form</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<field name="date_close" position="after"> <field name="progress" position="after">
<group colspan="2" col="3"> <group colspan="2" col="3">
<field name="rrule_type" string="Recurrency" <field name="rrule_type" string="Recurrency"
on_change="onchange_rrule_type(rrule_type)" colspan="1" /> 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'\ 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])) group by sra.answer_id,sqc.rating_weight" % (ans.id,matrix_ans[mat_col]))
col_weight = cr.fetchone() col_weight = cr.fetchone()
if not col_weight :
col_weight= (0,0)
res_count = col_weight[0] res_count = col_weight[0]
if tot_res: if tot_res:
rating_weight_sum += col_weight[1] * tot_res rating_weight_sum += col_weight[1] * tot_res

View File

@ -268,7 +268,7 @@ class survey_browse_response(report_rml):
</blockTable>""" </blockTable>"""
elif que.type in ['matrix_of_choices_only_one_ans','matrix_of_choices_only_multi_ans','rating_scale','matrix_of_drop_down_menus']: 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 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 pass
cols_widhts = [] cols_widhts = []
cols_widhts.append(200) cols_widhts.append(200)
@ -278,7 +278,7 @@ class survey_browse_response(report_rml):
tmp=0.0 tmp=0.0
sum = 0.0 sum = 0.0
i = 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: for col in cols_widhts:
if i==0: if i==0:
cols_widhts[i] = cols_widhts[i]/2.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: if col.title not in matrix_ans:
matrix_ans.append(col.title) matrix_ans.append(col.title)
len_matrix = len(matrix_ans) 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) matrix_ans.append(que.column_name)
rml+="""<blockTable colWidths=" """ + colWidths + """ " style="Table1"><tr>""" rml+="""<blockTable colWidths=" """ + colWidths + """ " style="Table1"><tr>"""
for mat_col in matrix_ans: 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"/> <rect x="0.1cm" y="-0.45cm" width="0.5 cm" height="0.5cm" fill="yes" stroke="yes" round="0.1cm"/>
</illustration>""" </illustration>"""
rml+= """<td>""" + value + """</td>""" 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': if comment_value=='False':
comment_value = '' comment_value = ''
rml+= """<td><para style="response">"""+ to_xml(tools.ustr(comment_value)) + """</para></td>""" rml+= """<td><para style="response">"""+ to_xml(tools.ustr(comment_value)) + """</para></td>"""
rml+=""" </tr></blockTable>""" rml+=""" </tr></blockTable>"""
if que.comment_field_type: if que.is_comment_require:
rml+="""<blockTable colWidths="500" style="Table1"><tr> 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: else:
rml +="""<blockTable colWidths="500" style="Table1"> rml +="""<blockTable colWidths="500" style="Table1">
<tr> <td> <para style="response">No Response</para></td> </tr> <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")) 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'): if question['type'] == 'matrix_of_drop_down_menus' and vals.has_key('column_heading_ids'):
for col in vals['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")) 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)")) 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) 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':{}} 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"}) 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': 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: for row in ans_ids:
etree.SubElement(xml_group, 'label', {'string': to_xml(tools.ustr(row['answer'])) +' :-', 'align': '0.0'}) 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']): 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']} 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': 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: for row in ans_ids:
etree.SubElement(xml_group, 'label', {'string': to_xml(tools.ustr(row['answer']))+' :-', 'align': '0.0'}) 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']): for col in que_col_head.read(cr, uid, que_rec['column_heading_ids']):
selection = [] selection = []
if col['menu_choice']: if col['menu_choice']:
for item in col['menu_choice'].split('\n'): for item in col['menu_choice'].split('\n'):
if item and not item.strip() == '': selection.append((item ,item)) 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} 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': elif que_rec['type'] == 'multiple_textboxes':
xml_group = etree.SubElement(xml_group, 'group', {'col': '1', 'colspan': '4'}) 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) numeric_sum += int(val)
elif val and len(key.split('_')) == 3: elif val and len(key.split('_')) == 3:
resp_obj.write(cr, uid, update, {'state': 'done'}) 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}) 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}) sur_name_read['store_ans'][update].update({key:val})
else: else:

View File

@ -30,7 +30,7 @@
<button name="%(action_view_survey_name)d" states="open,draft,close,cancel" <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')]}"/> 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" <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> </group>
<notebook colspan="4"> <notebook colspan="4">
<page string="Survey"> <page string="Survey">
@ -93,15 +93,16 @@
<field name="comment_valid_err_msg" nolabel="1" colspan="4"/> <field name="comment_valid_err_msg" nolabel="1" colspan="4"/>
</group> </group>
</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>
</group> </group>
<newline/> <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')]}"> <group attrs="{'invisible':[('type','!=','single_textbox'), ('type','!=','multiple_textboxes')]}">
<separator string="Validation" colspan="4"/> <separator string="Validation" colspan="4"/>
<group colspan="4"> <group colspan="4">
@ -351,15 +352,16 @@
<field name="comment_valid_err_msg" nolabel="1" colspan="4"/> <field name="comment_valid_err_msg" nolabel="1" colspan="4"/>
</group> </group>
</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>
</group> </group>
<newline/> <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')]}"> <group attrs="{'invisible':[('type','!=','single_textbox'), ('type','!=','multiple_textboxes')]}">
<separator string="Validation" colspan="4"/> <separator string="Validation" colspan="4"/>
<group colspan="4"> <group colspan="4">
@ -544,15 +546,16 @@
<field name="comment_valid_err_msg" nolabel="1" colspan="4"/> <field name="comment_valid_err_msg" nolabel="1" colspan="4"/>
</group> </group>
</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>
</group> </group>
<newline/> <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')]}"> <group attrs="{'invisible':[('type','!=','single_textbox'), ('type','!=','multiple_textboxes')]}">
<separator string="Validation" colspan="4"/> <separator string="Validation" colspan="4"/>
<group colspan="4"> <group colspan="4">