[FIX] [CLEAN] Various: fixed / cleaned use of dict.fromkeys.
Indeed using fromkeys with a list / dict as argument leads to the creation of shared list / dict. This could create some ugly side effects when used in loops. This commit fixes or cleans this kind of statement to avoid unwanted side effects.
This commit is contained in:
parent
f0c3856be2
commit
7cad4baa84
|
@ -95,7 +95,7 @@ class gamification_badge(osv.Model):
|
||||||
the total number of time this badge was granted
|
the total number of time this badge was granted
|
||||||
the total number of users this badge was granted to
|
the total number of users this badge was granted to
|
||||||
"""
|
"""
|
||||||
result = dict.fromkeys(ids, {'stat_count':0, 'stat_count_distinct':0, 'unique_owner_ids':[]})
|
result = dict((res_id, {'stat_count': 0, 'stat_count_distinct': 0, 'unique_owner_ids': []}) for res_id in ids)
|
||||||
|
|
||||||
cr.execute("""
|
cr.execute("""
|
||||||
SELECT badge_id, count(user_id) as stat_count,
|
SELECT badge_id, count(user_id) as stat_count,
|
||||||
|
|
|
@ -68,7 +68,7 @@ class hr_holidays_status(osv.osv):
|
||||||
if employee_id:
|
if employee_id:
|
||||||
res = self.get_days(cr, uid, ids, employee_id, context=context)
|
res = self.get_days(cr, uid, ids, employee_id, context=context)
|
||||||
else:
|
else:
|
||||||
res = dict.fromkeys(ids, {'leaves_taken': 0, 'remaining_leaves': 0, 'max_leaves': 0})
|
res = dict((res_id, {'leaves_taken': 0, 'remaining_leaves': 0, 'max_leaves': 0}) for res_id in ids)
|
||||||
return res
|
return res
|
||||||
|
|
||||||
_columns = {
|
_columns = {
|
||||||
|
|
|
@ -153,7 +153,7 @@ class hr_applicant(osv.Model):
|
||||||
return result, fold
|
return result, fold
|
||||||
|
|
||||||
def _compute_day(self, cr, uid, ids, fields, args, context=None):
|
def _compute_day(self, cr, uid, ids, fields, args, context=None):
|
||||||
res = dict.fromkeys(ids, dict())
|
res = dict((res_id, {}) for res_id in ids)
|
||||||
for issue in self.browse(cr, uid, ids, context=context):
|
for issue in self.browse(cr, uid, ids, context=context):
|
||||||
values = {
|
values = {
|
||||||
'day_open': 0.0,
|
'day_open': 0.0,
|
||||||
|
|
|
@ -698,7 +698,7 @@ class mail_message(osv.Model):
|
||||||
partner_id = self.pool['res.users'].browse(cr, SUPERUSER_ID, uid, context=None).partner_id.id
|
partner_id = self.pool['res.users'].browse(cr, SUPERUSER_ID, uid, context=None).partner_id.id
|
||||||
|
|
||||||
# Read mail_message.ids to have their values
|
# Read mail_message.ids to have their values
|
||||||
message_values = dict.fromkeys(ids, {})
|
message_values = dict((res_id, {}) for res_id in ids)
|
||||||
cr.execute('SELECT DISTINCT id, model, res_id, author_id, parent_id FROM "%s" WHERE id = ANY (%%s)' % self._table, (ids,))
|
cr.execute('SELECT DISTINCT id, model, res_id, author_id, parent_id FROM "%s" WHERE id = ANY (%%s)' % self._table, (ids,))
|
||||||
for id, rmod, rid, author_id, parent_id in cr.fetchall():
|
for id, rmod, rid, author_id, parent_id in cr.fetchall():
|
||||||
message_values[id] = {'model': rmod, 'res_id': rid, 'author_id': author_id, 'parent_id': parent_id}
|
message_values[id] = {'model': rmod, 'res_id': rid, 'author_id': author_id, 'parent_id': parent_id}
|
||||||
|
|
|
@ -1388,7 +1388,7 @@ class mail_thread(osv.AbstractModel):
|
||||||
def message_get_suggested_recipients(self, cr, uid, ids, context=None):
|
def message_get_suggested_recipients(self, cr, uid, ids, context=None):
|
||||||
""" Returns suggested recipients for ids. Those are a list of
|
""" Returns suggested recipients for ids. Those are a list of
|
||||||
tuple (partner_id, partner_name, reason), to be managed by Chatter. """
|
tuple (partner_id, partner_name, reason), to be managed by Chatter. """
|
||||||
result = dict.fromkeys(ids, list())
|
result = dict((res_id, []) for res_id in ids)
|
||||||
if self._all_columns.get('user_id'):
|
if self._all_columns.get('user_id'):
|
||||||
for obj in self.browse(cr, SUPERUSER_ID, ids, context=context): # SUPERUSER because of a read on res.users that would crash otherwise
|
for obj in self.browse(cr, SUPERUSER_ID, ids, context=context): # SUPERUSER because of a read on res.users that would crash otherwise
|
||||||
if not obj.user_id or not obj.user_id.partner_id:
|
if not obj.user_id or not obj.user_id.partner_id:
|
||||||
|
|
|
@ -150,7 +150,7 @@ class res_users(osv.Model):
|
||||||
return self.pool.get('mail.thread').message_get_partner_info_from_emails(cr, uid, emails, link_mail=link_mail, context=context)
|
return self.pool.get('mail.thread').message_get_partner_info_from_emails(cr, uid, emails, link_mail=link_mail, context=context)
|
||||||
|
|
||||||
def message_get_suggested_recipients(self, cr, uid, ids, context=None):
|
def message_get_suggested_recipients(self, cr, uid, ids, context=None):
|
||||||
return dict.fromkeys(ids, list())
|
return dict((res_id, list()) for res_id in ids)
|
||||||
|
|
||||||
def stop_showing_groups_suggestions(self, cr, uid, user_id, context=None):
|
def stop_showing_groups_suggestions(self, cr, uid, user_id, context=None):
|
||||||
"""Update display_groups_suggestions value to False"""
|
"""Update display_groups_suggestions value to False"""
|
||||||
|
|
|
@ -133,7 +133,7 @@ class project_issue(osv.Model):
|
||||||
"""
|
"""
|
||||||
Calendar = self.pool['resource.calendar']
|
Calendar = self.pool['resource.calendar']
|
||||||
|
|
||||||
res = dict.fromkeys(ids, dict())
|
res = dict((res_id, {}) for res_id in ids)
|
||||||
for issue in self.browse(cr, uid, ids, context=context):
|
for issue in self.browse(cr, uid, ids, context=context):
|
||||||
values = {
|
values = {
|
||||||
'day_open': 0.0, 'day_close': 0.0,
|
'day_open': 0.0, 'day_close': 0.0,
|
||||||
|
|
|
@ -32,7 +32,7 @@ class purchase_requisition(osv.osv):
|
||||||
_inherit = ['mail.thread', 'ir.needaction_mixin']
|
_inherit = ['mail.thread', 'ir.needaction_mixin']
|
||||||
|
|
||||||
def _get_po_line(self, cr, uid, ids, field_names, arg=None, context=None):
|
def _get_po_line(self, cr, uid, ids, field_names, arg=None, context=None):
|
||||||
result = {}.fromkeys(ids, [])
|
result = dict((res_id, []) for res_id in ids)
|
||||||
for element in self.browse(cr, uid, ids, context=context):
|
for element in self.browse(cr, uid, ids, context=context):
|
||||||
for po in element.purchase_ids:
|
for po in element.purchase_ids:
|
||||||
result[element.id] += [po_line.id for po_line in po.order_line]
|
result[element.id] += [po_line.id for po_line in po.order_line]
|
||||||
|
|
|
@ -3623,7 +3623,7 @@ class stock_package(osv.osv):
|
||||||
|
|
||||||
def _get_package_info(self, cr, uid, ids, name, args, context=None):
|
def _get_package_info(self, cr, uid, ids, name, args, context=None):
|
||||||
default_company_id = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.id
|
default_company_id = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.id
|
||||||
res = {}.fromkeys(ids, {'location_id': False, 'company_id': default_company_id, 'owner_id': False})
|
res = dict((res_id, {'location_id': False, 'company_id': default_company_id, 'owner_id': False}) for res_id in ids)
|
||||||
for pack in self.browse(cr, uid, ids, context=context):
|
for pack in self.browse(cr, uid, ids, context=context):
|
||||||
if pack.quant_ids:
|
if pack.quant_ids:
|
||||||
res[pack.id]['location_id'] = pack.quant_ids[0].location_id.id
|
res[pack.id]['location_id'] = pack.quant_ids[0].location_id.id
|
||||||
|
@ -4113,7 +4113,7 @@ class stock_picking_type(osv.osv):
|
||||||
|
|
||||||
def _get_tristate_values(self, cr, uid, ids, field_name, arg, context=None):
|
def _get_tristate_values(self, cr, uid, ids, field_name, arg, context=None):
|
||||||
picking_obj = self.pool.get('stock.picking')
|
picking_obj = self.pool.get('stock.picking')
|
||||||
res = dict.fromkeys(ids, [])
|
res = {}
|
||||||
for picking_type_id in ids:
|
for picking_type_id in ids:
|
||||||
#get last 10 pickings of this type
|
#get last 10 pickings of this type
|
||||||
picking_ids = picking_obj.search(cr, uid, [('picking_type_id', '=', picking_type_id), ('state', '=', 'done')], order='date_done desc', limit=10, context=context)
|
picking_ids = picking_obj.search(cr, uid, [('picking_type_id', '=', picking_type_id), ('state', '=', 'done')], order='date_done desc', limit=10, context=context)
|
||||||
|
|
|
@ -132,7 +132,7 @@ class event_event(osv.osv):
|
||||||
}
|
}
|
||||||
|
|
||||||
def _get_tracks_tag_ids(self, cr, uid, ids, field_names, arg=None, context=None):
|
def _get_tracks_tag_ids(self, cr, uid, ids, field_names, arg=None, context=None):
|
||||||
res = dict.fromkeys(ids, [])
|
res = dict((res_id, []) for res_id in ids)
|
||||||
for event in self.browse(cr, uid, ids, context=context):
|
for event in self.browse(cr, uid, ids, context=context):
|
||||||
for track in event.track_ids:
|
for track in event.track_ids:
|
||||||
res[event.id] += [tag.id for tag in track.tag_ids]
|
res[event.id] += [tag.id for tag in track.tag_ids]
|
||||||
|
|
|
@ -34,12 +34,13 @@ class MailGroup(http.Controller):
|
||||||
groups = group_obj.browse(cr, uid, group_ids, context)
|
groups = group_obj.browse(cr, uid, group_ids, context)
|
||||||
# compute statistics
|
# compute statistics
|
||||||
month_date = datetime.datetime.today() - relativedelta.relativedelta(months=1)
|
month_date = datetime.datetime.today() - relativedelta.relativedelta(months=1)
|
||||||
group_data = dict.fromkeys(group_ids, dict())
|
group_data = dict()
|
||||||
for group in groups:
|
for group in groups:
|
||||||
group_data[group.id]['monthly_message_nbr'] = mail_message_obj.search(
|
group_data[group.id] = {
|
||||||
cr, SUPERUSER_ID,
|
'monthly_message_nbr': mail_message_obj.search(
|
||||||
[('model', '=', 'mail.group'), ('res_id', '=', group.id), ('date', '>=', month_date.strftime(tools.DEFAULT_SERVER_DATETIME_FORMAT))],
|
cr, SUPERUSER_ID,
|
||||||
count=True, context=context)
|
[('model', '=', 'mail.group'), ('res_id', '=', group.id), ('date', '>=', month_date.strftime(tools.DEFAULT_SERVER_DATETIME_FORMAT))],
|
||||||
|
count=True, context=context)}
|
||||||
values = {'groups': groups, 'group_data': group_data}
|
values = {'groups': groups, 'group_data': group_data}
|
||||||
return request.website.render('website_mail_group.mail_groups', values)
|
return request.website.render('website_mail_group.mail_groups', values)
|
||||||
|
|
||||||
|
|
|
@ -70,7 +70,7 @@ class Graph(dict):
|
||||||
return
|
return
|
||||||
# update the graph with values from the database (if exist)
|
# update the graph with values from the database (if exist)
|
||||||
## First, we set the default values for each package in graph
|
## First, we set the default values for each package in graph
|
||||||
additional_data = dict.fromkeys(self.keys(), {'id': 0, 'state': 'uninstalled', 'dbdemo': False, 'installed_version': None})
|
additional_data = dict((key, {'id': 0, 'state': 'uninstalled', 'dbdemo': False, 'installed_version': None}) for key in self.keys())
|
||||||
## Then we get the values from the database
|
## Then we get the values from the database
|
||||||
cr.execute('SELECT name, id, state, demo AS dbdemo, latest_version AS installed_version'
|
cr.execute('SELECT name, id, state, demo AS dbdemo, latest_version AS installed_version'
|
||||||
' FROM ir_module_module'
|
' FROM ir_module_module'
|
||||||
|
|
Loading…
Reference in New Issue