diff --git a/addons/base_calendar/base_calendar.py b/addons/base_calendar/base_calendar.py
index fd1d60914d1..896f63fb955 100644
--- a/addons/base_calendar/base_calendar.py
+++ b/addons/base_calendar/base_calendar.py
@@ -97,7 +97,7 @@ def real_id2base_calendar_id(real_id, recurrent_date):
return '%d-%s' % (real_id, recurrent_date)
return real_id
-def _links_get(self, cr, uid, context={}):
+def _links_get(self, cr, uid, context=None):
"""
Get request link.
@param cr: the current row, from the database cursor,
@@ -213,7 +213,9 @@ class calendar_attendee(osv.osv):
def _get_address(self, name=None, email=None):
"""
- Get Email Address
+ Gives email information in ical CAL-ADDRESS type format
+ @param name: Name for CAL-ADDRESS value
+ @param email: Email address for CAL-ADDRESS value
"""
if name and email:
name += ':'
@@ -221,7 +223,7 @@ class calendar_attendee(osv.osv):
def _compute_data(self, cr, uid, ids, name, arg, context):
"""
- Compute data on field.
+ Compute data on function fields for attendee values .
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of calendar attendee’s IDs.
@@ -241,6 +243,7 @@ class calendar_attendee(osv.osv):
else:
result[id][name] = self._get_address(attdata.sent_by_uid.name, \
attdata.sent_by_uid.address_id.email)
+
if name == 'cn':
if attdata.user_id:
result[id][name] = attdata.user_id.name
@@ -248,40 +251,47 @@ class calendar_attendee(osv.osv):
result[id][name] = attdata.partner_address_id.name or attdata.partner_id.name
else:
result[id][name] = attdata.email or ''
+
if name == 'delegated_to':
todata = []
for child in attdata.child_ids:
if child.email:
todata.append('MAILTO:' + child.email)
result[id][name] = ', '.join(todata)
+
if name == 'delegated_from':
fromdata = []
for parent in attdata.parent_ids:
if parent.email:
fromdata.append('MAILTO:' + parent.email)
result[id][name] = ', '.join(fromdata)
+
if name == 'event_date':
if attdata.ref:
result[id][name] = attdata.ref.date
else:
result[id][name] = False
+
if name == 'event_end_date':
if attdata.ref:
result[id][name] = attdata.ref.date_deadline
else:
result[id][name] = False
+
if name == 'sent_by_uid':
if attdata.ref:
result[id][name] = (attdata.ref.user_id.id, attdata.ref.user_id.name)
else:
result[id][name] = uid
+
if name == 'language':
user_obj = self.pool.get('res.users')
lang = user_obj.read(cr, uid, uid, ['context_lang'], context=context)['context_lang']
result[id][name] = lang.replace('_', '-')
+
return result
- def _links_get(self, cr, uid, context={}):
+ def _links_get(self, cr, uid, context=None):
"""
Get request link for ref field in calendar attendee.
@param cr: the current row, from the database cursor,
@@ -297,7 +307,7 @@ class calendar_attendee(osv.osv):
def _lang_get(self, cr, uid, context={}):
"""
- Get language for language function field.
+ Get language for language selection field.
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param context: A standard dictionary for contextual values
@@ -435,15 +445,18 @@ property or property parameter."),
res = cal.serialize()
return res
- def _send_mail(self, cr, uid, ids, mail_to, email_from=tools.config.get('email_from', False), context={}):
+ def _send_mail(self, cr, uid, ids, mail_to, email_from=tools.config.get('email_from', False), context=None):
"""
- Send mail for calendar attendee.
+ Send mail for event invitation to event attendees.
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
- @param ids: List of calendar attendee’s IDs.
+ @param ids: List of attendee’s IDs.
+ @param email_from: Email address for user sending the mail
@param context: A standard dictionary for contextual values
@return: True
"""
+ if not context:
+ context = {}
company = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.name
for att in self.browse(cr, uid, ids, context=context):
@@ -471,12 +484,12 @@ property or property parameter."),
attach = self.get_ics_file(cr, uid, res_obj, context=context)
if mail_to and email_from:
tools.email_send(
- email_from,
- mail_to,
- sub,
- body,
- attach=attach and [('invitation.ics', attach)] or None,
- subtype='html',
+ email_from,
+ mail_to,
+ sub,
+ body,
+ attach=attach and [('invitation.ics', attach)] or None,
+ subtype='html',
reply_to=email_from
)
return True
@@ -487,7 +500,7 @@ property or property parameter."),
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of calendar attendee’s IDs.
- @param user_id: User id
+ @param user_id: Changed value of User id
@return: dictionary of value. which put value in email and availability fields.
"""
@@ -498,24 +511,27 @@ property or property parameter."),
return {'value': {'email': user.address_id.email, 'availability':user.availability}}
def do_tentative(self, cr, uid, ids, context=None, *args):
- """ @param self: The object pointer
- @param cr: the current row, from the database cursor,
- @param uid: the current user’s ID for security checks,
- @param ids: List of calendar attendee’s IDs
- @param *args: Get Tupple value
- @param context: A standard dictionary for contextual values """
+ """ Makes event invitation as Tentative
+ @param self: The object pointer
+ @param cr: the current row, from the database cursor,
+ @param uid: the current user’s ID for security checks,
+ @param ids: List of calendar attendee’s IDs
+ @param *args: Get Tupple value
+ @param context: A standard dictionary for contextual values
+ """
self.write(cr, uid, ids, {'state': 'tentative'}, context)
def do_accept(self, cr, uid, ids, context=None, *args):
"""
- Update state which value is accepted.
+ Update state of invitation as Accepted and
+ if the invited user is other then event user it will make a copy of this event for invited user
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of calendar attendee’s IDs.
+ @param context: A standard dictionary for contextual values
@return: True
"""
-
if not context:
context = {}
@@ -532,21 +548,23 @@ property or property parameter."),
return True
def do_decline(self, cr, uid, ids, context=None, *args):
- """ @param self: The object pointer
- @param cr: the current row, from the database cursor,
- @param uid: the current user’s ID for security checks,
- @param ids: List of calendar attendee’s IDs
- @param *args: Get Tupple value
- @param context: A standard dictionary for contextual values """
+ """ Marks event invitation as Declined
+ @param self: The object pointer
+ @param cr: the current row, from the database cursor,
+ @param uid: the current user’s ID for security checks,
+ @param ids: List of calendar attendee’s IDs
+ @param *args: Get Tupple value
+ @param context: A standard dictionary for contextual values """
self.write(cr, uid, ids, {'state': 'declined'}, context)
def create(self, cr, uid, vals, context=None):
- """ @param self: The object pointer
- @param cr: the current row, from the database cursor,
- @param uid: the current user’s ID for security checks,
- @param vals: Get Values
- @param context: A standard dictionary for contextual values """
+ """ Overrides orm create method.
+ @param self: The object pointer
+ @param cr: the current row, from the database cursor,
+ @param uid: the current user’s ID for security checks,
+ @param vals: Get Values
+ @param context: A standard dictionary for contextual values """
if not context:
context = {}
@@ -561,8 +579,10 @@ property or property parameter."),
calendar_attendee()
class res_alarm(osv.osv):
+ """Resource Alarm """
_name = 'res.alarm'
_description = 'Basic Alarm Information'
+
_columns = {
'name':fields.char('Name', size=256, required=True),
'trigger_occurs': fields.selection([('before', 'Before'), \
@@ -590,17 +610,19 @@ true, it will allow you to hide the event alarm information without removing it.
'active': lambda *x: 1,
}
- def do_alarm_create(self, cr, uid, ids, model, date, context={}):
+ def do_alarm_create(self, cr, uid, ids, model, date, context=None):
"""
- Create Alarm for meeting.
+ Create Alarm for event.
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of res alarm’s IDs.
@param model: Model name.
+ @param date: Event date
@param context: A standard dictionary for contextual values
@return: True
"""
-
+ if not context:
+ context = {}
alarm_obj = self.pool.get('calendar.alarm')
ir_obj = self.pool.get('ir.model')
model_id = ir_obj.search(cr, uid, [('model', '=', model)])[0]
@@ -638,16 +660,17 @@ true, it will allow you to hide the event alarm information without removing it.
cr.commit()
return True
- def do_alarm_unlink(self, cr, uid, ids, model, context={}):
+ def do_alarm_unlink(self, cr, uid, ids, model, context=None):
"""
Delete alarm specified in ids
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of res alarm’s IDs.
- @param model: Model name.
+ @param model: Model name for which alarm is to be cleared.
@return: True
"""
-
+ if not context:
+ context = {}
alarm_obj = self.pool.get('calendar.alarm')
ir_obj = self.pool.get('ir.model')
model_id = ir_obj.search(cr, uid, [('model', '=', model)])[0]
@@ -670,51 +693,53 @@ class calendar_alarm(osv.osv):
__attribute__ = {}
_columns = {
- 'alarm_id': fields.many2one('res.alarm', 'Basic Alarm', ondelete='cascade'),
+ 'alarm_id': fields.many2one('res.alarm', 'Basic Alarm', ondelete='cascade'),
'name': fields.char('Summary', size=124, help="""Contains the text to be \
used as the message subject for email \
- or contains the text to be used for display"""),
+ or contains the text to be used for display"""),
'action': fields.selection([('audio', 'Audio'), ('display', 'Display'), \
('procedure', 'Procedure'), ('email', 'Email') ], 'Action', \
- required=True, help="Defines the action to be invoked when an alarm is triggered"),
+ required=True, help="Defines the action to be invoked when an alarm is triggered"),
'description': fields.text('Description', help='Provides a more complete \
description of the calendar component, than that \
- provided by the "SUMMARY" property'),
+ provided by the "SUMMARY" property'),
'attendee_ids': fields.many2many('calendar.attendee', 'alarm_attendee_rel', \
- 'alarm_id', 'attendee_id', 'Attendees', readonly=True),
+ 'alarm_id', 'attendee_id', 'Attendees', readonly=True),
'attach': fields.binary('Attachment', help="""* Points to a sound resource,\
which is rendered when the alarm is triggered for audio,
* File which is intended to be sent as message attachments for email,
* Points to a procedure resource, which is invoked when\
- the alarm is triggered for procedure."""),
- 'res_id': fields.integer('Resource ID'),
- 'model_id': fields.many2one('ir.model', 'Model'),
- 'user_id': fields.many2one('res.users', 'Owner'),
- 'event_date': fields.datetime('Event Date'),
- 'event_end_date': fields.datetime('Event End Date'),
- 'trigger_date': fields.datetime('Trigger Date', readonly="True"),
+ the alarm is triggered for procedure."""),
+ 'res_id': fields.integer('Resource ID'),
+ 'model_id': fields.many2one('ir.model', 'Model'),
+ 'user_id': fields.many2one('res.users', 'Owner'),
+ 'event_date': fields.datetime('Event Date'),
+ 'event_end_date': fields.datetime('Event End Date'),
+ 'trigger_date': fields.datetime('Trigger Date', readonly="True"),
'state':fields.selection([
- ('draft', 'Draft'),
- ('run', 'Run'),
- ('stop', 'Stop'),
- ('done', 'Done'),
- ], 'State', select=True, readonly=True),
+ ('draft', 'Draft'),
+ ('run', 'Run'),
+ ('stop', 'Stop'),
+ ('done', 'Done'),
+ ], 'State', select=True, readonly=True),
}
_defaults = {
'action': lambda *x: 'email',
'state': lambda *x: 'run',
}
- def create(self, cr, uid, vals, context={}):
+
+ def create(self, cr, uid, vals, context=None):
"""
- create new record.
+ Overrides orm create method.
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param vals: dictionary of fields value.{‘name_of_the_field’: value, ...}
@param context: A standard dictionary for contextual values
@return: new record id for calendar_alarm.
"""
-
+ if not context:
+ context = {}
event_date = vals.get('event_date', False)
if event_date:
dtstart = datetime.strptime(vals['event_date'], "%Y-%m-%d %H:%M:%S")
@@ -731,7 +756,7 @@ class calendar_alarm(osv.osv):
def do_run_scheduler(self, cr, uid, automatic=False, use_new_cursor=False, \
context=None):
- """
+ """Scheduler for event reminder
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@@ -808,7 +833,7 @@ class calendar_event(osv.osv):
return [(x.lower(), x) for x in pytz.all_timezones]
def onchange_allday(self, cr, uid, ids, allday, context={}):
- """
+ """Sets duration as 24 Hours if event is selcted for all day
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@@ -820,23 +845,23 @@ class calendar_event(osv.osv):
return {}
event = self.browse(cr, uid, ids, context=context)[0]
value = {
- 'date': event.date and event.date[:11] + '00:00:00',
- 'date_deadline': event.date_deadline and event.date_deadline[:11] + '00:00:00',
'duration': 24
}
return {'value': value}
- def onchange_dates(self, cr, uid, ids, start_date, duration=False, end_date=False, allday=False, context={}):
- """
+ def onchange_dates(self, cr, uid, ids, start_date, duration=False, end_date=False, allday=False, context=None):
+ """Returns duration and/or end date based on values passed
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of calendar event’s IDs.
- @param start_date: Get starting date
- @param duration: Get Duration between start date and end date or False
- @param end_date: Get Ending Date or False
+ @param start_date: Starting date
+ @param duration: Duration between start date and end date
+ @param end_date: Ending Datee
@param context: A standard dictionary for contextual values
"""
+ if not context:
+ context = {}
value = {}
if not start_date:
return value
@@ -845,10 +870,7 @@ class calendar_event(osv.osv):
value['duration'] = duration
if allday: # For all day event
- start = start_date[:11] + '00:00:00'
value = {
- 'date': start,
- 'date_deadline': start,
'duration': 24
}
return {'value': value}
@@ -865,15 +887,17 @@ class calendar_event(osv.osv):
return {'value': value}
- def _set_rrulestring(self, cr, uid, id, name, value, arg, context):
+ def _set_rrulestring(self, cr, uid, id, name, value, arg, context=None):
"""
- Set rule string.
+ Sets values of fields that defines event recurrence from the value of rrule string
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param id: List of calendar event's ids.
@param context: A standard dictionary for contextual values
@return: dictionary of rrule value.
"""
+ if not context:
+ context = {}
cr.execute("UPDATE %s set freq='None',interval=0,count=0,end_date=Null,\
mo=False,tu=False,we=False,th=False,fr=False,sa=False,su=False,\
day=0,select1='date',month_list=Null ,byday=Null where id=%s" % (self._table, id))
@@ -950,7 +974,7 @@ class calendar_event(osv.osv):
def _get_rulestring(self, cr, uid, ids, name, arg, context=None):
"""
- Get rule string.
+ Gets Recurrence rule string according to value type RECUR of iCalendar from the values given.
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param id: List of calendar event's ids.
@@ -968,7 +992,7 @@ class calendar_event(osv.osv):
raise osv.except_osv('Warning!', 'Interval can not be Negative')
if datas.get('count', 0) < 0:
raise osv.except_osv('Warning!', 'Count can not be Negative')
- rrule_custom = self.compute_rule_string(cr, uid, datas,\
+ rrule_custom = self.compute_rule_string(cr, uid, datas, \
context=context)
result[event] = rrule_custom
else:
@@ -986,8 +1010,8 @@ class calendar_event(osv.osv):
'duration': fields.float('Duration'),
'description': fields.text('Your action'),
'class': fields.selection([('public', 'Public'), ('private', 'Private'), \
- ('confidential', 'Confidential')], 'Mark as'),
- 'location': fields.char('Location', size=264, help="Location of Event"),
+ ('confidential', 'Confidential')], 'Mark as'),
+ 'location': fields.char('Location', size=264, help="Location of Event"),
'show_as': fields.selection([('free', 'Free'), ('busy', 'Busy')], \
'Show as'),
'base_calendar_url': fields.char('Caldav URL', size=264),
@@ -1040,8 +1064,8 @@ e.g.: Every other month on the last Sunday of the month for 10 occurrences:\
('5', 'Fifth'), ('-1', 'Last')], 'By day'),
'month_list': fields.selection(months.items(), 'Month'),
'end_date': fields.date('Repeat Until'),
- 'attendee_ids': fields.many2many('calendar.attendee', 'event_attendee_rel',\
- 'event_id', 'attendee_id', 'Attendees'),
+ 'attendee_ids': fields.many2many('calendar.attendee', 'event_attendee_rel', \
+ 'event_id', 'attendee_id', 'Attendees'),
'allday': fields.boolean('All Day'),
'active': fields.boolean('Active', help="If the active field is set to \
true, it will allow you to hide the event alarm information without removing it.")
@@ -1088,7 +1112,7 @@ true, it will allow you to hide the event alarm information without removing it.
'view_mode': 'form,tree',
'res_model': 'calendar.event',
'view_id': False,
- 'views': [(id2, 'form'), (id3, 'tree'), (id4, 'calendar')],
+ 'views': [(id2, 'form'), (id3, 'tree'), (id4, 'calendar')],
'type': 'ir.actions.act_window',
'res_id': base_calendar_id2real_id(id),
'nodestroy': True
@@ -1097,15 +1121,15 @@ true, it will allow you to hide the event alarm information without removing it.
return value
def modify_this(self, cr, uid, event_id, defaults, real_date, context=None, *args):
- """
+ """Modifies only one event record out of virtual recurrent events
+ and creates new event as a specific instance of a Recurring Event",
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
- @param event_id: Get Event_id
- @param real_date: Get Real Date
+ @param event_id: Id of Recurring Event
+ @param real_date: Date of event recurrence that is being modified
@param context: A standard dictionary for contextual values
- @param *args: Get Tuppel Value
-
+ @param *args: Get Tupple Value
"""
event_id = base_calendar_id2real_id(event_id)
@@ -1125,10 +1149,11 @@ true, it will allow you to hide the event alarm information without removing it.
def modify_all(self, cr, uid, event_ids, defaults, context=None, *args):
"""
- Modify name, date, date_deadline fields.
+ Modifies the recurring event
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param event_ids: List of crm meeting’s IDs.
+ @param context: A standard dictionary for contextual values
@return: True
"""
@@ -1150,7 +1175,8 @@ true, it will allow you to hide the event alarm information without removing it.
return True
def get_recurrent_ids(self, cr, uid, select, base_start_date, base_until_date, limit=100):
- """
+ """Gives virtual event ids for recurring events based on value of Recurrence Rule
+ This method gives ids of dates that comes between start date and end date of calendar views
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@@ -1232,12 +1258,13 @@ true, it will allow you to hide the event alarm information without removing it.
def compute_rule_string(self, cr, uid, datas, context=None, *args):
"""
- Compute rule string.
+ Compute rule string according to value type RECUR of iCalendar from the values given.
@param self: the object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param datas: dictionary of freq and interval value.
- @return: string value which compute FREQILY;INTERVAL
+ @param context: A standard dictionary for contextual values
+ @return: String value of the format RECUR of iCalendar
"""
weekdays = ['mo', 'tu', 'we', 'th', 'fr', 'sa', 'su']
@@ -1295,6 +1322,8 @@ true, it will allow you to hide the event alarm information without removing it.
@param args: list of tuples of form [(‘name_of_the_field’, ‘operator’, value), ...].
@param offset: The Number of Results to Pass
@param limit: The Number of Results to Return
+ @param context: A standard dictionary for contextual values
+ @param count: If its True the method returns number of records instead of ids
@return: List of id
"""
args_without_date = []
@@ -1319,12 +1348,13 @@ true, it will allow you to hide the event alarm information without removing it.
def write(self, cr, uid, ids, vals, context=None, check=True, update_check=True):
"""
- Writes values in one or several fields.
+ Overrides orm write method.
@param self: the object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of crm meeting's ids
@param vals: Dictionary of field value.
+ @param context: A standard dictionary for contextual values
@return: True
"""
if not context:
@@ -1364,6 +1394,7 @@ true, it will allow you to hide the event alarm information without removing it.
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of crm meeting's ids
+ @param context: A standard dictionary for contextual values
@return: the object list.
"""
if isinstance(ids, (str, int, long)):
@@ -1378,15 +1409,19 @@ true, it will allow you to hide the event alarm information without removing it.
return res
- def read(self, cr, uid, ids, fields=None, context={}, load='_classic_read'):
+ def read(self, cr, uid, ids, fields=None, context=None, load='_classic_read'):
"""
Overrides orm Read method.Read List of fields for calendar event.
@param cr: the current row, from the database cursor,
@param user: the current user’s ID for security checks,
@param ids: List of calendar event's id.
@param fields: List of fields.
+ @param context: A standard dictionary for contextual values
@return: List of Dictionary of form [{‘name_of_the_field’: value, ...}, ...]
"""
+ if not context:
+ context = {}
+
if isinstance(ids, (str, int, long)):
select = [ids]
else:
@@ -1408,14 +1443,17 @@ true, it will allow you to hide the event alarm information without removing it.
return result and result[0] or False
return result
- def copy(self, cr, uid, id, default=None, context={}):
+ def copy(self, cr, uid, id, default=None, context=None):
"""
Duplicate record on specified id.
@param self: the object pointer.
@param cr: the current row, from the database cursor,
@param id: id of record from which we duplicated.
+ @param context: A standard dictionary for contextual values
@return: Duplicate record id.
"""
+ if not context:
+ context = {}
res = super(calendar_event, self).copy(cr, uid, base_calendar_id2real_id(id), default, context)
alarm_obj = self.pool.get('res.alarm')
alarm_obj.do_alarm_create(cr, uid, [res], self._name, 'date')
@@ -1428,6 +1466,7 @@ true, it will allow you to hide the event alarm information without removing it.
@param self: the object pointer.
@param cr: the current row, from the database cursor,
@param id: List of calendar event's id.
+ @param context: A standard dictionary for contextual values
@return: True
"""
res = False
@@ -1454,15 +1493,18 @@ true, it will allow you to hide the event alarm information without removing it.
alarm_obj.do_alarm_unlink(cr, uid, ids, self._name)
return res
- def create(self, cr, uid, vals, context={}):
+ def create(self, cr, uid, vals, context=None):
"""
Create new record.
@param self: the object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param vals: dictionary of every field value.
+ @param context: A standard dictionary for contextual values
@return: new created record id.
"""
+ if not context:
+ context = {}
res = super(calendar_event, self).create(cr, uid, vals, context)
alarm_obj = self.pool.get('res.alarm')
alarm_obj.do_alarm_create(cr, uid, [res], self._name, 'date')
@@ -1582,7 +1624,7 @@ class ir_values(osv.osv):
return super(ir_values, self).set(cr, uid, key, key2, name, new_model, \
value, replace, isobject, meta, preserve_user, company)
- def get(self, cr, uid, key, key2, models, meta=False, context={}, \
+ def get(self, cr, uid, key, key2, models, meta=False, context=None, \
res_id_req=False, without_user=True, key2_req=True):
"""
Get IR Values
@@ -1591,7 +1633,8 @@ class ir_values(osv.osv):
@param uid: the current user’s ID for security checks,
@param model: Get The Model
"""
-
+ if not context:
+ context = {}
new_model = []
for data in models:
if type(data) in (list, tuple):
@@ -1607,17 +1650,18 @@ class ir_model(osv.osv):
_inherit = 'ir.model'
- def read(self, cr, uid, ids, fields=None, context={},
+ def read(self, cr, uid, ids, fields=None, context=None,
load='_classic_read'):
"""
- Read IR Model
+ Overrides orm read method.
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of IR Model’s IDs.
@param context: A standard dictionary for contextual values
"""
-
+ if not context:
+ context = {}
data = super(ir_model, self).read(cr, uid, ids, fields=fields, \
context=context, load=load)
if data:
@@ -1655,7 +1699,7 @@ class res_users(osv.osv):
def _get_user_avail(self, cr, uid, ids, context=None):
"""
- Get USer Availability
+ Get User Availability
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@@ -1686,7 +1730,7 @@ class res_users(osv.osv):
def _get_user_avail_fun(self, cr, uid, ids, name, args, context=None):
"""
- Get USer Availability Function
+ Get User Availability Function
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@@ -1701,6 +1745,7 @@ class res_users(osv.osv):
selection=[('free', 'Free'), ('busy', 'Busy')], \
string='Free/Busy', method=True),
}
+
res_users()
diff --git a/addons/base_calendar/base_calendar_view.xml b/addons/base_calendar/base_calendar_view.xml
index 0c8a52260ef..c8bba10ea16 100644
--- a/addons/base_calendar/base_calendar_view.xml
+++ b/addons/base_calendar/base_calendar_view.xml
@@ -77,6 +77,8 @@
+
+
@@ -99,6 +101,20 @@
+
+
+
+
+
+
+
+
+
@@ -138,9 +154,6 @@
-
-
-
diff --git a/addons/crm/crm_meeting_view.xml b/addons/crm/crm_meeting_view.xml
index 3286936b8a0..79a09055086 100644
--- a/addons/crm/crm_meeting_view.xml
+++ b/addons/crm/crm_meeting_view.xml
@@ -33,9 +33,9 @@
domain="[('object_id.model', '=', 'crm.meeting')]" />
+ on_change="onchange_dates(date,duration,False,allday)" />
+ on_change="onchange_dates(date,duration,False,allday)" />