diff --git a/addons/audittrail/audittrail.py b/addons/audittrail/audittrail.py
index 22ddcafd7f9..726937e62a3 100644
--- a/addons/audittrail/audittrail.py
+++ b/addons/audittrail/audittrail.py
@@ -19,7 +19,6 @@
#
##############################################################################
-
from osv import fields, osv
from osv.osv import osv_pool
from tools.translate import _
@@ -30,16 +29,23 @@ import string
import time, copy
class audittrail_rule(osv.osv):
+ """
+ For Auddittrail RUle
+ """
_name = 'audittrail.rule'
+ _description = "Audittrail Rule"
_columns = {
"name": fields.char("Rule Name", size=32, required=True),
"object_id": fields.many2one('ir.model', 'Object', required=True),
- "user_id": fields.many2many('res.users', 'audittail_rules_users', 'user_id', 'rule_id', 'Users'),
+ "user_id": fields.many2many('res.users', 'audittail_rules_users',
+ 'user_id', 'rule_id', 'Users'),
"log_read": fields.boolean("Log reads"),
"log_write": fields.boolean("Log writes"),
"log_unlink": fields.boolean("Log deletes"),
"log_create": fields.boolean("Log creates"),
- "state": fields.selection((("draft", "Draft"), ("subscribed", "Subscribed")), "State", required=True),
+ "state": fields.selection((("draft", "Draft"),
+ ("subscribed", "Subscribed")),
+ "State", required=True),
"action_id":fields.many2one('ir.actions.act_window', "Action ID"),
}
@@ -56,6 +62,9 @@ class audittrail_rule(osv.osv):
__functions = {}
def subscribe(self, cr, uid, ids, *args):
+ obj_action = self.pool.get('ir.actions.act_window')
+ obj_model = self.pool.get('ir.model.data')
+ #start Loop
for thisrule in self.browse(cr, uid, ids):
obj = self.pool.get(thisrule.object_id.model)
if not obj:
@@ -63,48 +72,59 @@ class audittrail_rule(osv.osv):
_('WARNING:audittrail is not part of the pool'),
_('Change audittrail depends -- Setting rule as DRAFT'))
self.write(cr, uid, [thisrule.id], {"state": "draft"})
- val={
- "name":'View Log',
- "res_model":'audittrail.log',
- "src_model":thisrule.object_id.model,
- "domain":"[('object_id','=',"+str(thisrule.object_id.id)+"),('res_id', '=', active_id)]"
+ val = {
+ "name":'View Log',
+ "res_model":'audittrail.log',
+ "src_model": thisrule.object_id.model,
+ "domain":"[('object_id','=',"+str(thisrule.object_id.id)+"), ('res_id', '=', active_id)]"
}
- id=self.pool.get('ir.actions.act_window').create(cr, uid, val)
+ id = obj_action.create(cr, uid, val)
self.write(cr, uid, [thisrule.id], {"state": "subscribed", "action_id":id})
keyword = 'client_action_relate'
value = 'ir.actions.act_window,'+str(id)
- res=self.pool.get('ir.model.data').ir_set(cr, uid, 'action', keyword, 'View_log_'+thisrule.object_id.model, [thisrule.object_id.model], value, replace=True, isobject=True, xml_id=False)
+ res = obj_model.ir_set(cr, uid, 'action', keyword, 'View_log_'+thisrule.object_id.model, [thisrule.object_id.model], value, replace=True, isobject=True, xml_id=False)
+ #End Loop
return True
-
-
def unsubscribe(self, cr, uid, ids, *args):
+
+ obj_action = self.pool.get('ir.actions.act_window')
+ obj_model = self.pool.get('ir.model.data')
+ val_obj = self.pool.get('ir.values')
+ #start Loop
for thisrule in self.browse(cr, uid, ids):
if thisrule.id in self.__functions :
for function in self.__functions[thisrule.id]:
setattr(function[0], function[1], function[2])
- w_id=self.pool.get('ir.actions.act_window').search(cr, uid, [('name', '=', 'View Log'), ('res_model', '=', 'audittrail.log'), ('src_model', '=', thisrule.object_id.model)])
- self.pool.get('ir.actions.act_window').unlink(cr, uid, w_id)
- val_obj=self.pool.get('ir.values')
- value="ir.actions.act_window"+','+str(w_id[0])
- val_id=val_obj.search(cr, uid, [('model', '=', thisrule.object_id.model), ('value', '=', value)])
+ w_id = obj_action.search(cr, uid, [('name', '=', 'View Log'), ('res_model', '=', 'audittrail.log'), ('src_model', '=', thisrule.object_id.model)])
+ obj_action.unlink(cr, uid, w_id)
+ value = "ir.actions.act_window"+','+str(w_id[0])
+ val_id = val_obj.search(cr, uid, [('model', '=', thisrule.object_id.model), ('value', '=', value)])
if val_id:
res = ir.ir_del(cr, uid, val_id[0])
self.write(cr, uid, [thisrule.id], {"state": "draft"})
+ #End Loop
return True
audittrail_rule()
class audittrail_log(osv.osv):
+ """
+ For Audittrail Log
+ """
+
_name = 'audittrail.log'
-
+ _description = "Audittrail Log"
_columns = {
"name": fields.char("Name", size=32),
"object_id": fields.many2one('ir.model', 'Object'),
"user_id": fields.many2one('res.users', 'User'),
- "method": fields.selection((('read', 'Read'), ('write', 'Write'), ('unlink', 'Delete'), ('create', 'Create')), "Method"),
+ "method": fields.selection((('read', 'Read'),
+ ('write', 'Write'),
+ ('unlink', 'Delete'),
+ ('create', 'Create')), "Method"),
"timestamp": fields.datetime("Date"),
"res_id":fields.integer('Resource Id'),
"line_ids":fields.one2many('audittrail.log.line', 'log_id', 'Log lines'),
@@ -116,205 +136,217 @@ class audittrail_log(osv.osv):
audittrail_log()
+
class audittrail_log_line(osv.osv):
- _name='audittrail.log.line'
- _columns={
- 'field_id': fields.many2one('ir.model.fields', 'Fields', required=True),
- 'log_id':fields.many2one('audittrail.log', 'Log'),
- 'log':fields.integer("Log ID"),
- 'old_value':fields.text("Old Value"),
- 'new_value':fields.text("New Value"),
- 'old_value_text':fields.text('Old value Text'),
- 'new_value_text':fields.text('New value Text'),
- 'field_description':fields.char('Field Description' , size=64),
- }
+ """
+ Audittrail Log Line.
+ """
+ _name = 'audittrail.log.line'
+ _description = "Log Line"
+ _columns = {
+ 'field_id': fields.many2one('ir.model.fields', 'Fields', required=True),
+ 'log_id':fields.many2one('audittrail.log', 'Log'),
+ 'log':fields.integer("Log ID"),
+ 'old_value':fields.text("Old Value"),
+ 'new_value':fields.text("New Value"),
+ 'old_value_text':fields.text('Old value Text'),
+ 'new_value_text':fields.text('New value Text'),
+ 'field_description':fields.char('Field Description' , size=64),
+ }
audittrail_log_line()
+
+
class audittrail_objects_proxy(osv_pool):
- def get_value_text(self, cr, uid, field_name, values, object, context={}):
- pool = pooler.get_pool(cr.dbname)
- obj=pool.get(object.model)
- obj_ids= pool.get('ir.model').search(cr, uid, [('model', '=', object.model)])
- model_object=pool.get('ir.model').browse(cr, uid, obj_ids)[0]
- f_id= pool.get('ir.model.fields').search(cr, uid, [('name', '=', field_name), ('model_id', '=', object.id)])
- if f_id:
- field=pool.get('ir.model.fields').read(cr, uid, f_id)[0]
- model=field['relation']
+
+ def get_value_text(self, cr, uid, field_name, values, object, context=None):
+ if not context:
+ context = {}
+ pool = pooler.get_pool(cr.dbname)
+ obj = pool.get(object.model)
+ obj_ids = pool.get('ir.model').search(cr, uid, [('model', '=', object.model)])
+ model_object = pool.get('ir.model').browse(cr, uid, obj_ids)[0]
+ f_id= pool.get('ir.model.fields').search(cr, uid, [('name', '=', field_name), ('model_id', '=', object.id)])
+ if f_id:
+ field = pool.get('ir.model.fields').read(cr, uid, f_id)[0]
+ model = field['relation']
- if field['ttype']=='many2one':
- if values:
- if type(values)==tuple:
- values=values[0]
- val=pool.get(model).read(cr, uid, [values], [pool.get(model)._rec_name])
+ if field['ttype'] == 'many2one':
+ if values:
+ if type(values) == tuple:
+ values = values[0]
+ val = pool.get(model).read(cr, uid, [values], [pool.get(model)._rec_name])
+ if len(val):
+ return val[0][pool.get(model)._rec_name]
+ elif field['ttype'] == 'many2many':
+ value = []
+ if values:
+ for id in values:
+ val = pool.get(model).read(cr, uid, [id], [pool.get(model)._rec_name])
if len(val):
- return val[0][pool.get(model)._rec_name]
- elif field['ttype'] == 'many2many':
- value=[]
- if values:
- for id in values:
- val=pool.get(model).read(cr, uid, [id], [pool.get(model)._rec_name])
- if len(val):
- value.append(val[0][pool.get(model)._rec_name])
+ value.append(val[0][pool.get(model)._rec_name])
+ return value
+
+ elif field['ttype'] == 'one2many':
+ if values:
+ value = []
+ for id in values:
+ val = pool.get(model).read(cr, uid, [id], [pool.get(model)._rec_name])
+
+ if len(val):
+ value.append(val[0][pool.get(model)._rec_name])
return value
-
- elif field['ttype'] == 'one2many':
- if values:
- value=[]
- for id in values:
- val=pool.get(model).read(cr, uid, [id], [pool.get(model)._rec_name])
-
- if len(val):
- value.append(val[0][pool.get(model)._rec_name])
- return value
return values
def create_log_line(self, cr, uid, id, object, lines=[]):
pool = pooler.get_pool(cr.dbname)
- obj=pool.get(object.model)
- obj_ids= pool.get('ir.model').search(cr, uid, [('model', '=', object.model)])
- model_object=pool.get('ir.model').browse(cr, uid, obj_ids)[0]
+ obj = pool.get(object.model)
+ obj_ids = pool.get('ir.model').search(cr, uid, [('model', '=', object.model)])
+ model_object = pool.get('ir.model').browse(cr, uid, obj_ids)[0]
+ #start Loop
for line in lines:
if obj._inherits:
- inherits_ids= pool.get('ir.model').search(cr, uid, [('model', '=', obj._inherits.keys()[0])])
- f_id= pool.get('ir.model.fields').search(cr, uid, [('name', '=', line['name']), ('model_id', 'in', (object.id, inherits_ids[0]))])
+ inherits_ids = pool.get('ir.model').search(cr, uid, [('model', '=', obj._inherits.keys()[0])])
+ f_id = pool.get('ir.model.fields').search(cr, uid, [('name', '=', line['name']), ('model_id', 'in', (object.id, inherits_ids[0]))])
else:
- f_id= pool.get('ir.model.fields').search(cr, uid, [('name', '=', line['name']), ('model_id', '=', object.id)])
+ f_id = pool.get('ir.model.fields').search(cr, uid, [('name', '=', line['name']), ('model_id', '=', object.id)])
if len(f_id):
- fields=pool.get('ir.model.fields').read(cr, uid, f_id)
- old_value='old_value' in line and line['old_value'] or ''
- new_value='new_value' in line and line['new_value'] or ''
- old_value_text='old_value_text' in line and line['old_value_text'] or ''
- new_value_text='new_value_text' in line and line['new_value_text'] or ''
+ fields = pool.get('ir.model.fields').read(cr, uid, f_id)
+ old_value = 'old_value' in line and line['old_value'] or ''
+ new_value = 'new_value' in line and line['new_value'] or ''
+ old_value_text = 'old_value_text' in line and line['old_value_text'] or ''
+ new_value_text = 'new_value_text' in line and line['new_value_text'] or ''
if old_value_text == new_value_text:
continue
- if fields[0]['ttype']== 'many2one':
- if type(old_value)==tuple:
- old_value=old_value[0]
- if type(new_value)==tuple:
- new_value=new_value[0]
+ if fields[0]['ttype'] == 'many2one':
+ if type(old_value) == tuple:
+ old_value = old_value[0]
+ if type(new_value) == tuple:
+ new_value = new_value[0]
log_line_id = pool.get('audittrail.log.line').create(cr, uid, {"log_id": id, "field_id": f_id[0] , "old_value":old_value , "new_value":new_value, "old_value_text":old_value_text , "new_value_text":new_value_text, "field_description":fields[0]['field_description']})
cr.commit()
+ #End Loop
return True
def log_fct(self, db, uid, object, method, fct_src, *args):
- logged_uids = []
- pool = pooler.get_pool(db)
- cr = pooler.get_db(db).cursor()
- obj=pool.get(object)
- obj_ids= pool.get('ir.model').search(cr, uid, [('model', '=', object)])
- model_object=pool.get('ir.model').browse(cr, uid, obj_ids)[0]
- if method in ('create'):
- res_id = fct_src(db, uid, object, method, *args)
+ logged_uids = []
+ pool = pooler.get_pool(db)
+ cr = pooler.get_db(db).cursor()
+ obj = pool.get(object)
+ obj_ids = pool.get('ir.model').search(cr, uid, [('model', '=', object)])
+ model_object = pool.get('ir.model').browse(cr, uid, obj_ids)[0]
+ if method in ('create'):
+ res_id = fct_src(db, uid, object, method, *args)
+ cr.commit()
+ new_value = pool.get(model_object.model).read(cr, uid, [res_id], args[0].keys())[0]
+ if 'id' in new_value:
+ del new_value['id']
+ if not len(logged_uids) or uid in logged_uids:
+ resource_name = pool.get(model_object.model).name_get(cr, uid, [res_id])
+ resource_name = resource_name and resource_name[0][1] or ''
+ id = pool.get('audittrail.log').create(cr, uid, {"method": method , "object_id": model_object.id, "user_id": uid, "res_id": res_id, "name": resource_name})
+ lines = []
+ for field in new_value:
+ if new_value[field]:
+ line = {
+ 'name':field,
+ 'new_value':new_value[field],
+ 'new_value_text': self.get_value_text(cr, uid, field, new_value[field], model_object)
+ }
+ lines.append(line)
+ self.create_log_line(cr, uid, id, model_object, lines)
+ cr.commit()
+ cr.close()
+ return res_id
+
+ if method in ('write'):
+ res_ids = args[0]
+ for res_id in res_ids:
+ old_values = pool.get(model_object.model).read(cr, uid, res_id, args[1].keys())
+ old_values_text = {}
+ for field in args[1].keys():
+ old_values_text[field] = self.get_value_text(cr, uid, field, old_values[field], model_object)
+ res = fct_src(db, uid, object, method, *args)
cr.commit()
- new_value=pool.get(model_object.model).read(cr, uid, [res_id], args[0].keys())[0]
- if 'id' in new_value:
- del new_value['id']
- if not len(logged_uids) or uid in logged_uids:
- resource_name = pool.get(model_object.model).name_get(cr, uid, [res_id])
- resource_name = resource_name and resource_name[0][1] or ''
- id=pool.get('audittrail.log').create(cr, uid, {"method": method , "object_id": model_object.id, "user_id": uid, "res_id": res_id, "name": resource_name})
- lines=[]
- for field in new_value:
- if new_value[field]:
- line={
- 'name':field,
- 'new_value':new_value[field],
- 'new_value_text': self.get_value_text(cr, uid, field, new_value[field], model_object)
- }
- lines.append(line)
- self.create_log_line(cr, uid, id, model_object, lines)
- cr.commit()
- cr.close()
- return res_id
-
- if method in ('write'):
- res_ids=args[0]
- for res_id in res_ids:
- old_values=pool.get(model_object.model).read(cr, uid, res_id, args[1].keys())
- old_values_text={}
- for field in args[1].keys():
- old_values_text[field] = self.get_value_text(cr, uid, field, old_values[field], model_object)
- res =fct_src(db, uid, object, method, *args)
- cr.commit()
- if res:
- new_values=pool.get(model_object.model).read(cr, uid, res_ids, args[1].keys())[0]
- if not len(logged_uids) or uid in logged_uids:
- resource_name = pool.get(model_object.model).name_get(cr, uid, [res_id])
- resource_name = resource_name and resource_name[0][1] or ''
- id=pool.get('audittrail.log').create(cr, uid, {"method": method, "object_id": model_object.id, "user_id": uid, "res_id": res_id, "name": resource_name})
- lines=[]
- for field in args[1].keys():
- if args[1].keys():
- line={
- 'name':field,
- 'new_value':field in new_values and new_values[field] or '',
- 'old_value':field in old_values and old_values[field] or '',
- 'new_value_text': self.get_value_text(cr, uid, field, new_values[field], model_object),
- 'old_value_text':old_values_text[field]
- }
- lines.append(line)
- cr.commit()
- self.create_log_line(cr, uid, id, model_object, lines)
- cr.close()
- return res
-
- if method in ('read'):
- res_ids=args[0]
- old_values={}
- res =fct_src(db, uid, object, method, *args)
- if type(res)==list:
-
- for v in res:
- old_values[v['id']]=v
- else:
- old_values[res['id']]=res
- for res_id in old_values:
+ if res:
+ new_values = pool.get(model_object.model).read(cr, uid, res_ids, args[1].keys())[0]
if not len(logged_uids) or uid in logged_uids:
resource_name = pool.get(model_object.model).name_get(cr, uid, [res_id])
resource_name = resource_name and resource_name[0][1] or ''
- id=pool.get('audittrail.log').create(cr, uid, {"method": method , "object_id": model_object.id, "user_id": uid, "res_id": res_id, "name": resource_name})
- lines=[]
- for field in old_values[res_id]:
- if old_values[res_id][field]:
- line={
- 'name':field,
- 'old_value':old_values[res_id][field],
- 'old_value_text': self.get_value_text(cr, uid, field, old_values[res_id][field], model_object)
- }
- lines.append(line)
- cr.commit()
- self.create_log_line(cr, uid, id, model_object, lines)
- cr.close()
- return res
-
- if method in ('unlink'):
- res_ids=args[0]
- old_values={}
- for res_id in res_ids:
- old_values[res_id]=pool.get(model_object.model).read(cr, uid, res_id, [])
-
- for res_id in res_ids:
- if not len(logged_uids) or uid in logged_uids:
- resource_name = pool.get(model_object.model).name_get(cr, uid, [res_id])
- resource_name = resource_name and resource_name[0][1] or ''
- id=pool.get('audittrail.log').create(cr, uid, {"method": method , "object_id": model_object.id, "user_id": uid, "res_id": res_id, "name": resource_name})
- lines=[]
- for field in old_values[res_id]:
- if old_values[res_id][field]:
- line={
+ id = pool.get('audittrail.log').create(cr, uid, {"method": method, "object_id": model_object.id, "user_id": uid, "res_id": res_id, "name": resource_name})
+ lines = []
+ for field in args[1].keys():
+ if args[1].keys():
+ line = {
'name':field,
- 'old_value':old_values[res_id][field],
- 'old_value_text': self.get_value_text(cr, uid, field, old_values[res_id][field], model_object)
+ 'new_value':field in new_values and new_values[field] or '',
+ 'old_value':field in old_values and old_values[field] or '',
+ 'new_value_text': self.get_value_text(cr, uid, field, new_values[field], model_object),
+ 'old_value_text':old_values_text[field]
}
lines.append(line)
cr.commit()
self.create_log_line(cr, uid, id, model_object, lines)
- res =fct_src(db, uid, object, method, *args)
cr.close()
return res
+
+ if method in ('read'):
+ res_ids = args[0]
+ old_values = {}
+ res = fct_src(db, uid, object, method, *args)
+ if type(res) == list:
+
+ for v in res:
+ old_values[v['id']] = v
+ else:
+ old_values[res['id']] = res
+ for res_id in old_values:
+ if not len(logged_uids) or uid in logged_uids:
+ resource_name = pool.get(model_object.model).name_get(cr, uid, [res_id])
+ resource_name = resource_name and resource_name[0][1] or ''
+ id = pool.get('audittrail.log').create(cr, uid, {"method": method , "object_id": model_object.id, "user_id": uid, "res_id": res_id, "name": resource_name})
+ lines = []
+ for field in old_values[res_id]:
+ if old_values[res_id][field]:
+ line = {
+ 'name':field,
+ 'old_value':old_values[res_id][field],
+ 'old_value_text': self.get_value_text(cr, uid, field, old_values[res_id][field], model_object)
+ }
+ lines.append(line)
+ cr.commit()
+ self.create_log_line(cr, uid, id, model_object, lines)
cr.close()
+ return res
+
+ if method in ('unlink'):
+ res_ids=args[0]
+ old_values={}
+ for res_id in res_ids:
+ old_values[res_id]=pool.get(model_object.model).read(cr, uid, res_id, [])
+
+ for res_id in res_ids:
+ if not len(logged_uids) or uid in logged_uids:
+ resource_name = pool.get(model_object.model).name_get(cr, uid, [res_id])
+ resource_name = resource_name and resource_name[0][1] or ''
+ id = pool.get('audittrail.log').create(cr, uid, {"method": method , "object_id": model_object.id, "user_id": uid, "res_id": res_id, "name": resource_name})
+ lines = []
+ for field in old_values[res_id]:
+ if old_values[res_id][field]:
+ line = {
+ 'name':field,
+ 'old_value':old_values[res_id][field],
+ 'old_value_text': self.get_value_text(cr, uid, field, old_values[res_id][field], model_object)
+ }
+ lines.append(line)
+ cr.commit()
+ self.create_log_line(cr, uid, id, model_object, lines)
+ res = fct_src(db, uid, object, method, *args)
+ cr.close()
+ return res
+ cr.close()
def execute(self, db, uid, object, method, *args, **kw):
pool = pooler.get_pool(db)
@@ -335,7 +367,7 @@ class audittrail_objects_proxy(osv_pool):
return fct_src(db, uid, object, method, *args)
if not len(obj_ids):
return fct_src(db, uid, object, method, *args)
- rule_ids=pool.get('audittrail.rule').search(cr, uid, [('object_id', '=', obj_ids[0]), ('state', '=', 'subscribed')])
+ rule_ids = pool.get('audittrail.rule').search(cr, uid, [('object_id', '=', obj_ids[0]), ('state', '=', 'subscribed')])
if not len(rule_ids):
return fct_src(db, uid, object, method, *args)
diff --git a/addons/audittrail/audittrail_view.xml b/addons/audittrail/audittrail_view.xml
index 536ca78741e..dec025b7e98 100644
--- a/addons/audittrail/audittrail_view.xml
+++ b/addons/audittrail/audittrail_view.xml
@@ -1,6 +1,9 @@
+
+
+
audittrail.rule.form
audittrail.rule
@@ -17,12 +20,15 @@
-
-
+
+
+
audittrail.rule.tree
audittrail.rule
@@ -40,6 +46,9 @@
+
+
+
Rules
audittrail.rule
@@ -48,8 +57,11 @@
tree,form
-
-
+
+
+
@@ -60,6 +72,8 @@
[('state','=','subscribed')]
+
+
audittrail.log.form
@@ -73,23 +87,34 @@
-
+
@@ -117,15 +142,19 @@
+
+
Logs
audittrail.log
form
-
+
-
+
-
+
diff --git a/addons/audittrail/wizard/audittrail_view_log.py b/addons/audittrail/wizard/audittrail_view_log.py
index 2e170f27200..67e8b3934cb 100644
--- a/addons/audittrail/wizard/audittrail_view_log.py
+++ b/addons/audittrail/wizard/audittrail_view_log.py
@@ -20,26 +20,21 @@
##############################################################################
from osv import fields, osv
-from tools.translate import _
-import netsvc
-import pooler
import time
-import tools
-import wizard
class audittrail_view_log(osv.osv_memory):
_name = "audittrail.view.log"
_description = "View Log"
- _columns ={
- 'from':fields.datetime('Log From'),
- 'to':fields.datetime('Log To', required = True)
- }
- _defaults = {
- 'to': lambda *a: time.strftime("%Y-%m-%d %H:%M:%S"),
+ _columns = {
+ 'from':fields.datetime('Log From'),
+ 'to':fields.datetime('Log To', required = True)
}
+ _defaults = {
+ 'to': lambda *a: time.strftime("%Y-%m-%d %H:%M:%S"),
+ }
- def log_open_window(self, cr, uid, ids, context):
+ def log_open_window(self, cr, uid, ids, context=None):
"""
Open Log form from given date range..
@param cr: the current row, from the database cursor,
@@ -47,26 +42,27 @@ class audittrail_view_log(osv.osv_memory):
@param ids: List of audittrail view log’s IDs.
@return: Dictionary of audittrail log form on given date range.
"""
+ if not context:
+ context = {}
+
mod_obj = self.pool.get('ir.model.data')
act_obj = self.pool.get('ir.actions.act_window')
result = mod_obj._get_id(cr, uid, 'audittrail', 'action_audittrail_log_tree')
id = mod_obj.read(cr, uid, [result], ['res_id'])[0]['res_id']
result = act_obj.read(cr, uid, [id])[0]
- log_obj= self.pool.get(result['res_model'])
- log_id = log_obj.search(cr, uid, [])
- log_model=log_obj.read(cr, uid,log_id,['object_id'])
- for datas in self.read(cr, uid, ids):
- if not datas['from']:
- if datas['to'] <> time.strftime("%Y-%m-%d %H:%M:%S"):
- result['domain'] = str([('timestamp', '<',datas['to'])])
+ log_obj = self.pool.get(result['res_model'])
+ #log_id = log_obj.search(cr, uid, [])
+ #log_model = log_obj.read(cr, uid, log_id, ['object_id'])
+ #start Loop
+ for datas in self.read(cr, uid, ids):
+ if not datas.get('from', None):
+ if datas.get('to') <> time.strftime("%Y-%m-%d %H:%M:%S"):
+ result['domain'] = str([('timestamp', '<', datas.get('to'))])
else:
- pass
+ pass
else:
- result['domain'] = str([('timestamp', '>',datas['from']),('timestamp', '<',datas['to'])])
+ result['domain'] = str([('timestamp', '>', datas.get('from', None)), ('timestamp', '<', datas.get('to'))])
+ #End Loop
return result
audittrail_view_log()
-
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-
diff --git a/addons/audittrail/wizard/audittrail_view_log_view.xml b/addons/audittrail/wizard/audittrail_view_log_view.xml
index 87648c7e136..e32bc65de40 100644
--- a/addons/audittrail/wizard/audittrail_view_log_view.xml
+++ b/addons/audittrail/wizard/audittrail_view_log_view.xml
@@ -1,6 +1,9 @@
+
+
+
audittrail.view.log.form
audittrail.view.log
@@ -14,12 +17,16 @@
-
-
-
+
+
+
+
+
View log