[MIG] auditlog: Migrated to 10.0

pull/2466/head
Frédéric Garbely 2017-01-20 09:04:39 +01:00 committed by Stefan Rijnhart
parent f84fe98c15
commit 4e1e1eacff
16 changed files with 358 additions and 363 deletions

View File

@ -4,7 +4,7 @@
{ {
'name': "Audit Log", 'name': "Audit Log",
'version': "9.0.1.0.0", 'version': "10.0.1.0.0",
'author': "ABF OSIELL,Odoo Community Association (OCA)", 'author': "ABF OSIELL,Odoo Community Association (OCA)",
'license': "AGPL-3", 'license': "AGPL-3",
'website': "http://www.osiell.com", 'website': "http://www.osiell.com",
@ -19,7 +19,6 @@
'views/http_session_view.xml', 'views/http_session_view.xml',
'views/http_request_view.xml', 'views/http_request_view.xml',
], ],
'images': [],
'application': True, 'application': True,
'installable': True, 'installable': True,
} }

View File

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<openerp> <odoo noupdate="1">
<data noupdate="1">
<record id="ir_cron_auditlog_autovacuum" model="ir.cron"> <record id="ir_cron_auditlog_autovacuum" model="ir.cron">
<field name='name'>Auto-vacuum audit logs</field> <field name='name'>Auto-vacuum audit logs</field>
@ -14,5 +13,4 @@
<field name="args">(180,)</field> <field name="args">(180,)</field>
</record> </record>
</data> </odoo>
</openerp>

View File

@ -4,7 +4,7 @@
import logging import logging
from datetime import datetime, timedelta from datetime import datetime, timedelta
from openerp import models, fields, api from odoo import models, fields, api
_logger = logging.getLogger(__name__) _logger = logging.getLogger(__name__)

View File

@ -2,17 +2,17 @@
# © 2015 ABF OSIELL <http://osiell.com> # © 2015 ABF OSIELL <http://osiell.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from openerp import models, fields, api from odoo import models, fields, api
from openerp.http import request from odoo.http import request
class AuditlogHTTPRequest(models.Model): class AuditlogHTTPRequest(models.Model):
_name = 'auditlog.http.request' _name = 'auditlog.http.request'
_description = u"Auditlog - HTTP request log" _description = u"Auditlog - HTTP request log"
_order = "create_date DESC" _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") name = fields.Char(u"Path")
root_url = fields.Char(u"Root URL") root_url = fields.Char(u"Root URL")
user_id = fields.Many2one( user_id = fields.Many2one(
@ -23,7 +23,7 @@ class AuditlogHTTPRequest(models.Model):
log_ids = fields.One2many( log_ids = fields.One2many(
'auditlog.log', 'http_request_id', string=u"Logs") 'auditlog.log', 'http_request_id', string=u"Logs")
@api.multi @api.depends('create_date', 'name')
def _compute_display_name(self): def _compute_display_name(self):
for httprequest in self: for httprequest in self:
create_date = fields.Datetime.from_string(httprequest.create_date) create_date = fields.Datetime.from_string(httprequest.create_date)
@ -33,6 +33,10 @@ class AuditlogHTTPRequest(models.Model):
httprequest.name or '?', httprequest.name or '?',
fields.Datetime.to_string(tz_create_date)) 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 @api.model
def current_http_request(self): def current_http_request(self):
"""Create a log corresponding to the current HTTP request, and returns """Create a log corresponding to the current HTTP request, and returns

View File

@ -2,24 +2,24 @@
# © 2015 ABF OSIELL <http://osiell.com> # © 2015 ABF OSIELL <http://osiell.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from openerp import models, fields, api from odoo import models, fields, api
from openerp.http import request from odoo.http import request
class AuditlogtHTTPSession(models.Model): class AuditlogtHTTPSession(models.Model):
_name = 'auditlog.http.session' _name = 'auditlog.http.session'
_description = u"Auditlog - HTTP User session log" _description = u"Auditlog - HTTP User session log"
_order = "create_date DESC" _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) name = fields.Char(u"Session ID", index=True)
user_id = fields.Many2one( user_id = fields.Many2one(
'res.users', string=u"User", index=True) 'res.users', string=u"User", index=True)
http_request_ids = fields.One2many( http_request_ids = fields.One2many(
'auditlog.http.request', 'http_session_id', string=u"HTTP Requests") 'auditlog.http.request', 'http_session_id', string=u"HTTP Requests")
@api.multi @api.depends('create_date', 'user_id')
def _compute_display_name(self): def _compute_display_name(self):
for httpsession in self: for httpsession in self:
create_date = fields.Datetime.from_string(httpsession.create_date) 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 '?', httpsession.user_id and httpsession.user_id.name or '?',
fields.Datetime.to_string(tz_create_date)) 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 @api.model
def current_http_session(self): def current_http_session(self):
"""Create a log corresponding to the current HTTP user session, and """Create a log corresponding to the current HTTP user session, and
@ -39,7 +43,7 @@ class AuditlogtHTTPSession(models.Model):
""" """
if not request: if not request:
return False return False
httpsession = request.httpsession httpsession = request.session
if httpsession: if httpsession:
existing_session = self.search( existing_session = self.search(
[('name', '=', httpsession.sid), [('name', '=', httpsession.sid),

View File

@ -1,7 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# © 2015 ABF OSIELL <http://osiell.com> # © 2015 ABF OSIELL <http://osiell.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). # 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): class AuditlogLog(models.Model):

View File

@ -2,7 +2,7 @@
# © 2015 ABF OSIELL <http://osiell.com> # © 2015 ABF OSIELL <http://osiell.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). # 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 = [ FIELDS_BLACKLIST = [
'id', 'create_uid', 'create_date', 'write_uid', 'write_date', '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.")) "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.""" """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'): if not hasattr(self.pool, '_auditlog_field_cache'):
self.pool._auditlog_field_cache = {} self.pool._auditlog_field_cache = {}
if not hasattr(self.pool, '_auditlog_model_cache'): if not hasattr(self.pool, '_auditlog_model_cache'):
self.pool._auditlog_model_cache = {} self.pool._auditlog_model_cache = {}
if ids is None: if not self:
ids = self.search(cr, SUPERUSER_ID, [('state', '=', 'subscribed')]) self = self.search([('state', '=', 'subscribed')])
return self._patch_methods(cr, SUPERUSER_ID, ids) return self._patch_methods()
@api.multi @api.multi
def _patch_methods(self): def _patch_methods(self):
@ -175,7 +175,7 @@ class AuditlogRule(models.Model):
def create(self, vals): def create(self, vals):
"""Update the registry when a new rule is created.""" """Update the registry when a new rule is created."""
new_record = super(AuditlogRule, self).create(vals) 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( modules.registry.RegistryManager.signal_registry_change(
self.env.cr.dbname) self.env.cr.dbname)
return new_record return new_record
@ -184,7 +184,7 @@ class AuditlogRule(models.Model):
def write(self, vals): def write(self, vals):
"""Update the registry when existing rules are updated.""" """Update the registry when existing rules are updated."""
super(AuditlogRule, self).write(vals) 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( modules.registry.RegistryManager.signal_registry_change(
self.env.cr.dbname) self.env.cr.dbname)
return True return True
@ -526,7 +526,7 @@ class AuditlogRule(models.Model):
to view logs on that model. to view logs on that model.
""" """
act_window_model = self.env['ir.actions.act_window'] 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: for rule in self:
# Create a shortcut to view logs # Create a shortcut to view logs
domain = "[('model_id', '=', %s), ('res_id', '=', active_id)]" % ( 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}) rule.write({'state': 'subscribed', 'action_id': act_window.id})
keyword = 'client_action_relate' keyword = 'client_action_relate'
value = 'ir.actions.act_window,%s' % act_window.id value = 'ir.actions.act_window,%s' % act_window.id
model_data_model.sudo().ir_set( model_ir_values.sudo().set_action(
'action', keyword, 'View_log_' + rule.model_id.model, 'View_log_' + rule.model_id.model,
[rule.model_id.model], value, replace=True, action_slot=keyword,
isobject=True, xml_id=False) model=rule.model_id.model,
action=value)
return True return True
@api.multi @api.multi

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

@ -1,7 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# © 2015 Therp BV <http://therp.nl> # © 2015 Therp BV <http://therp.nl>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). # 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): class TestAuditlog(object):

View File

@ -3,7 +3,7 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
import time import time
from openerp.tests.common import TransactionCase from odoo.tests.common import TransactionCase
class TestAuditlogAutovacuum(TransactionCase): class TestAuditlogAutovacuum(TransactionCase):

View File

@ -1,205 +1,201 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<openerp> <odoo>
<data> <menuitem id="menu_audit" name="Audit"
parent="base.menu_custom" sequence="50"
<menuitem id="menu_audit" name="Audit" groups="base.group_system"/>
parent="base.menu_custom" sequence="50"
groups="base.group_system"/>
<!-- auditlog.rule --> <!-- auditlog.rule -->
<record model="ir.ui.view" id="view_auditlog_rule_form"> <record model="ir.ui.view" id="view_auditlog_rule_form">
<field name="name">auditlog.rule.form</field> <field name="name">auditlog.rule.form</field>
<field name="model">auditlog.rule</field> <field name="model">auditlog.rule</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<form string="Rule"> <form string="Rule">
<header> <header>
<button string="Subscribe" name="subscribe" <button string="Subscribe" name="subscribe"
type="object" states="draft" class="oe_highlight"/> type="object" states="draft" class="oe_highlight"/>
<button string="Unsubscribe" name="unsubscribe" <button string="Unsubscribe" name="unsubscribe"
type="object" states="subscribed"/> type="object" states="subscribed"/>
<field name="state" widget="statusbar"/> <field name="state" widget="statusbar"/>
</header> </header>
<sheet> <sheet>
<group string="Rule"> <group string="Rule">
<group colspan="1"> <group colspan="1">
<field name="name" required="1"/> <field name="name" required="1"/>
<field name="model_id"/> <field name="model_id"/>
<field name="log_type"/> <field name="log_type"/>
<field name="action_id" readonly="1" groups="base.group_no_one"/> <field name="action_id" readonly="1" groups="base.group_no_one"/>
</group> </group>
<group colspan="1"> <group colspan="1">
<field name="log_read"/> <field name="log_read"/>
<field name="log_write"/> <field name="log_write"/>
<field name="log_unlink"/> <field name="log_unlink"/>
<field name="log_create"/> <field name="log_create"/>
</group>
</group> </group>
</sheet>
</form>
</field>
</record>
<record model="ir.ui.view" id="view_auditlog_rule_tree">
<field name="name">auditlog.rule.tree</field>
<field name="model">auditlog.rule</field>
<field name="arch" type="xml">
<tree colors="blue:state == 'draft';black:state == 'subscribed'" string="Rules">
<field name="name"/>
<field name="model_id"/>
<field name="log_type"/>
<field name="log_read"/>
<field name="log_write"/>
<field name="log_unlink"/>
<field name="log_create"/>
<field name="state"/>
</tree>
</field>
</record>
<record id="view_auditlog_rule_search" model="ir.ui.view">
<field name="name">auditlog.rule.search</field>
<field name="model">auditlog.rule</field>
<field name="arch" type="xml">
<search string="Rules">
<field name="name"/>
<filter name="state_draft"
domain="[('state','=','draft')]" string="Draft"/>
<filter name="state_subscribed"
domain="[('state','=','subscribed')]" string="Subscribed"/>
<field name="model_id"/>
<group expand="0" string="Group By...">
<filter name="group_by_state" string="State"
domain="[]" context="{'group_by':'state'}"/>
</group> </group>
</search> </sheet>
</field> </form>
</record> </field>
</record>
<record model="ir.actions.act_window" id="action_auditlog_rule_tree"> <record model="ir.ui.view" id="view_auditlog_rule_tree">
<field name="name">Rules</field> <field name="name">auditlog.rule.tree</field>
<field name="res_model">auditlog.rule</field> <field name="model">auditlog.rule</field>
<field name="type">ir.actions.act_window</field> <field name="arch" type="xml">
<field name="view_type">form</field> <tree colors="blue:state == 'draft';black:state == 'subscribed'" string="Rules">
<field name="view_mode">tree,form</field> <field name="name"/>
<field name="context">{}</field> <field name="model_id"/>
<field name="search_view_id" ref="view_auditlog_rule_search"/> <field name="log_type"/>
</record> <field name="log_read"/>
<field name="log_write"/>
<field name="log_unlink"/>
<field name="log_create"/>
<field name="state"/>
</tree>
</field>
</record>
<menuitem id="menu_action_auditlog_rule_tree" parent="menu_audit" action="action_auditlog_rule_tree"/> <record id="view_auditlog_rule_search" model="ir.ui.view">
<field name="name">auditlog.rule.search</field>
<field name="model">auditlog.rule</field>
<field name="arch" type="xml">
<search string="Rules">
<field name="name"/>
<filter name="state_draft"
domain="[('state','=','draft')]" string="Draft"/>
<filter name="state_subscribed"
domain="[('state','=','subscribed')]" string="Subscribed"/>
<field name="model_id"/>
<group expand="0" string="Group By...">
<filter name="group_by_state" string="State"
domain="[]" context="{'group_by':'state'}"/>
</group>
</search>
</field>
</record>
<record model="ir.actions.act_window" id="action_auditlog_rule_tree">
<field name="name">Rules</field>
<field name="res_model">auditlog.rule</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="context">{}</field>
<field name="search_view_id" ref="view_auditlog_rule_search"/>
</record>
<menuitem id="menu_action_auditlog_rule_tree" parent="menu_audit" action="action_auditlog_rule_tree"/>
<!-- auditlog.log --> <!-- auditlog.log -->
<record model="ir.ui.view" id="view_auditlog_log_form"> <record model="ir.ui.view" id="view_auditlog_log_form">
<field name="name">auditlog.log.form</field> <field name="name">auditlog.log.form</field>
<field name="model">auditlog.log</field> <field name="model">auditlog.log</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<form string="Log"> <form string="Log">
<sheet> <sheet>
<group string="Log"> <group string="Log">
<group colspan="1"> <group colspan="1">
<field name="create_date" readonly="1"/> <field name="create_date" readonly="1"/>
<field name="user_id" readonly="1"/> <field name="user_id" readonly="1"/>
<field name="method" readonly="1"/> <field name="method" readonly="1"/>
<field name="log_type" readonly="1"/> <field name="log_type" readonly="1"/>
</group>
<group colspan="1">
<field name="model_id" readonly="1"/>
<field name="res_id" readonly="1"/>
<field name="name" readonly="1"/>
</group>
</group> </group>
<group string="HTTP Context"> <group colspan="1">
<field name="http_session_id"/> <field name="model_id" readonly="1"/>
<field name="http_request_id"/> <field name="res_id" readonly="1"/>
<field name="name" readonly="1"/>
</group> </group>
<group string="Fields updated">
<field name="line_ids" readonly="1" nolabel="1">
<form string="Log - Field updated">
<group>
<field name="field_id" readonly="1"/>
</group>
<group string="Values" col="4">
<field name="old_value" readonly="1"/>
<field name="new_value" readonly="1"/>
<field name="old_value_text" readonly="1"/>
<field name="new_value_text" readonly="1"/>
</group>
</form>
<tree>
<field name="field_description"/>
<field name="field_name"/>
<!--<field name="old_value"/>-->
<field name="old_value_text"/>
<!--<field name="new_value"/>-->
<field name="new_value_text"/>
</tree>
</field>
</group>
</sheet>
</form>
</field>
</record>
<record model="ir.ui.view" id="view_auditlog_log_tree">
<field name="name">auditlog.log.tree</field>
<field name="model">auditlog.log</field>
<field name="arch" type="xml">
<tree string="Logs" create="false">
<field name="create_date"/>
<field name="name"/>
<field name="model_id"/>
<field name="res_id"/>
<field name="method"/>
<field name="user_id"/>
</tree>
</field>
</record>
<record id="view_auditlog_log_search" model="ir.ui.view">
<field name="name">auditlog.log.search</field>
<field name="model">auditlog.log</field>
<field name="arch" type="xml">
<search string="Logs">
<field name="name"/>
<field name="model_id"/>
<field name="res_id"/>
<field name="user_id"/>
<group expand="0" string="Group By...">
<filter name="group_by_user_id"
string="User"
domain="[]" context="{'group_by':'user_id'}"/>
<filter name="group_by_model_id"
string="Model"
domain="[]" context="{'group_by':'model_id'}"/>
<filter name="group_by_res_id"
string="Resource ID"
domain="[]" context="{'group_by':'res_id'}"/>
<filter name="group_by_create_date"
string="Date"
domain="[]" context="{'group_by':'create_date'}"/>
<filter name="group_by_http_session"
string="User session"
domain="[]" context="{'group_by':'http_session_id'}"/>
<filter name="group_by_http_request"
string="HTTP Request"
domain="[]" context="{'group_by':'http_request_id'}"/>
</group> </group>
</search> <group string="HTTP Context">
</field> <field name="http_session_id"/>
</record> <field name="http_request_id"/>
</group>
<group string="Fields updated">
<field name="line_ids" readonly="1" nolabel="1">
<form string="Log - Field updated">
<group>
<field name="field_id" readonly="1"/>
</group>
<group string="Values" col="4">
<field name="old_value" readonly="1"/>
<field name="new_value" readonly="1"/>
<field name="old_value_text" readonly="1"/>
<field name="new_value_text" readonly="1"/>
</group>
</form>
<tree>
<field name="field_description"/>
<field name="field_name"/>
<!--<field name="old_value"/>-->
<field name="old_value_text"/>
<!--<field name="new_value"/>-->
<field name="new_value_text"/>
</tree>
</field>
</group>
</sheet>
</form>
</field>
</record>
<record model="ir.actions.act_window" id="action_auditlog_log_tree"> <record model="ir.ui.view" id="view_auditlog_log_tree">
<field name="name">Logs</field> <field name="name">auditlog.log.tree</field>
<field name="res_model">auditlog.log</field> <field name="model">auditlog.log</field>
<field name="view_type">form</field> <field name="arch" type="xml">
<field name="search_view_id" ref="view_auditlog_log_search"/> <tree string="Logs" create="false">
</record> <field name="create_date"/>
<field name="name"/>
<field name="model_id"/>
<field name="res_id"/>
<field name="method"/>
<field name="user_id"/>
</tree>
</field>
</record>
<menuitem id="menu_audit_logs" name="Logs" <record id="view_auditlog_log_search" model="ir.ui.view">
parent="menu_audit" action="action_auditlog_log_tree"/> <field name="name">auditlog.log.search</field>
<field name="model">auditlog.log</field>
<field name="arch" type="xml">
<search string="Logs">
<field name="name"/>
<field name="model_id"/>
<field name="res_id"/>
<field name="user_id"/>
<group expand="0" string="Group By...">
<filter name="group_by_user_id"
string="User"
domain="[]" context="{'group_by':'user_id'}"/>
<filter name="group_by_model_id"
string="Model"
domain="[]" context="{'group_by':'model_id'}"/>
<filter name="group_by_res_id"
string="Resource ID"
domain="[]" context="{'group_by':'res_id'}"/>
<filter name="group_by_create_date"
string="Date"
domain="[]" context="{'group_by':'create_date'}"/>
<filter name="group_by_http_session"
string="User session"
domain="[]" context="{'group_by':'http_session_id'}"/>
<filter name="group_by_http_request"
string="HTTP Request"
domain="[]" context="{'group_by':'http_request_id'}"/>
</group>
</search>
</field>
</record>
</data> <record model="ir.actions.act_window" id="action_auditlog_log_tree">
</openerp> <field name="name">Logs</field>
<field name="res_model">auditlog.log</field>
<field name="view_type">form</field>
<field name="search_view_id" ref="view_auditlog_log_search"/>
</record>
<menuitem id="menu_audit_logs" name="Logs"
parent="menu_audit" action="action_auditlog_log_tree"/>
</odoo>

View File

@ -1,82 +1,78 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<openerp> <odoo>
<data> <record id="view_auditlog_http_request_form" model="ir.ui.view">
<field name="name">auditlog.http.request.form</field>
<record id="view_auditlog_http_request_form" model="ir.ui.view"> <field name="model">auditlog.http.request</field>
<field name="name">auditlog.http.request.form</field> <field name="arch" type="xml">
<field name="model">auditlog.http.request</field> <form string="HTTP Request">
<field name="arch" type="xml"> <sheet>
<form string="HTTP Request"> <group string="HTTP Request">
<sheet> <field name="root_url"/>
<group string="HTTP Request"> <field name="name"/>
<field name="root_url"/> <field name="create_date"/>
<field name="name"/> <field name="user_context"/>
<field name="create_date"/> <field name="http_session_id"/>
<field name="user_context"/>
<field name="http_session_id"/>
</group>
<group string="Logs">
<field name="log_ids" nolabel="1"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="view_auditlog_http_request_tree" model="ir.ui.view">
<field name="name">auditlog.http.request.tree</field>
<field name="model">auditlog.http.request</field>
<field name="arch" type="xml">
<tree string="HTTP Requests">
<field name="name"/>
<field name="create_date"/>
<field name="http_session_id"/>
</tree>
</field>
</record>
<record id="view_auditlog_http_request_search" model="ir.ui.view">
<field name="name">auditlog.http.request.search</field>
<field name="model">auditlog.http.request</field>
<field name="arch" type="xml">
<search string="HTTP Requests">
<field name="create_date"/>
<field name="root_url"/>
<field name="name"/>
<field name="user_id"/>
<field name="http_session_id"/>
<group expand="0" string="Group By...">
<filter name="group_by_root_url"
string="Root URL"
domain="[]" context="{'group_by':'root_url'}"/>
<filter name="group_by_name"
string="Path"
domain="[]" context="{'group_by':'name'}"/>
<filter name="group_by_create_date"
string="Created on"
domain="[]" context="{'group_by':'create_date'}"/>
<filter name="group_by_user_id"
string="User"
domain="[]" context="{'group_by':'user_id'}"/>
<filter name="group_by_http_session_id"
string="User session"
domain="[]" context="{'group_by':'http_session_id'}"/>
</group> </group>
</search> <group string="Logs">
</field> <field name="log_ids" nolabel="1"/>
</record> </group>
</sheet>
</form>
</field>
</record>
<record model="ir.actions.act_window" id="action_auditlog_http_request_tree"> <record id="view_auditlog_http_request_tree" model="ir.ui.view">
<field name="name">HTTP Requests</field> <field name="name">auditlog.http.request.tree</field>
<field name="type">ir.actions.act_window</field> <field name="model">auditlog.http.request</field>
<field name="res_model">auditlog.http.request</field> <field name="arch" type="xml">
<field name="view_type">form</field> <tree string="HTTP Requests">
<field name="view_id" ref="view_auditlog_http_request_tree"/> <field name="name"/>
</record> <field name="create_date"/>
<field name="http_session_id"/>
</tree>
</field>
</record>
<menuitem id="menu_action_auditlog_http_request_tree" <record id="view_auditlog_http_request_search" model="ir.ui.view">
parent="menu_audit" <field name="name">auditlog.http.request.search</field>
action="action_auditlog_http_request_tree"/> <field name="model">auditlog.http.request</field>
<field name="arch" type="xml">
<search string="HTTP Requests">
<field name="create_date"/>
<field name="root_url"/>
<field name="name"/>
<field name="user_id"/>
<field name="http_session_id"/>
<group expand="0" string="Group By...">
<filter name="group_by_root_url"
string="Root URL"
domain="[]" context="{'group_by':'root_url'}"/>
<filter name="group_by_name"
string="Path"
domain="[]" context="{'group_by':'name'}"/>
<filter name="group_by_create_date"
string="Created on"
domain="[]" context="{'group_by':'create_date'}"/>
<filter name="group_by_user_id"
string="User"
domain="[]" context="{'group_by':'user_id'}"/>
<filter name="group_by_http_session_id"
string="User session"
domain="[]" context="{'group_by':'http_session_id'}"/>
</group>
</search>
</field>
</record>
</data> <record model="ir.actions.act_window" id="action_auditlog_http_request_tree">
</openerp> <field name="name">HTTP Requests</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">auditlog.http.request</field>
<field name="view_type">form</field>
<field name="view_id" ref="view_auditlog_http_request_tree"/>
</record>
<menuitem id="menu_action_auditlog_http_request_tree"
parent="menu_audit"
action="action_auditlog_http_request_tree"/>
</odoo>

View File

@ -1,69 +1,65 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<openerp> <odoo>
<data> <record id="view_auditlog_http_session_form" model="ir.ui.view">
<field name="name">auditlog.http.session.form</field>
<record id="view_auditlog_http_session_form" model="ir.ui.view"> <field name="model">auditlog.http.session</field>
<field name="name">auditlog.http.session.form</field> <field name="arch" type="xml">
<field name="model">auditlog.http.session</field> <form string="User session">
<field name="arch" type="xml"> <sheet>
<form string="User session"> <group string="User session">
<sheet> <field name="user_id"/>
<group string="User session"> <field name="create_date"/>
<field name="user_id"/> <field name="name"/>
<field name="create_date"/>
<field name="name"/>
</group>
<group string="HTTP Requests">
<field name="http_request_ids" nolabel="1"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="view_auditlog_http_session_tree" model="ir.ui.view">
<field name="name">auditlog.http.session.tree</field>
<field name="model">auditlog.http.session</field>
<field name="arch" type="xml">
<tree string="User sessions">
<field name="user_id"/>
<field name="create_date"/>
<field name="name"/>
</tree>
</field>
</record>
<record id="view_auditlog_http_session_search" model="ir.ui.view">
<field name="name">auditlog.http.session.search</field>
<field name="model">auditlog.http.session</field>
<field name="arch" type="xml">
<search string="User sessions">
<field name="user_id"/>
<field name="name"/>
<field name="create_date"/>
<group expand="0" string="Group By...">
<filter name="group_by_user_id"
string="User"
domain="[]" context="{'group_by':'user_id'}"/>
<filter name="group_by_create_date"
string="Created on"
domain="[]" context="{'group_by':'create_date'}"/>
</group> </group>
</search> <group string="HTTP Requests">
</field> <field name="http_request_ids" nolabel="1"/>
</record> </group>
</sheet>
</form>
</field>
</record>
<record model="ir.actions.act_window" id="action_auditlog_http_session_tree"> <record id="view_auditlog_http_session_tree" model="ir.ui.view">
<field name="name">User sessions</field> <field name="name">auditlog.http.session.tree</field>
<field name="type">ir.actions.act_window</field> <field name="model">auditlog.http.session</field>
<field name="res_model">auditlog.http.session</field> <field name="arch" type="xml">
<field name="view_type">form</field> <tree string="User sessions">
<field name="view_id" ref="view_auditlog_http_session_tree"/> <field name="user_id"/>
</record> <field name="create_date"/>
<field name="name"/>
</tree>
</field>
</record>
<menuitem id="menu_action_auditlog_http_session_tree" <record id="view_auditlog_http_session_search" model="ir.ui.view">
parent="menu_audit" <field name="name">auditlog.http.session.search</field>
action="action_auditlog_http_session_tree"/> <field name="model">auditlog.http.session</field>
<field name="arch" type="xml">
<search string="User sessions">
<field name="user_id"/>
<field name="name"/>
<field name="create_date"/>
<group expand="0" string="Group By...">
<filter name="group_by_user_id"
string="User"
domain="[]" context="{'group_by':'user_id'}"/>
<filter name="group_by_create_date"
string="Created on"
domain="[]" context="{'group_by':'create_date'}"/>
</group>
</search>
</field>
</record>
</data> <record model="ir.actions.act_window" id="action_auditlog_http_session_tree">
</openerp> <field name="name">User sessions</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">auditlog.http.session</field>
<field name="view_type">form</field>
<field name="view_id" ref="view_auditlog_http_session_tree"/>
</record>
<menuitem id="menu_action_auditlog_http_session_tree"
parent="menu_audit"
action="action_auditlog_http_session_tree"/>
</odoo>