[ADD]: audittrail:[task-771] store log details for workflow

bzr revid: ksa@tinyerp.co.in-20100520070718-wwv21ttafwb0su1m
This commit is contained in:
ksa (Open ERP)
2010-05-20 12:37:18 +05:30
parent af43c90794
commit 5fd7901bf3
+28 -2
View File
@@ -231,7 +231,6 @@ class audittrail_objects_proxy(osv_pool):
@param object: Object who's values are being changed
@param lines: List of values for line is to be created
"""
pool = pooler.get_pool(cr.dbname)
obj = pool.get(object.model)
#start Loop
@@ -282,6 +281,7 @@ class audittrail_objects_proxy(osv_pool):
@return: Returns result as per method of Object proxy
"""
logged_uids = []
res2 = args
pool = pooler.get_pool(db)
cr = pooler.get_db(db).cursor()
obj_ids = pool.get('ir.model').search(cr, uid, [('model', '=', object)])
@@ -448,7 +448,7 @@ class audittrail_objects_proxy(osv_pool):
return res
def workflow_log(self, db, uid, object, method, *args, **argv):
def workflow_log(self, db, uid, object, method,*args, **argv):
"""
Logging function: This function is performs logging oprations according to method
@param db: the current database
@@ -464,14 +464,40 @@ class audittrail_objects_proxy(osv_pool):
cr = pooler.get_db(db).cursor()
obj_ids = pool.get('ir.model').search(cr, uid, [('model', '=', object)])
model_object = pool.get('ir.model').browse(cr, uid, obj_ids)[0]
workflow_obj = pool.get('workflow')
wkf_ids = workflow_obj.search(cr, uid, [('osv', '=', object)])
wkf_name= workflow_obj.browse(cr, uid, wkf_ids)[0].name
res_id = args[0]
old_values_text = {}
old_values = pool.get(model_object.model).read(cr, uid, res_id)
for field in old_values.keys():
old_values_text[field] = self.get_value_text(cr, uid, field, old_values[field], model_object)
res = super(audittrail_objects_proxy, self).exec_workflow(db, uid, object, method, *args, **argv)
cr.commit()
new_values = pool.get(model_object.model).read(cr, uid, res_id)
resource_name = pool.get(model_object.model).name_get(cr, uid, [args[0]])
resource_name = resource_name and resource_name[0][1] or ''
l_id = pool.get('audittrail.log').create(cr, uid, {"method": 'workflow', "object_id": model_object.id, "user_id": uid, "res_id": args[0], "name": resource_name +"/"+ wkf_name })
lines = []
diff = {}
log_line_pool = pool.get('audittrail.log.line')
for field in old_values.keys():
if old_values[field] == new_values[field]:
continue
else:
diff.update({field: (old_values[field], new_values[field])})
f_id = pool.get('ir.model.fields').search(cr, uid, [('name', '=', field), ('model_id', '=', model_object.id)])
log_line_pool.create(cr, uid, {'field_id': f_id[0], 'log_id': l_id, \
'old_value': str(old_values[field]),\
'new_value': str(new_values[field]),\
'old_value_text':str(old_values_text[field]),
'new_value_text':self.get_value_text(cr, uid, field, new_values[field], model_object),
})
cr.commit()
cr.close()
return res