[FIX] Backported the fix from trunk for the module Audittrail : audit_trail settings should be readable by everyone, not just the user in employee group
lp bug: https://launchpad.net/bugs/722579 fixed bzr revid: jvo@tinyerp.com-20110607071047-ubogvm2fndrhh1zd
This commit is contained in:
@@ -301,6 +301,8 @@ class audittrail_objects_proxy(object_proxy):
|
||||
|
||||
@return: Returns result as per method of Object proxy
|
||||
"""
|
||||
uid_orig = uid
|
||||
uid = 1
|
||||
res2 = args
|
||||
pool = pooler.get_pool(db)
|
||||
cr = pooler.get_db(db).cursor()
|
||||
@@ -314,13 +316,13 @@ class audittrail_objects_proxy(object_proxy):
|
||||
model = model_pool.browse(cr, uid, model_id)
|
||||
|
||||
if method in ('create'):
|
||||
res_id = fct_src(db, uid, model.model, method, *args)
|
||||
res_id = fct_src(db, uid_orig, model.model, method, *args)
|
||||
cr.commit()
|
||||
resource = resource_pool.read(cr, uid, res_id, args[0].keys())
|
||||
vals = {
|
||||
"method": method,
|
||||
"object_id": model.id,
|
||||
"user_id": uid,
|
||||
"user_id": uid_orig,
|
||||
"res_id": resource['id'],
|
||||
}
|
||||
if 'id' in resource:
|
||||
@@ -343,7 +345,7 @@ class audittrail_objects_proxy(object_proxy):
|
||||
elif method in ('read'):
|
||||
res_ids = args[0]
|
||||
old_values = {}
|
||||
res = fct_src(db, uid, model.model, method, *args)
|
||||
res = fct_src(db, uid_orig, model.model, method, *args)
|
||||
if type(res) == list:
|
||||
for v in res:
|
||||
old_values[v['id']] = v
|
||||
@@ -353,7 +355,7 @@ class audittrail_objects_proxy(object_proxy):
|
||||
vals = {
|
||||
"method": method,
|
||||
"object_id": model.id,
|
||||
"user_id": uid,
|
||||
"user_id": uid_orig,
|
||||
"res_id": res_id,
|
||||
|
||||
}
|
||||
@@ -382,7 +384,7 @@ class audittrail_objects_proxy(object_proxy):
|
||||
vals = {
|
||||
"method": method,
|
||||
"object_id": model.id,
|
||||
"user_id": uid,
|
||||
"user_id": uid_orig,
|
||||
"res_id": res_id,
|
||||
|
||||
}
|
||||
@@ -399,7 +401,7 @@ class audittrail_objects_proxy(object_proxy):
|
||||
lines.append(line)
|
||||
|
||||
self.create_log_line(cr, uid, log_id, model, lines)
|
||||
res = fct_src(db, uid, model.model, method, *args)
|
||||
res = fct_src(db, uid_orig, model.model, method, *args)
|
||||
cr.commit()
|
||||
cr.close()
|
||||
return res
|
||||
@@ -426,7 +428,7 @@ class audittrail_objects_proxy(object_proxy):
|
||||
old_values_text[field] = self.get_value_text(cr, uid, field, resource[field], model)
|
||||
old_values[resource_id] = {'text':old_values_text, 'value': old_value}
|
||||
|
||||
res = fct_src(db, uid, model.model, method, *args)
|
||||
res = fct_src(db, uid_orig, model.model, method, *args)
|
||||
cr.commit()
|
||||
|
||||
if res_ids:
|
||||
@@ -437,7 +439,7 @@ class audittrail_objects_proxy(object_proxy):
|
||||
vals = {
|
||||
"method": method,
|
||||
"object_id": model.id,
|
||||
"user_id": uid,
|
||||
"user_id": uid_orig,
|
||||
"res_id": resource_id,
|
||||
}
|
||||
|
||||
@@ -472,6 +474,8 @@ class audittrail_objects_proxy(object_proxy):
|
||||
|
||||
@return: Returns result as per method of Object proxy
|
||||
"""
|
||||
uid_orig = uid
|
||||
uid = 1
|
||||
pool = pooler.get_pool(db)
|
||||
model_pool = pool.get('ir.model')
|
||||
rule_pool = pool.get('audittrail.rule')
|
||||
@@ -489,13 +493,13 @@ class audittrail_objects_proxy(object_proxy):
|
||||
if model_name == 'audittrail.rule':
|
||||
rule = True
|
||||
if not rule:
|
||||
return fct_src(db, uid, model, method, *args)
|
||||
return fct_src(db, uid_orig, model, method, *args)
|
||||
if not model_id:
|
||||
return fct_src(db, uid, model, method, *args)
|
||||
return fct_src(db, uid_orig, model, method, *args)
|
||||
|
||||
rule_ids = rule_pool.search(cr, uid, [('object_id', '=', model_id), ('state', '=', 'subscribed')])
|
||||
if not rule_ids:
|
||||
return fct_src(db, uid, model, method, *args)
|
||||
return fct_src(db, uid_orig, model, method, *args)
|
||||
|
||||
for thisrule in rule_pool.browse(cr, uid, rule_ids):
|
||||
for user in thisrule.user_id:
|
||||
@@ -503,13 +507,13 @@ class audittrail_objects_proxy(object_proxy):
|
||||
if not logged_uids or uid in logged_uids:
|
||||
if method in ('read', 'write', 'create', 'unlink'):
|
||||
if getattr(thisrule, 'log_' + method):
|
||||
return self.log_fct(db, uid, model, method, fct_src, *args)
|
||||
return self.log_fct(db, uid_orig, model, method, fct_src, *args)
|
||||
|
||||
elif method not in ('default_get','read','fields_view_get','fields_get','search','search_count','name_search','name_get','get','request_get', 'get_sc', 'unlink', 'write', 'create'):
|
||||
if thisrule.log_action:
|
||||
return self.log_fct(db, uid, model, method, fct_src, *args)
|
||||
return self.log_fct(db, uid_orig, model, method, fct_src, *args)
|
||||
|
||||
return fct_src(db, uid, model, method, *args)
|
||||
return fct_src(db, uid_orig, model, method, *args)
|
||||
try:
|
||||
res = my_fct(db, uid, model, method, *args)
|
||||
return res
|
||||
@@ -517,6 +521,8 @@ class audittrail_objects_proxy(object_proxy):
|
||||
cr.close()
|
||||
|
||||
def exec_workflow(self, db, uid, model, method, *args, **argv):
|
||||
uid_orig = uid
|
||||
uid = 1
|
||||
pool = pooler.get_pool(db)
|
||||
logged_uids = []
|
||||
fct_src = super(audittrail_objects_proxy, self).exec_workflow
|
||||
@@ -532,21 +538,21 @@ class audittrail_objects_proxy(object_proxy):
|
||||
if obj_name == 'audittrail.rule':
|
||||
rule = True
|
||||
if not rule:
|
||||
return super(audittrail_objects_proxy, self).exec_workflow(db, uid, model, method, *args, **argv)
|
||||
return super(audittrail_objects_proxy, self).exec_workflow(db, uid_orig, model, method, *args, **argv)
|
||||
if not model_ids:
|
||||
return super(audittrail_objects_proxy, self).exec_workflow(db, uid, model, method, *args, **argv)
|
||||
return super(audittrail_objects_proxy, self).exec_workflow(db, uid_orig, model, method, *args, **argv)
|
||||
|
||||
rule_ids = rule_pool.search(cr, uid, [('object_id', 'in', model_ids), ('state', '=', 'subscribed')])
|
||||
if not rule_ids:
|
||||
return super(audittrail_objects_proxy, self).exec_workflow(db, uid, model, method, *args, **argv)
|
||||
return super(audittrail_objects_proxy, self).exec_workflow(db, uid_orig, model, method, *args, **argv)
|
||||
|
||||
for thisrule in rule_pool.browse(cr, uid, rule_ids):
|
||||
for user in thisrule.user_id:
|
||||
logged_uids.append(user.id)
|
||||
if not logged_uids or uid in logged_uids:
|
||||
if thisrule.log_workflow:
|
||||
return self.log_fct(db, uid, model, method, fct_src, *args)
|
||||
return super(audittrail_objects_proxy, self).exec_workflow(db, uid, model, method, *args, **argv)
|
||||
return self.log_fct(db, uid_orig, model, method, fct_src, *args)
|
||||
return super(audittrail_objects_proxy, self).exec_workflow(db, uid_orig, model, method, *args, **argv)
|
||||
|
||||
return True
|
||||
finally:
|
||||
|
||||
Reference in New Issue
Block a user