diff --git a/auditlog/__manifest__.py b/auditlog/__manifest__.py index d9f0d67a4..d3ebecbb8 100644 --- a/auditlog/__manifest__.py +++ b/auditlog/__manifest__.py @@ -4,7 +4,7 @@ { 'name': "Audit Log", - 'version': "9.0.1.0.0", + 'version': "10.0.1.0.0", 'author': "ABF OSIELL,Odoo Community Association (OCA)", 'license': "AGPL-3", 'website': "http://www.osiell.com", @@ -19,7 +19,6 @@ 'views/http_session_view.xml', 'views/http_request_view.xml', ], - 'images': [], 'application': True, 'installable': True, } diff --git a/auditlog/data/ir_cron.xml b/auditlog/data/ir_cron.xml index d0f77a082..728b2354b 100644 --- a/auditlog/data/ir_cron.xml +++ b/auditlog/data/ir_cron.xml @@ -1,6 +1,5 @@ - - + Auto-vacuum audit logs @@ -14,5 +13,4 @@ (180,) - - + diff --git a/auditlog/models/autovacuum.py b/auditlog/models/autovacuum.py index 8c9d8b334..216c56ab6 100644 --- a/auditlog/models/autovacuum.py +++ b/auditlog/models/autovacuum.py @@ -4,7 +4,7 @@ import logging from datetime import datetime, timedelta -from openerp import models, fields, api +from odoo import models, fields, api _logger = logging.getLogger(__name__) diff --git a/auditlog/models/http_request.py b/auditlog/models/http_request.py index dd3ca30ba..f2a5f9946 100644 --- a/auditlog/models/http_request.py +++ b/auditlog/models/http_request.py @@ -2,17 +2,17 @@ # © 2015 ABF OSIELL # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from openerp import models, fields, api -from openerp.http import request +from odoo import models, fields, api +from odoo.http import request class AuditlogHTTPRequest(models.Model): _name = 'auditlog.http.request' _description = u"Auditlog - HTTP request log" _order = "create_date DESC" - _rec_name = 'display_name' - display_name = fields.Char(u"Name", compute="_compute_display_name") + display_name = fields.Char( + u"Name", compute="_compute_display_name", store=True) name = fields.Char(u"Path") root_url = fields.Char(u"Root URL") user_id = fields.Many2one( @@ -23,7 +23,7 @@ class AuditlogHTTPRequest(models.Model): log_ids = fields.One2many( 'auditlog.log', 'http_request_id', string=u"Logs") - @api.multi + @api.depends('create_date', 'name') def _compute_display_name(self): for httprequest in self: create_date = fields.Datetime.from_string(httprequest.create_date) @@ -33,6 +33,10 @@ class AuditlogHTTPRequest(models.Model): httprequest.name or '?', fields.Datetime.to_string(tz_create_date)) + @api.multi + def name_get(self): + return [(request.id, request.display_name) for request in self] + @api.model def current_http_request(self): """Create a log corresponding to the current HTTP request, and returns diff --git a/auditlog/models/http_session.py b/auditlog/models/http_session.py index e89043bd2..4a73782eb 100644 --- a/auditlog/models/http_session.py +++ b/auditlog/models/http_session.py @@ -2,24 +2,24 @@ # © 2015 ABF OSIELL # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from openerp import models, fields, api -from openerp.http import request +from odoo import models, fields, api +from odoo.http import request class AuditlogtHTTPSession(models.Model): _name = 'auditlog.http.session' _description = u"Auditlog - HTTP User session log" _order = "create_date DESC" - _rec_name = 'display_name' - display_name = fields.Char(u"Name", compute="_compute_display_name") + display_name = fields.Char( + u"Name", compute="_compute_display_name", store=True) name = fields.Char(u"Session ID", index=True) user_id = fields.Many2one( 'res.users', string=u"User", index=True) http_request_ids = fields.One2many( 'auditlog.http.request', 'http_session_id', string=u"HTTP Requests") - @api.multi + @api.depends('create_date', 'user_id') def _compute_display_name(self): for httpsession in self: create_date = fields.Datetime.from_string(httpsession.create_date) @@ -29,6 +29,10 @@ class AuditlogtHTTPSession(models.Model): httpsession.user_id and httpsession.user_id.name or '?', fields.Datetime.to_string(tz_create_date)) + @api.multi + def name_get(self): + return [(session.id, session.display_name) for session in self] + @api.model def current_http_session(self): """Create a log corresponding to the current HTTP user session, and @@ -39,7 +43,7 @@ class AuditlogtHTTPSession(models.Model): """ if not request: return False - httpsession = request.httpsession + httpsession = request.session if httpsession: existing_session = self.search( [('name', '=', httpsession.sid), diff --git a/auditlog/models/log.py b/auditlog/models/log.py index 66c6a5554..890467a18 100644 --- a/auditlog/models/log.py +++ b/auditlog/models/log.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # © 2015 ABF OSIELL # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from openerp import models, fields +from odoo import models, fields class AuditlogLog(models.Model): diff --git a/auditlog/models/rule.py b/auditlog/models/rule.py index 482358edb..fe31a4aaa 100644 --- a/auditlog/models/rule.py +++ b/auditlog/models/rule.py @@ -2,7 +2,7 @@ # © 2015 ABF OSIELL # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from openerp import models, fields, api, modules, _, SUPERUSER_ID, sql_db +from odoo import models, fields, api, modules, _, sql_db FIELDS_BLACKLIST = [ 'id', 'create_uid', 'create_date', 'write_uid', 'write_date', @@ -101,16 +101,16 @@ class AuditlogRule(models.Model): "You cannot define another: please edit the existing one.")) ] - def _register_hook(self, cr, ids=None): + def _register_hook(self): """Get all rules and apply them to log method calls.""" - super(AuditlogRule, self)._register_hook(cr) + super(AuditlogRule, self)._register_hook() if not hasattr(self.pool, '_auditlog_field_cache'): self.pool._auditlog_field_cache = {} if not hasattr(self.pool, '_auditlog_model_cache'): self.pool._auditlog_model_cache = {} - if ids is None: - ids = self.search(cr, SUPERUSER_ID, [('state', '=', 'subscribed')]) - return self._patch_methods(cr, SUPERUSER_ID, ids) + if not self: + self = self.search([('state', '=', 'subscribed')]) + return self._patch_methods() @api.multi def _patch_methods(self): @@ -175,7 +175,7 @@ class AuditlogRule(models.Model): def create(self, vals): """Update the registry when a new rule is created.""" new_record = super(AuditlogRule, self).create(vals) - if self._model._register_hook(self.env.cr, new_record.ids): + if new_record._register_hook(): modules.registry.RegistryManager.signal_registry_change( self.env.cr.dbname) return new_record @@ -184,7 +184,7 @@ class AuditlogRule(models.Model): def write(self, vals): """Update the registry when existing rules are updated.""" super(AuditlogRule, self).write(vals) - if self._model._register_hook(self.env.cr, self.ids): + if self._register_hook(): modules.registry.RegistryManager.signal_registry_change( self.env.cr.dbname) return True @@ -526,7 +526,7 @@ class AuditlogRule(models.Model): to view logs on that model. """ act_window_model = self.env['ir.actions.act_window'] - model_data_model = self.env['ir.model.data'] + model_ir_values = self.env['ir.values'] for rule in self: # Create a shortcut to view logs domain = "[('model_id', '=', %s), ('res_id', '=', active_id)]" % ( @@ -541,10 +541,12 @@ class AuditlogRule(models.Model): rule.write({'state': 'subscribed', 'action_id': act_window.id}) keyword = 'client_action_relate' value = 'ir.actions.act_window,%s' % act_window.id - model_data_model.sudo().ir_set( - 'action', keyword, 'View_log_' + rule.model_id.model, - [rule.model_id.model], value, replace=True, - isobject=True, xml_id=False) + model_ir_values.sudo().set_action( + 'View_log_' + rule.model_id.model, + action_slot=keyword, + model=rule.model_id.model, + action=value) + return True @api.multi diff --git a/auditlog/static/description/autovacuum.png b/auditlog/static/description/autovacuum.png index 67b47c4b7..2e5540ae5 100644 Binary files a/auditlog/static/description/autovacuum.png and b/auditlog/static/description/autovacuum.png differ diff --git a/auditlog/static/description/log.png b/auditlog/static/description/log.png index a1534eb09..05963994b 100644 Binary files a/auditlog/static/description/log.png and b/auditlog/static/description/log.png differ diff --git a/auditlog/static/description/logs.png b/auditlog/static/description/logs.png index 6969488fb..500508ca2 100644 Binary files a/auditlog/static/description/logs.png and b/auditlog/static/description/logs.png differ diff --git a/auditlog/static/description/rule.png b/auditlog/static/description/rule.png index 364e6252b..7693e4cf7 100644 Binary files a/auditlog/static/description/rule.png and b/auditlog/static/description/rule.png differ diff --git a/auditlog/tests/test_auditlog.py b/auditlog/tests/test_auditlog.py index 556af97c9..f4c66dd38 100644 --- a/auditlog/tests/test_auditlog.py +++ b/auditlog/tests/test_auditlog.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # © 2015 Therp BV # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from openerp.tests.common import TransactionCase +from odoo.tests.common import TransactionCase class TestAuditlog(object): diff --git a/auditlog/tests/test_autovacuum.py b/auditlog/tests/test_autovacuum.py index 720e93e45..707cfa80c 100644 --- a/auditlog/tests/test_autovacuum.py +++ b/auditlog/tests/test_autovacuum.py @@ -3,7 +3,7 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). import time -from openerp.tests.common import TransactionCase +from odoo.tests.common import TransactionCase class TestAuditlogAutovacuum(TransactionCase): diff --git a/auditlog/views/auditlog_view.xml b/auditlog/views/auditlog_view.xml index aa7bf354b..2ec7b4808 100644 --- a/auditlog/views/auditlog_view.xml +++ b/auditlog/views/auditlog_view.xml @@ -1,205 +1,201 @@ - - - - - - - - - - auditlog.rule.form - auditlog.rule - -
-
-
- - - - - - - - - - - - - - + + + + + + + + auditlog.rule.form + auditlog.rule + + +
+
+ + + + + + + - - -
-
- - - auditlog.rule.tree - auditlog.rule - - - - - - - - - - - - - - - - auditlog.rule.search - auditlog.rule - - - - - - - - - - - - - - - Rules - auditlog.rule - ir.actions.act_window - form - tree,form - {} - - - - - - - - - - auditlog.log.form - auditlog.log - -
- - - - - - - - - - - - - + + + + + - - - + + +
+
+
+ + + auditlog.rule.tree + auditlog.rule + + + + + + + + + + + + + + + + auditlog.rule.search + auditlog.rule + + + + + + + + + + + + + + + Rules + auditlog.rule + ir.actions.act_window + form + tree,form + {} + + + + + + + + + + auditlog.log.form + auditlog.log + +
+ + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + -
- -
-
- - - auditlog.log.tree - auditlog.log - - - - - - - - - - - - - - auditlog.log.search - auditlog.log - - - - - - - - - - - - - - - - - - - Logs - auditlog.log - form - - - - - -
-
+ + + + + + +
+ + + + + + + + + +
+ + + + + + + + +
+
+ + + + + + + auditlog.log.tree + auditlog.log + + + + + + + + + + + + + + auditlog.log.search + auditlog.log + + + + + + + + + + + + + + + + + + + + Logs + auditlog.log + form + + + + + diff --git a/auditlog/views/http_request_view.xml b/auditlog/views/http_request_view.xml index 2169ed0f9..d4ba2f248 100644 --- a/auditlog/views/http_request_view.xml +++ b/auditlog/views/http_request_view.xml @@ -1,82 +1,78 @@ - - - - - auditlog.http.request.form - auditlog.http.request - -
- - - - - - - - - - - - -
-
-
- - - auditlog.http.request.tree - auditlog.http.request - - - - - - - - - - - auditlog.http.request.search - auditlog.http.request - - - - - - - - - - - - - + + + auditlog.http.request.form + auditlog.http.request + +
+ + + + + + + - - - + + + + +
+
+
+ + + auditlog.http.request.tree + auditlog.http.request + + + + + + + + - - HTTP Requests - ir.actions.act_window - auditlog.http.request - form - - + + auditlog.http.request.search + auditlog.http.request + + + + + + + + + + + + + + + + + - + + HTTP Requests + ir.actions.act_window + auditlog.http.request + form + + -
-
+ + diff --git a/auditlog/views/http_session_view.xml b/auditlog/views/http_session_view.xml index 942da68af..ae6f71fe4 100644 --- a/auditlog/views/http_session_view.xml +++ b/auditlog/views/http_session_view.xml @@ -1,69 +1,65 @@ - - - - - auditlog.http.session.form - auditlog.http.session - -
- - - - - - - - - - -
-
-
- - - auditlog.http.session.tree - auditlog.http.session - - - - - - - - - - - auditlog.http.session.search - auditlog.http.session - - - - - - - - + + + auditlog.http.session.form + auditlog.http.session + +
+ + + + + - - - + + + + +
+
+
+ + + auditlog.http.session.tree + auditlog.http.session + + + + + + + + - - User sessions - ir.actions.act_window - auditlog.http.session - form - - + + auditlog.http.session.search + auditlog.http.session + + + + + + + + + + + + - + + User sessions + ir.actions.act_window + auditlog.http.session + form + + -
-
+ +