Audit Log

auditlog
REPOSITORY
REPOSITORYOCA/server-tools
GIT
GIThttps://github.com/OCA/server-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-tools/tree/19.0/auditlog
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ABF OSIELL
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ABF OSIELL
COMMITTERS
COMMITTERSStefan Rijnhart, Weblate, OCA-git-bot, oca-ci, Cuong, Nguyen Minh Tran Manh
WEBSITE
WEBSITEhttps://github.com/OCA/server-tools
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:40:46
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows the administrator to log user operations performed on
data models such as `create`, `read`, `write` and `delete`.

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
view_auditlog_http_request_form auditlog.http.request.form auditlog.http.request form New
view_auditlog_http_request_search auditlog.http.request.search auditlog.http.request search New
view_auditlog_http_request_tree auditlog.http.request.list auditlog.http.request list New
view_auditlog_http_session_form auditlog.http.session.form auditlog.http.session form New
view_auditlog_http_session_search auditlog.http.session.search auditlog.http.session search New
view_auditlog_http_session_tree auditlog.http.session.list auditlog.http.session list New
view_auditlog_line_search auditlog.line.search auditlog.log.line.view search New
view_auditlog_line_tree view.auditlog.line.list auditlog.log.line.view list New
view_auditlog_log_form auditlog.log.form auditlog.log form New
view_auditlog_log_search auditlog.log.search auditlog.log search New
view_auditlog_log_tree auditlog.log.list auditlog.log list New
view_auditlog_rule_form auditlog.rule.form auditlog.rule form New
view_auditlog_rule_search auditlog.rule.search auditlog.rule search New
view_auditlog_rule_tree auditlog.rule.list auditlog.rule list New
Models touched (7)

New fields (0)

No new fields.

Public methods (1)
  • autovacuum(self, days, chunk_size=None)
    @api.model
    Delete all logs older than ``days``. This includes: - CRUD logs (create, read, write, unlink) - HTTP requests - HTTP user sessions Called from a cron.

New fields (7)
  • display_name Char
    compute='_compute_display_name' store=True args: 'Name'
  • http_session_id Many2one → auditlog.http.session
    index=True string='Session' args: 'auditlog.http.session'
  • log_ids One2many → auditlog.log
    string='Logs' args: 'auditlog.log', 'http_request_id'
  • name Char
    args: 'Path'
  • root_url Char
    args: 'Root URL'
  • user_context Char
    args: 'Context'
  • user_id Many2one → res.users
    string='User' args: 'res.users'
Public methods (1)
  • current_http_request(self)
    @api.model
    Create a log corresponding to the current HTTP request, and returns its ID. This method can be called several times during the HTTP query/response cycle, it will only log the request on the first call. If no HTTP request is available, returns `False`.

New fields (4)
  • display_name Char
    compute='_compute_display_name' store=True args: 'Name'
  • http_request_ids One2many → auditlog.http.request
    string='HTTP Requests' args: 'auditlog.http.request', 'http_session_id'
  • name Char
    index=True args: 'Session ID'
  • user_id Many2one → res.users
    index=True string='User' args: 'res.users'
Public methods (1)
  • current_http_session(self)
    @api.model
    Create a log corresponding to the current HTTP user session, and returns its ID. This method can be called several times during the HTTP query/response cycle, it will only log the user session on the first call. If no HTTP user session is available, returns `False`.

New fields (12)
  • http_request_id Many2one → auditlog.http.request
    index=True string='HTTP Request' args: 'auditlog.http.request'
  • http_session_id Many2one → auditlog.http.session
    index=True string='Session' args: 'auditlog.http.session'
  • line_ids One2many → auditlog.log.line
    string='Fields updated' args: 'auditlog.log.line', 'log_id'
  • log_type Selection
    string='Type' args: [('full', 'Full log'), ('fast', 'Fast log')]
  • method Char
    size=64
  • model_id Many2one → ir.model
    index=True ondelete='set null' string='Model' args: 'ir.model'
  • model_model Char
    readonly=True string='Technical Model Name'
  • model_name Char
    readonly=True
  • name Char
    size=64 args: 'Resource Name'
  • res_id Integer
    args: 'Resource ID'
  • res_ids Char
    args: 'Resource IDs'
  • user_id Many2one → res.users
    string='User' args: 'res.users'
Public methods (3)
  • create(self, vals_list)
    @api.model_create_multi
    Insert model_name and model_model field values upon creation.
  • show_res_ids(self)
  • write(self, vals)
    Update model_name and model_model field values to reflect model_id changes.

New fields (8)
  • field_description Char
    readonly=True args: 'Description'
  • field_id Many2one → ir.model.fields
    index=True ondelete='set null' args: 'ir.model.fields'
  • field_name Char
    readonly=True args: 'Technical name'
  • log_id Many2one → auditlog.log
    index=True ondelete='cascade' args: 'auditlog.log'
  • new_value Text
  • new_value_text Text
    args: 'New value Text'
  • old_value Text
  • old_value_text Text
    args: 'Old value Text'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
    Ensure field_id is not empty on creation and store field_name and field_description.
  • write(self, vals)
    Ensure field_id is set during write and update field_name and field_description values.

New fields (10)
  • http_request_id Many2one → auditlog.http.request
    index=True string='HTTP Request' args: 'auditlog.http.request'
  • http_session_id Many2one → auditlog.http.session
    index=True string='Session' args: 'auditlog.http.session'
  • log_type Selection
    selection=<expr> string='Type'
  • method Char
  • model_id Many2one → ir.model
    args: 'ir.model'
  • model_model Char
  • model_name Char
  • name Char
  • res_id Integer
  • user_id Many2one → res.users
    args: 'res.users'
Public methods (0)

No public methods.

New fields (16)
  • action_id Many2one → ir.actions.act_window
    string='Action' args: 'ir.actions.act_window'
  • capture_record Boolean
    help='In case of full logging, also log all values of records at the time of deletion.' string='Log values on deletion'
  • fields_to_exclude_ids Many2many → ir.model.fields
    domain="[('model_id', '=', model_id)]" help='Changes made to these fields are not logged.' string='Fields to Exclude' args: 'ir.model.fields'
  • log_create Boolean
    default=True help='Select this if you want to keep track of creation on any record of the model of this rule' args: 'Log Creates'
  • log_export_data Boolean
    default=True help='Select this if you want to keep track of exports of the model of this rule' args: 'Log Exports'
  • log_read Boolean
    help='Select this if you want to keep track of read/open on any record of the model of this rule' args: 'Log Reads'
  • log_type Selection
    default='full' help='Full log: the previous values of updated fields are retrieved and stored on the log lines. This includes stored computed fields on the updated records that may be affected by the new values of other fields.\nFast log: only log the new values assigned through the create and write operations (less information, but it is faster).' required=True string='Type' args: [('full', 'Full log'), ('fast', 'Fast log')]
  • log_unlink Boolean
    default=True help='Select this if you want to keep track of deletion on any record of the model of this rule' args: 'Log Deletes'
  • log_write Boolean
    default=True help='Select this if you want to keep track of modification on any record of the model of this rule' args: 'Log Writes'
  • model_id Many2one → ir.model
    help='Select model for which you want to generate log.' index=True ondelete='set null' args: 'ir.model', 'Model'
  • model_model Char
    readonly=True string='Technical Model Name'
  • model_name Char
    readonly=True
  • name Char
    required=True
  • state Selection
    default='draft' required=True args: [('draft', 'Draft'), ('confirmed', 'Confirmed')]
  • user_ids Many2many → res.users
    help='if no user is added then it will applicable for all users' string='Users' args: 'res.users', 'audittail_rules_users', 'user_id', 'rule_id'
  • users_to_exclude_ids Many2many → res.users
    context={'active_test': False} help='Changes made by these users are not logged.' string='Users to Exclude' args: 'res.users'
Public methods (7)
  • create(self, vals_list)
    @api.model_create_multi
    Update the registry when a new rule is created.
  • create_logs(self, uid, res_model, res_ids, method, old_values=None, new_values=None, additional_log_values=None)
    Create logs. `old_values` and `new_values` are dictionaries, e.g: {RES_ID: {'FIELD': VALUE, ...}}
  • get_auditlog_fields(self, model)
    @api.model
    Get the list of auditlog fields for a model By default it is all stored fields only, but you can override this.
  • set_to_confirmed(self)
    Confirm Rule for auditing changes on model and apply shortcut to view logs on that model.
  • set_to_draft(self)
    Reset Auditlog Rules state to draft.
  • unlink(self)
    Set rules to draft before removing them.
  • write(self, vals)
    Update the registry when existing rules are updated.
REPOSITORY
REPOSITORYOCA/server-tools
GIT
GIThttps://github.com/OCA/server-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-tools/tree/18.0/auditlog
VERSION
VERSION 2.0.9
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ABF OSIELL
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ABF OSIELL
COMMITTERS
COMMITTERSStefan Rijnhart, Weblate, OCA-git-bot, tarteo, Eric Lembregts, oca-ci, Adam Heinz, Mateu Griful, Baptiste Pellarin, tendil
WEBSITE
WEBSITEhttps://github.com/OCA/server-tools
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:07
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows the administrator to log user operations performed on
data models such as `create`, `read`, `write` and `delete`.

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
view_auditlog_http_request_form auditlog.http.request.form auditlog.http.request form New
view_auditlog_http_request_search auditlog.http.request.search auditlog.http.request search New
view_auditlog_http_request_tree auditlog.http.request.list auditlog.http.request list New
view_auditlog_http_session_form auditlog.http.session.form auditlog.http.session form New
view_auditlog_http_session_search auditlog.http.session.search auditlog.http.session search New
view_auditlog_http_session_tree auditlog.http.session.list auditlog.http.session list New
view_auditlog_line_search auditlog.line.search auditlog.log.line.view search New
view_auditlog_line_tree view.auditlog.line.list auditlog.log.line.view list New
view_auditlog_log_form auditlog.log.form auditlog.log form New
view_auditlog_log_search auditlog.log.search auditlog.log search New
view_auditlog_log_tree auditlog.log.list auditlog.log list New
view_auditlog_rule_form auditlog.rule.form auditlog.rule form New
view_auditlog_rule_search auditlog.rule.search auditlog.rule search New
view_auditlog_rule_tree auditlog.rule.list auditlog.rule list New
Models touched (7)

New fields (0)

No new fields.

Public methods (1)
  • autovacuum(self, days, chunk_size=None)
    @api.model
    Delete all logs older than ``days``. This includes: - CRUD logs (create, read, write, unlink) - HTTP requests - HTTP user sessions Called from a cron.

New fields (7)
  • display_name Char
    compute='_compute_display_name' store=True args: 'Name'
  • http_session_id Many2one → auditlog.http.session
    index=True string='Session' args: 'auditlog.http.session'
  • log_ids One2many → auditlog.log
    string='Logs' args: 'auditlog.log', 'http_request_id'
  • name Char
    args: 'Path'
  • root_url Char
    args: 'Root URL'
  • user_context Char
    args: 'Context'
  • user_id Many2one → res.users
    string='User' args: 'res.users'
Public methods (1)
  • current_http_request(self)
    @api.model
    Create a log corresponding to the current HTTP request, and returns its ID. This method can be called several times during the HTTP query/response cycle, it will only log the request on the first call. If no HTTP request is available, returns `False`.

New fields (4)
  • display_name Char
    compute='_compute_display_name' store=True args: 'Name'
  • http_request_ids One2many → auditlog.http.request
    string='HTTP Requests' args: 'auditlog.http.request', 'http_session_id'
  • name Char
    index=True args: 'Session ID'
  • user_id Many2one → res.users
    index=True string='User' args: 'res.users'
Public methods (1)
  • current_http_session(self)
    @api.model
    Create a log corresponding to the current HTTP user session, and returns its ID. This method can be called several times during the HTTP query/response cycle, it will only log the user session on the first call. If no HTTP user session is available, returns `False`.

New fields (12)
  • http_request_id Many2one → auditlog.http.request
    index=True string='HTTP Request' args: 'auditlog.http.request'
  • http_session_id Many2one → auditlog.http.session
    index=True string='Session' args: 'auditlog.http.session'
  • line_ids One2many → auditlog.log.line
    string='Fields updated' args: 'auditlog.log.line', 'log_id'
  • log_type Selection
    string='Type' args: [('full', 'Full log'), ('fast', 'Fast log')]
  • method Char
    size=64
  • model_id Many2one → ir.model
    index=True ondelete='set null' string='Model' args: 'ir.model'
  • model_model Char
    readonly=True string='Technical Model Name'
  • model_name Char
    readonly=True
  • name Char
    size=64 args: 'Resource Name'
  • res_id Integer
    args: 'Resource ID'
  • res_ids Char
    args: 'Resource IDs'
  • user_id Many2one → res.users
    string='User' args: 'res.users'
Public methods (3)
  • create(self, vals_list)
    @api.model_create_multi
    Insert model_name and model_model field values upon creation.
  • show_res_ids(self)
  • write(self, vals)
    Update model_name and model_model field values to reflect model_id changes.

New fields (8)
  • field_description Char
    readonly=True args: 'Description'
  • field_id Many2one → ir.model.fields
    index=True ondelete='set null' string='Field' args: 'ir.model.fields'
  • field_name Char
    readonly=True args: 'Technical name'
  • log_id Many2one → auditlog.log
    index=True ondelete='cascade' string='Log' args: 'auditlog.log'
  • new_value Text
  • new_value_text Text
    args: 'New value Text'
  • old_value Text
  • old_value_text Text
    args: 'Old value Text'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
    Ensure field_id is not empty on creation and store field_name and field_description.
  • write(self, vals)
    Ensure field_id is set during write and update field_name and field_description values.

New fields (10)
  • http_request_id Many2one → auditlog.http.request
    index=True string='HTTP Request' args: 'auditlog.http.request'
  • http_session_id Many2one → auditlog.http.session
    index=True string='Session' args: 'auditlog.http.session'
  • log_type Selection
    selection=<expr> string='Type'
  • method Char
  • model_id Many2one → ir.model
    args: 'ir.model'
  • model_model Char
  • model_name Char
  • name Char
  • res_id Integer
  • user_id Many2one → res.users
    args: 'res.users'
Public methods (0)

No public methods.

New fields (16)
  • action_id Many2one → ir.actions.act_window
    string='Action' args: 'ir.actions.act_window'
  • capture_record Boolean
    help='Select this if you want to keep track of Unlink Record'
  • fields_to_exclude_ids Many2many → ir.model.fields
    domain="[('model_id', '=', model_id)]" string='Fields to Exclude' args: 'ir.model.fields'
  • log_create Boolean
    default=True help='Select this if you want to keep track of creation on any record of the model of this rule' args: 'Log Creates'
  • log_export_data Boolean
    default=True help='Select this if you want to keep track of exports of the model of this rule' args: 'Log Exports'
  • log_read Boolean
    help='Select this if you want to keep track of read/open on any record of the model of this rule' args: 'Log Reads'
  • log_type Selection
    default='full' help='Full log: make a diff between the data before and after the operation (log more info like computed fields which were updated, but it is slower)\nFast log: only log the changes made through the create and write operations (less information, but it is faster)' required=True string='Type' args: [('full', 'Full log'), ('fast', 'Fast log')]
  • log_unlink Boolean
    default=True help='Select this if you want to keep track of deletion on any record of the model of this rule' args: 'Log Deletes'
  • log_write Boolean
    default=True help='Select this if you want to keep track of modification on any record of the model of this rule' args: 'Log Writes'
  • model_id Many2one → ir.model
    help='Select model for which you want to generate log.' index=True ondelete='set null' args: 'ir.model', 'Model'
  • model_model Char
    readonly=True string='Technical Model Name'
  • model_name Char
    readonly=True
  • name Char
    required=True
  • state Selection
    default='draft' required=True args: [('draft', 'Draft'), ('subscribed', 'Subscribed')]
  • user_ids Many2many → res.users
    help='if no user is added then it will applicable for all users' string='Users' args: 'res.users', 'audittail_rules_users', 'user_id', 'rule_id'
  • users_to_exclude_ids Many2many → res.users
    context={'active_test': False} string='Users to Exclude' args: 'res.users'
Public methods (7)
  • create(self, vals_list)
    @api.model_create_multi
    Update the registry when a new rule is created.
  • create_logs(self, uid, res_model, res_ids, method, old_values=None, new_values=None, additional_log_values=None)
    Create logs. `old_values` and `new_values` are dictionaries, e.g: {RES_ID: {'FIELD': VALUE, ...}}
  • get_auditlog_fields(self, model)
    @api.model
    Get the list of auditlog fields for a model By default it is all stored fields only, but you can override this.
  • subscribe(self)
    Subscribe Rule for auditing changes on model and apply shortcut to view logs on that model.
  • unlink(self)
    Unsubscribe rules before removing them.
  • unsubscribe(self)
    Unsubscribe Auditing Rule on model.
  • write(self, vals)
    Update the registry when existing rules are updated.
REPOSITORY
REPOSITORYOCA/server-tools
GIT
GIThttps://github.com/OCA/server-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-tools/tree/17.0/auditlog
VERSION
VERSION 1.1.1
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ABF OSIELL
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ABF OSIELL
COMMITTERS
COMMITTERSAlexandre Fayolle, Stefan Rijnhart, Miquel Raïch, Weblate, OCA-git-bot, Raf Ven, oca-ci, Mateu Griful, david-s73
WEBSITE
WEBSITEhttps://github.com/OCA/server-tools
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:01
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows the administrator to log user operations performed on
data models such as `create`, `read`, `write` and `delete`.

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
view_auditlog_http_request_form auditlog.http.request.form auditlog.http.request form New
view_auditlog_http_request_search auditlog.http.request.search auditlog.http.request search New
view_auditlog_http_request_tree auditlog.http.request.tree auditlog.http.request tree New
view_auditlog_http_session_form auditlog.http.session.form auditlog.http.session form New
view_auditlog_http_session_search auditlog.http.session.search auditlog.http.session search New
view_auditlog_http_session_tree auditlog.http.session.tree auditlog.http.session tree New
view_auditlog_line_search auditlog.line.search auditlog.log.line.view search New
view_auditlog_line_tree view.auditlog.line.tree auditlog.log.line.view tree New
view_auditlog_log_form auditlog.log.form auditlog.log form New
view_auditlog_log_search auditlog.log.search auditlog.log search New
view_auditlog_log_tree auditlog.log.tree auditlog.log tree New
view_auditlog_rule_form auditlog.rule.form auditlog.rule form New
view_auditlog_rule_search auditlog.rule.search auditlog.rule search New
view_auditlog_rule_tree auditlog.rule.tree auditlog.rule tree New
Models touched (7)

New fields (0)

No new fields.

Public methods (1)
  • autovacuum(self, days, chunk_size=None)
    @api.model
    Delete all logs older than ``days``. This includes: - CRUD logs (create, read, write, unlink) - HTTP requests - HTTP user sessions Called from a cron.

New fields (7)
  • display_name Char
    compute='_compute_display_name' store=True args: 'Name'
  • http_session_id Many2one → auditlog.http.session
    index=True string='Session' args: 'auditlog.http.session'
  • log_ids One2many → auditlog.log
    string='Logs' args: 'auditlog.log', 'http_request_id'
  • name Char
    args: 'Path'
  • root_url Char
    args: 'Root URL'
  • user_context Char
    args: 'Context'
  • user_id Many2one → res.users
    string='User' args: 'res.users'
Public methods (2)
  • current_http_request(self)
    @api.model
    Create a log corresponding to the current HTTP request, and returns its ID. This method can be called several times during the HTTP query/response cycle, it will only log the request on the first call. If no HTTP request is available, returns `False`.
  • name_get(self)

New fields (4)
  • display_name Char
    compute='_compute_display_name' store=True args: 'Name'
  • http_request_ids One2many → auditlog.http.request
    string='HTTP Requests' args: 'auditlog.http.request', 'http_session_id'
  • name Char
    index=True args: 'Session ID'
  • user_id Many2one → res.users
    index=True string='User' args: 'res.users'
Public methods (2)
  • current_http_session(self)
    @api.model
    Create a log corresponding to the current HTTP user session, and returns its ID. This method can be called several times during the HTTP query/response cycle, it will only log the user session on the first call. If no HTTP user session is available, returns `False`.
  • name_get(self)

New fields (11)
  • http_request_id Many2one → auditlog.http.request
    index=True string='HTTP Request' args: 'auditlog.http.request'
  • http_session_id Many2one → auditlog.http.session
    index=True string='Session' args: 'auditlog.http.session'
  • line_ids One2many → auditlog.log.line
    string='Fields updated' args: 'auditlog.log.line', 'log_id'
  • log_type Selection
    string='Type' args: [('full', 'Full log'), ('fast', 'Fast log')]
  • method Char
    size=64
  • model_id Many2one → ir.model
    index=True ondelete='set null' string='Model' args: 'ir.model'
  • model_model Char
    readonly=True string='Technical Model Name'
  • model_name Char
    readonly=True
  • name Char
    size=64 args: 'Resource Name'
  • res_id Integer
    args: 'Resource ID'
  • user_id Many2one → res.users
    string='User' args: 'res.users'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
    Insert model_name and model_model field values upon creation.
  • write(self, vals)
    Update model_name and model_model field values to reflect model_id changes.

New fields (8)
  • field_description Char
    readonly=True args: 'Description'
  • field_id Many2one → ir.model.fields
    index=True ondelete='set null' string='Field' args: 'ir.model.fields'
  • field_name Char
    readonly=True args: 'Technical name'
  • log_id Many2one → auditlog.log
    index=True ondelete='cascade' string='Log' args: 'auditlog.log'
  • new_value Text
  • new_value_text Text
    args: 'New value Text'
  • old_value Text
  • old_value_text Text
    args: 'Old value Text'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
    Ensure field_id is not empty on creation and store field_name and field_description.
  • write(self, vals)
    Ensure field_id is set during write and update field_name and field_description values.

New fields (10)
  • http_request_id Many2one → auditlog.http.request
    index=True string='HTTP Request' args: 'auditlog.http.request'
  • http_session_id Many2one → auditlog.http.session
    index=True string='Session' args: 'auditlog.http.session'
  • log_type Selection
    selection=<expr> string='Type'
  • method Char
  • model_id Many2one → ir.model
    args: 'ir.model'
  • model_model Char
  • model_name Char
  • name Char
  • res_id Integer
  • user_id Many2one → res.users
    args: 'res.users'
Public methods (0)

No public methods.

New fields (15)
  • action_id Many2one → ir.actions.act_window
    string='Action' args: 'ir.actions.act_window'
  • capture_record Boolean
    help='Select this if you want to keep track of Unlink Record'
  • fields_to_exclude_ids Many2many → ir.model.fields
    domain="[('model_id', '=', model_id)]" string='Fields to Exclude' args: 'ir.model.fields'
  • log_create Boolean
    default=True help='Select this if you want to keep track of creation on any record of the model of this rule' args: 'Log Creates'
  • log_read Boolean
    help='Select this if you want to keep track of read/open on any record of the model of this rule' args: 'Log Reads'
  • log_type Selection
    default='full' help='Full log: make a diff between the data before and after the operation (log more info like computed fields which were updated, but it is slower)\nFast log: only log the changes made through the create and write operations (less information, but it is faster)' required=True string='Type' args: [('full', 'Full log'), ('fast', 'Fast log')]
  • log_unlink Boolean
    default=True help='Select this if you want to keep track of deletion on any record of the model of this rule' args: 'Log Deletes'
  • log_write Boolean
    default=True help='Select this if you want to keep track of modification on any record of the model of this rule' args: 'Log Writes'
  • model_id Many2one → ir.model
    help='Select model for which you want to generate log.' index=True ondelete='set null' args: 'ir.model', 'Model'
  • model_model Char
    readonly=True string='Technical Model Name'
  • model_name Char
    readonly=True
  • name Char
    required=True
  • state Selection
    default='draft' required=True args: [('draft', 'Draft'), ('subscribed', 'Subscribed')]
  • user_ids Many2many → res.users
    help='if no user is added then it will applicable for all users' string='Users' args: 'res.users', 'audittail_rules_users', 'user_id', 'rule_id'
  • users_to_exclude_ids Many2many → res.users
    context={'active_test': False} string='Users to Exclude' args: 'res.users'
Public methods (7)
  • create(self, vals_list)
    @api.model_create_multi
    Update the registry when a new rule is created.
  • create_logs(self, uid, res_model, res_ids, method, old_values=None, new_values=None, additional_log_values=None)
    Create logs. `old_values` and `new_values` are dictionaries, e.g: {RES_ID: {'FIELD': VALUE, ...}}
  • get_auditlog_fields(self, model)
    @api.model
    Get the list of auditlog fields for a model By default it is all stored fields only, but you can override this.
  • subscribe(self)
    Subscribe Rule for auditing changes on model and apply shortcut to view logs on that model.
  • unlink(self)
    Unsubscribe rules before removing them.
  • unsubscribe(self)
    Unsubscribe Auditing Rule on model.
  • write(self, vals)
    Update the registry when existing rules are updated.
REPOSITORY
REPOSITORYOCA/server-tools
GIT
GIThttps://github.com/OCA/server-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-tools/tree/16.0/auditlog
VERSION
VERSION 3.0.5
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ABF OSIELL
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ABF OSIELL
COMMITTERS
COMMITTERSStefan Rijnhart, Holger Brunn, Enric Tobella, Weblate, OCA-git-bot, tarteo, Pieter Paulussen, Miika Nissi, Nikos Tsirintanis, oca-ci, Adam Heinz, BT-anieto, Phil Gaiser, Angel Vil
WEBSITE
WEBSITEhttps://github.com/OCA/server-tools
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:53
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
view_auditlog_http_request_form auditlog.http.request.form auditlog.http.request form New
view_auditlog_http_request_search auditlog.http.request.search auditlog.http.request search New
view_auditlog_http_request_tree auditlog.http.request.tree auditlog.http.request tree New
view_auditlog_http_session_form auditlog.http.session.form auditlog.http.session form New
view_auditlog_http_session_search auditlog.http.session.search auditlog.http.session search New
view_auditlog_http_session_tree auditlog.http.session.tree auditlog.http.session tree New
view_auditlog_line_search auditlog.line.search auditlog.log.line.view search New
view_auditlog_line_tree view.auditlog.line.tree auditlog.log.line.view tree New
view_auditlog_log_form auditlog.log.form auditlog.log form New
view_auditlog_log_search auditlog.log.search auditlog.log search New
view_auditlog_log_tree auditlog.log.tree auditlog.log tree New
view_auditlog_rule_form auditlog.rule.form auditlog.rule form New
view_auditlog_rule_search auditlog.rule.search auditlog.rule search New
view_auditlog_rule_tree auditlog.rule.tree auditlog.rule tree New
Models touched (7)

New fields (0)

No new fields.

Public methods (1)
  • autovacuum(self, days, chunk_size=None)
    @api.model
    Delete all logs older than ``days``. This includes: - CRUD logs (create, read, write, unlink) - HTTP requests - HTTP user sessions Called from a cron.

New fields (7)
  • display_name Char
    compute='_compute_display_name' store=True args: 'Name'
  • http_session_id Many2one → auditlog.http.session
    index=True string='Session' args: 'auditlog.http.session'
  • log_ids One2many → auditlog.log
    string='Logs' args: 'auditlog.log', 'http_request_id'
  • name Char
    args: 'Path'
  • root_url Char
    args: 'Root URL'
  • user_context Char
    args: 'Context'
  • user_id Many2one → res.users
    string='User' args: 'res.users'
Public methods (2)
  • current_http_request(self)
    @api.model
    Create a log corresponding to the current HTTP request, and returns its ID. This method can be called several times during the HTTP query/response cycle, it will only log the request on the first call. If no HTTP request is available, returns `False`.
  • name_get(self)

New fields (4)
  • display_name Char
    compute='_compute_display_name' store=True args: 'Name'
  • http_request_ids One2many → auditlog.http.request
    string='HTTP Requests' args: 'auditlog.http.request', 'http_session_id'
  • name Char
    index=True args: 'Session ID'
  • user_id Many2one → res.users
    index=True string='User' args: 'res.users'
Public methods (2)
  • current_http_session(self)
    @api.model
    Create a log corresponding to the current HTTP user session, and returns its ID. This method can be called several times during the HTTP query/response cycle, it will only log the user session on the first call. If no HTTP user session is available, returns `False`.
  • name_get(self)

New fields (12)
  • http_request_id Many2one → auditlog.http.request
    index=True string='HTTP Request' args: 'auditlog.http.request'
  • http_session_id Many2one → auditlog.http.session
    index=True string='Session' args: 'auditlog.http.session'
  • line_ids One2many → auditlog.log.line
    string='Fields updated' args: 'auditlog.log.line', 'log_id'
  • log_type Selection
    string='Type' args: [('full', 'Full log'), ('fast', 'Fast log')]
  • method Char
    size=64
  • model_id Many2one → ir.model
    index=True ondelete='set null' string='Model' args: 'ir.model'
  • model_model Char
    readonly=True string='Technical Model Name'
  • model_name Char
    readonly=True
  • name Char
    size=64 args: 'Resource Name'
  • res_id Integer
    args: 'Resource ID'
  • res_ids Char
    args: 'Resource IDs'
  • user_id Many2one → res.users
    string='User' args: 'res.users'
Public methods (3)
  • create(self, vals_list)
    @api.model_create_multi
    Insert model_name and model_model field values upon creation.
  • show_res_ids(self)
  • write(self, vals)
    Update model_name and model_model field values to reflect model_id changes.

New fields (8)
  • field_description Char
    readonly=True args: 'Description'
  • field_id Many2one → ir.model.fields
    index=True ondelete='set null' string='Field' args: 'ir.model.fields'
  • field_name Char
    readonly=True args: 'Technical name'
  • log_id Many2one → auditlog.log
    index=True ondelete='cascade' string='Log' args: 'auditlog.log'
  • new_value Text
  • new_value_text Text
    args: 'New value Text'
  • old_value Text
  • old_value_text Text
    args: 'Old value Text'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
    Ensure field_id is not empty on creation and store field_name and field_description.
  • write(self, vals)
    Ensure field_id is set during write and update field_name and field_description values.

New fields (10)
  • http_request_id Many2one → auditlog.http.request
    index=True string='HTTP Request' args: 'auditlog.http.request'
  • http_session_id Many2one → auditlog.http.session
    index=True string='Session' args: 'auditlog.http.session'
  • log_type Selection
    selection=<expr> string='Type'
  • method Char
  • model_id Many2one → ir.model
    args: 'ir.model'
  • model_model Char
  • model_name Char
  • name Char
  • res_id Integer
  • user_id Many2one → res.users
    args: 'res.users'
Public methods (0)

No public methods.

New fields (16)
  • action_id Many2one → ir.actions.act_window
    states={'subscribed': [('readonly', True)]} string='Action' args: 'ir.actions.act_window'
  • capture_record Boolean
    help='Select this if you want to keep track of Unlink Record'
  • fields_to_exclude_ids Many2many → ir.model.fields
    domain="[('model_id', '=', model_id)]" states={'subscribed': [('readonly', True)]} string='Fields to Exclude' args: 'ir.model.fields'
  • log_create Boolean
    default=True help='Select this if you want to keep track of creation on any record of the model of this rule' states={'subscribed': [('readonly', True)]} args: 'Log Creates'
  • log_export_data Boolean
    default=True help='Select this if you want to keep track of exports of the model of this rule' states={'subscribed': [('readonly', True)]} args: 'Log Exports'
  • log_read Boolean
    help='Select this if you want to keep track of read/open on any record of the model of this rule' states={'subscribed': [('readonly', True)]} args: 'Log Reads'
  • log_type Selection
    default='full' help='Full log: make a diff between the data before and after the operation (log more info like computed fields which were updated, but it is slower)\nFast log: only log the changes made through the create and write operations (less information, but it is faster)' required=True states={'subscribed': [('readonly', True)]} string='Type' args: [('full', 'Full log'), ('fast', 'Fast log')]
  • log_unlink Boolean
    default=True help='Select this if you want to keep track of deletion on any record of the model of this rule' states={'subscribed': [('readonly', True)]} args: 'Log Deletes'
  • log_write Boolean
    default=True help='Select this if you want to keep track of modification on any record of the model of this rule' states={'subscribed': [('readonly', True)]} args: 'Log Writes'
  • model_id Many2one → ir.model
    help='Select model for which you want to generate log.' index=True ondelete='set null' states={'subscribed': [('readonly', True)]} args: 'ir.model', 'Model'
  • model_model Char
    readonly=True string='Technical Model Name'
  • model_name Char
    readonly=True
  • name Char
    required=True states={'subscribed': [('readonly', True)]}
  • state Selection
    default='draft' required=True args: [('draft', 'Draft'), ('subscribed', 'Subscribed')]
  • user_ids Many2many → res.users
    help='if User is not added then it will applicable for all users' states={'subscribed': [('readonly', True)]} string='Users' args: 'res.users', 'audittail_rules_users', 'user_id', 'rule_id'
  • users_to_exclude_ids Many2many → res.users
    context={'active_test': False} states={'subscribed': [('readonly', True)]} string='Users to Exclude' args: 'res.users'
Public methods (7)
  • create(self, vals_list)
    @api.model_create_multi
    Update the registry when a new rule is created.
  • create_logs(self, uid, res_model, res_ids, method, old_values=None, new_values=None, additional_log_values=None)
    Create logs. `old_values` and `new_values` are dictionaries, e.g: {RES_ID: {'FIELD': VALUE, ...}}
  • get_auditlog_fields(self, model)
    @api.model
    Get the list of auditlog fields for a model By default it is all stored fields only, but you can override this.
  • subscribe(self)
    Subscribe Rule for auditing changes on model and apply shortcut to view logs on that model.
  • unlink(self)
    Unsubscribe rules before removing them.
  • unsubscribe(self)
    Unsubscribe Auditing Rule on model.
  • write(self, vals)
    Update the registry when existing rules are updated.
REPOSITORY
REPOSITORYOCA/server-tools
GIT
GIThttps://github.com/OCA/server-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-tools/tree/15.0/auditlog
VERSION
VERSION 3.0.0
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ABF OSIELL
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ABF OSIELL
COMMITTERS
COMMITTERSAlexandre Fayolle, Stefan Rijnhart, Enric Tobella, OCA Transbot, Sébastien Alix, Weblate, OCA-git-bot, Pieter Paulussen, oca-ci, DavidJForgeFlow, Bert Van Groenendael, BT-vgabor
WEBSITE
WEBSITEhttps://github.com/OCA/server-tools
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:38
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
view_auditlog_http_request_form auditlog.http.request.form auditlog.http.request form New
view_auditlog_http_request_search auditlog.http.request.search auditlog.http.request search New
view_auditlog_http_request_tree auditlog.http.request.tree auditlog.http.request tree New
view_auditlog_http_session_form auditlog.http.session.form auditlog.http.session form New
view_auditlog_http_session_search auditlog.http.session.search auditlog.http.session search New
view_auditlog_http_session_tree auditlog.http.session.tree auditlog.http.session tree New
view_auditlog_line_search auditlog.line.search auditlog.log.line.view search New
view_auditlog_line_tree view.auditlog.line.tree auditlog.log.line.view tree New
view_auditlog_log_form auditlog.log.form auditlog.log form New
view_auditlog_log_search auditlog.log.search auditlog.log search New
view_auditlog_log_tree auditlog.log.tree auditlog.log tree New
view_auditlog_rule_form auditlog.rule.form auditlog.rule form New
view_auditlog_rule_search auditlog.rule.search auditlog.rule search New
view_auditlog_rule_tree auditlog.rule.tree auditlog.rule tree New
Models touched (7)

New fields (0)

No new fields.

Public methods (1)
  • autovacuum(self, days, chunk_size=None)
    @api.model
    Delete all logs older than ``days``. This includes: - CRUD logs (create, read, write, unlink) - HTTP requests - HTTP user sessions Called from a cron.

New fields (7)
  • display_name Char
    compute='_compute_display_name' store=True args: 'Name'
  • http_session_id Many2one → auditlog.http.session
    index=True string='Session' args: 'auditlog.http.session'
  • log_ids One2many → auditlog.log
    string='Logs' args: 'auditlog.log', 'http_request_id'
  • name Char
    args: 'Path'
  • root_url Char
    args: 'Root URL'
  • user_context Char
    args: 'Context'
  • user_id Many2one → res.users
    string='User' args: 'res.users'
Public methods (2)
  • current_http_request(self)
    @api.model
    Create a log corresponding to the current HTTP request, and returns its ID. This method can be called several times during the HTTP query/response cycle, it will only log the request on the first call. If no HTTP request is available, returns `False`.
  • name_get(self)

New fields (4)
  • display_name Char
    compute='_compute_display_name' store=True args: 'Name'
  • http_request_ids One2many → auditlog.http.request
    string='HTTP Requests' args: 'auditlog.http.request', 'http_session_id'
  • name Char
    index=True args: 'Session ID'
  • user_id Many2one → res.users
    index=True string='User' args: 'res.users'
Public methods (2)
  • current_http_session(self)
    @api.model
    Create a log corresponding to the current HTTP user session, and returns its ID. This method can be called several times during the HTTP query/response cycle, it will only log the user session on the first call. If no HTTP user session is available, returns `False`.
  • name_get(self)

New fields (12)
  • http_request_id Many2one → auditlog.http.request
    index=True string='HTTP Request' args: 'auditlog.http.request'
  • http_session_id Many2one → auditlog.http.session
    index=True string='Session' args: 'auditlog.http.session'
  • line_ids One2many → auditlog.log.line
    string='Fields updated' args: 'auditlog.log.line', 'log_id'
  • log_type Selection
    string='Type' args: [('full', 'Full log'), ('fast', 'Fast log')]
  • method Char
    size=64
  • model_id Many2one → ir.model
    index=True ondelete='set null' string='Model' args: 'ir.model'
  • model_model Char
    readonly=True string='Technical Model Name'
  • model_name Char
    readonly=True
  • name Char
    size=64 args: 'Resource Name'
  • res_id Integer
    args: 'Resource ID'
  • res_ids Char
    args: 'Resource IDs'
  • user_id Many2one → res.users
    string='User' args: 'res.users'
Public methods (3)
  • create(self, vals_list)
    @api.model_create_multi
    Insert model_name and model_model field values upon creation.
  • show_res_ids(self)
  • write(self, vals)
    Update model_name and model_model field values to reflect model_id changes.

New fields (8)
  • field_description Char
    readonly=True args: 'Description'
  • field_id Many2one → ir.model.fields
    index=True ondelete='set null' string='Field' args: 'ir.model.fields'
  • field_name Char
    readonly=True args: 'Technical name'
  • log_id Many2one → auditlog.log
    index=True ondelete='cascade' string='Log' args: 'auditlog.log'
  • new_value Text
  • new_value_text Text
    args: 'New value Text'
  • old_value Text
  • old_value_text Text
    args: 'Old value Text'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
    Ensure field_id is not empty on creation and store field_name and field_description.
  • write(self, vals)
    Ensure field_id is set during write and update field_name and field_description values.

New fields (10)
  • http_request_id Many2one → auditlog.http.request
    index=True string='HTTP Request' args: 'auditlog.http.request'
  • http_session_id Many2one → auditlog.http.session
    index=True string='Session' args: 'auditlog.http.session'
  • log_type Selection
    selection=<expr> string='Type'
  • method Char
  • model_id Many2one → ir.model
    args: 'ir.model'
  • model_model Char
  • model_name Char
  • name Char
  • res_id Integer
  • user_id Many2one → res.users
    args: 'res.users'
Public methods (1)
  • init(self)

New fields (16)
  • action_id Many2one → ir.actions.act_window
    states={'subscribed': [('readonly', True)]} string='Action' args: 'ir.actions.act_window'
  • capture_record Boolean
    help='Select this if you want to keep track of Unlink Record'
  • fields_to_exclude_ids Many2many → ir.model.fields
    domain="[('model_id', '=', model_id)]" states={'subscribed': [('readonly', True)]} string='Fields to Exclude' args: 'ir.model.fields'
  • log_create Boolean
    default=True help='Select this if you want to keep track of creation on any record of the model of this rule' states={'subscribed': [('readonly', True)]} args: 'Log Creates'
  • log_export_data Boolean
    default=True help='Select this if you want to keep track of exports of the model of this rule' states={'subscribed': [('readonly', True)]} args: 'Log Exports'
  • log_read Boolean
    help='Select this if you want to keep track of read/open on any record of the model of this rule' states={'subscribed': [('readonly', True)]} args: 'Log Reads'
  • log_type Selection
    default='full' help='Full log: make a diff between the data before and after the operation (log more info like computed fields which were updated, but it is slower)\nFast log: only log the changes made through the create and write operations (less information, but it is faster)' required=True states={'subscribed': [('readonly', True)]} string='Type' args: [('full', 'Full log'), ('fast', 'Fast log')]
  • log_unlink Boolean
    default=True help='Select this if you want to keep track of deletion on any record of the model of this rule' states={'subscribed': [('readonly', True)]} args: 'Log Deletes'
  • log_write Boolean
    default=True help='Select this if you want to keep track of modification on any record of the model of this rule' states={'subscribed': [('readonly', True)]} args: 'Log Writes'
  • model_id Many2one → ir.model
    help='Select model for which you want to generate log.' index=True ondelete='set null' states={'subscribed': [('readonly', True)]} args: 'ir.model', 'Model'
  • model_model Char
    readonly=True string='Technical Model Name'
  • model_name Char
    readonly=True
  • name Char
    required=True states={'subscribed': [('readonly', True)]}
  • state Selection
    default='draft' required=True args: [('draft', 'Draft'), ('subscribed', 'Subscribed')]
  • user_ids Many2many → res.users
    help='if User is not added then it will applicable for all users' states={'subscribed': [('readonly', True)]} string='Users' args: 'res.users', 'audittail_rules_users', 'user_id', 'rule_id'
  • users_to_exclude_ids Many2many → res.users
    context={'active_test': False} states={'subscribed': [('readonly', True)]} string='Users to Exclude' args: 'res.users'
Public methods (7)
  • create(self, vals)
    @api.model
    Update the registry when a new rule is created.
  • create_logs(self, uid, res_model, res_ids, method, old_values=None, new_values=None, additional_log_values=None)
    Create logs. `old_values` and `new_values` are dictionaries, e.g: {RES_ID: {'FIELD': VALUE, ...}}
  • get_auditlog_fields(self, model)
    @api.model
    Get the list of auditlog fields for a model By default it is all stored fields only, but you can override this.
  • subscribe(self)
    Subscribe Rule for auditing changes on model and apply shortcut to view logs on that model.
  • unlink(self)
    Unsubscribe rules before removing them.
  • unsubscribe(self)
    Unsubscribe Auditing Rule on model.
  • write(self, vals)
    Update the registry when existing rules are updated.
REPOSITORY
REPOSITORYOCA/server-tools
GIT
GIThttps://github.com/OCA/server-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-tools/tree/14.0/auditlog
VERSION
VERSION 2.0.2
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ABF OSIELL
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ABF OSIELL
COMMITTERS
COMMITTERSAlexandre Fayolle, Stefan Rijnhart, Enric Tobella, Bhavesh Odedra, OCA Transbot, Jesús Alan Ramos Rodríguez, oca-travis, Weblate, OCA-git-bot, Tom Blauwendraat, SilvioC2C, oca-ci, Kitti U, tslai, oca-git-bot, Atchuthan Ubendran
WEBSITE
WEBSITEhttps://github.com/OCA/server-tools
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:41:05
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
view_auditlog_http_request_form auditlog.http.request.form auditlog.http.request form New
view_auditlog_http_request_search auditlog.http.request.search auditlog.http.request search New
view_auditlog_http_request_tree auditlog.http.request.tree auditlog.http.request tree New
view_auditlog_http_session_form auditlog.http.session.form auditlog.http.session form New
view_auditlog_http_session_search auditlog.http.session.search auditlog.http.session search New
view_auditlog_http_session_tree auditlog.http.session.tree auditlog.http.session tree New
view_auditlog_line_search auditlog.line.search auditlog.log.line.view search New
view_auditlog_line_tree view.auditlog.line.tree auditlog.log.line.view tree New
view_auditlog_log_form auditlog.log.form auditlog.log form New
view_auditlog_log_search auditlog.log.search auditlog.log search New
view_auditlog_log_tree auditlog.log.tree auditlog.log tree New
view_auditlog_rule_form auditlog.rule.form auditlog.rule form New
view_auditlog_rule_search auditlog.rule.search auditlog.rule search New
view_auditlog_rule_tree auditlog.rule.tree auditlog.rule tree New
Models touched (7)

New fields (0)

No new fields.

Public methods (1)
  • autovacuum(self, days, chunk_size=None)
    @api.model
    Delete all logs older than ``days``. This includes: - CRUD logs (create, read, write, unlink) - HTTP requests - HTTP user sessions Called from a cron.

New fields (7)
  • display_name Char
    compute='_compute_display_name' store=True args: 'Name'
  • http_session_id Many2one → auditlog.http.session
    index=True string='Session' args: 'auditlog.http.session'
  • log_ids One2many → auditlog.log
    string='Logs' args: 'auditlog.log', 'http_request_id'
  • name Char
    args: 'Path'
  • root_url Char
    args: 'Root URL'
  • user_context Char
    args: 'Context'
  • user_id Many2one → res.users
    string='User' args: 'res.users'
Public methods (2)
  • current_http_request(self)
    @api.model
    Create a log corresponding to the current HTTP request, and returns its ID. This method can be called several times during the HTTP query/response cycle, it will only log the request on the first call. If no HTTP request is available, returns `False`.
  • name_get(self)

New fields (4)
  • display_name Char
    compute='_compute_display_name' store=True args: 'Name'
  • http_request_ids One2many → auditlog.http.request
    string='HTTP Requests' args: 'auditlog.http.request', 'http_session_id'
  • name Char
    index=True args: 'Session ID'
  • user_id Many2one → res.users
    index=True string='User' args: 'res.users'
Public methods (2)
  • current_http_session(self)
    @api.model
    Create a log corresponding to the current HTTP user session, and returns its ID. This method can be called several times during the HTTP query/response cycle, it will only log the user session on the first call. If no HTTP user session is available, returns `False`.
  • name_get(self)

New fields (11)
  • http_request_id Many2one → auditlog.http.request
    index=True string='HTTP Request' args: 'auditlog.http.request'
  • http_session_id Many2one → auditlog.http.session
    index=True string='Session' args: 'auditlog.http.session'
  • line_ids One2many → auditlog.log.line
    string='Fields updated' args: 'auditlog.log.line', 'log_id'
  • log_type Selection
    string='Type' args: [('full', 'Full log'), ('fast', 'Fast log')]
  • method Char
    size=64
  • model_id Many2one → ir.model
    index=True ondelete='set null' string='Model' args: 'ir.model'
  • model_model Char
    readonly=True string='Technical Model Name'
  • model_name Char
    readonly=True
  • name Char
    size=64 args: 'Resource Name'
  • res_id Integer
    args: 'Resource ID'
  • user_id Many2one → res.users
    string='User' args: 'res.users'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
    Insert model_name and model_model field values upon creation.
  • write(self, vals)
    Update model_name and model_model field values to reflect model_id changes.

New fields (8)
  • field_description Char
    readonly=True args: 'Description'
  • field_id Many2one → ir.model.fields
    index=True ondelete='set null' string='Field' args: 'ir.model.fields'
  • field_name Char
    readonly=True args: 'Technical name'
  • log_id Many2one → auditlog.log
    index=True ondelete='cascade' string='Log' args: 'auditlog.log'
  • new_value Text
  • new_value_text Text
    args: 'New value Text'
  • old_value Text
  • old_value_text Text
    args: 'Old value Text'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
    Ensure field_id is not empty on creation and store field_name and field_description.
  • write(self, vals)
    Ensure field_id is set during write and update field_name and field_description values.

New fields (10)
  • http_request_id Many2one → auditlog.http.request
    index=True string='HTTP Request' args: 'auditlog.http.request'
  • http_session_id Many2one → auditlog.http.session
    index=True string='Session' args: 'auditlog.http.session'
  • log_type Selection
    selection=<expr> string='Type'
  • method Char
  • model_id Many2one → ir.model
    args: 'ir.model'
  • model_model Char
  • model_name Char
  • name Char
  • res_id Integer
  • user_id Many2one → res.users
    args: 'res.users'
Public methods (1)
  • init(self)

New fields (15)
  • action_id Many2one → ir.actions.act_window
    states={'subscribed': [('readonly', True)]} string='Action' args: 'ir.actions.act_window'
  • capture_record Boolean
    help='Select this if you want to keep track of Unlink Record' args: 'Capture Record'
  • fields_to_exclude_ids Many2many → ir.model.fields
    domain="[('model_id', '=', model_id)]" states={'subscribed': [('readonly', True)]} string='Fields to Exclude' args: 'ir.model.fields'
  • log_create Boolean
    default=True help='Select this if you want to keep track of creation on any record of the model of this rule' states={'subscribed': [('readonly', True)]} args: 'Log Creates'
  • log_read Boolean
    help='Select this if you want to keep track of read/open on any record of the model of this rule' states={'subscribed': [('readonly', True)]} args: 'Log Reads'
  • log_type Selection
    default='full' help='Full log: make a diff between the data before and after the operation (log more info like computed fields which were updated, but it is slower)\nFast log: only log the changes made through the create and write operations (less information, but it is faster)' required=True states={'subscribed': [('readonly', True)]} string='Type' args: [('full', 'Full log'), ('fast', 'Fast log')]
  • log_unlink Boolean
    default=True help='Select this if you want to keep track of deletion on any record of the model of this rule' states={'subscribed': [('readonly', True)]} args: 'Log Deletes'
  • log_write Boolean
    default=True help='Select this if you want to keep track of modification on any record of the model of this rule' states={'subscribed': [('readonly', True)]} args: 'Log Writes'
  • model_id Many2one → ir.model
    help='Select model for which you want to generate log.' index=True ondelete='set null' states={'subscribed': [('readonly', True)]} args: 'ir.model', 'Model'
  • model_model Char
    readonly=True string='Technical Model Name'
  • model_name Char
    readonly=True
  • name Char
    required=True states={'subscribed': [('readonly', True)]}
  • state Selection
    default='draft' required=True args: [('draft', 'Draft'), ('subscribed', 'Subscribed')]
  • user_ids Many2many → res.users
    help='if User is not added then it will applicable for all users' states={'subscribed': [('readonly', True)]} string='Users' args: 'res.users', 'audittail_rules_users', 'user_id', 'rule_id'
  • users_to_exclude_ids Many2many → res.users
    context={'active_test': False} states={'subscribed': [('readonly', True)]} string='Users to Exclude' args: 'res.users'
Public methods (7)
  • create(self, vals)
    @api.model
    Update the registry when a new rule is created.
  • create_logs(self, uid, res_model, res_ids, method, old_values=None, new_values=None, additional_log_values=None)
    Create logs. `old_values` and `new_values` are dictionaries, e.g: {RES_ID: {'FIELD': VALUE, ...}}
  • get_auditlog_fields(self, model)
    @api.model
    Get the list of auditlog fields for a model By default it is all stored fields only, but you can override this.
  • subscribe(self)
    Subscribe Rule for auditing changes on model and apply shortcut to view logs on that model.
  • unlink(self)
    Unsubscribe rules before removing them.
  • unsubscribe(self)
    Unsubscribe Auditing Rule on model.
  • write(self, vals)
    Update the registry when existing rules are updated.
REPOSITORY
REPOSITORYOCA/server-tools
GIT
GIThttps://github.com/OCA/server-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-tools/tree/13.0/auditlog
VERSION
VERSION 1.2.0
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ABF OSIELL
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ABF OSIELL
COMMITTERS
COMMITTERSStefan Rijnhart, sebalix, Bhavesh Odedra, OCA Transbot, oca-travis, Weblate, OCA-git-bot, Tom Blauwendraat, emagdalena, tslai, Tobias Bächle, Karthik, Sodexis
WEBSITE
WEBSITEhttps://github.com/OCA/server-tools
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:16
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
view_auditlog_http_request_form auditlog.http.request.form auditlog.http.request form New
view_auditlog_http_request_search auditlog.http.request.search auditlog.http.request search New
view_auditlog_http_request_tree auditlog.http.request.tree auditlog.http.request tree New
view_auditlog_http_session_form auditlog.http.session.form auditlog.http.session form New
view_auditlog_http_session_search auditlog.http.session.search auditlog.http.session search New
view_auditlog_http_session_tree auditlog.http.session.tree auditlog.http.session tree New
view_auditlog_log_form auditlog.log.form auditlog.log form New
view_auditlog_log_search auditlog.log.search auditlog.log search New
view_auditlog_log_tree auditlog.log.tree auditlog.log tree New
view_auditlog_rule_form auditlog.rule.form auditlog.rule form New
view_auditlog_rule_search auditlog.rule.search auditlog.rule search New
view_auditlog_rule_tree auditlog.rule.tree auditlog.rule tree New
Models touched (6)

New fields (0)

No new fields.

Public methods (1)
  • autovacuum(self, days, chunk_size=None)
    @api.model
    Delete all logs older than ``days``. This includes: - CRUD logs (create, read, write, unlink) - HTTP requests - HTTP user sessions Called from a cron.

New fields (7)
  • display_name Char
    compute='_compute_display_name' store=True args: 'Name'
  • http_session_id Many2one → auditlog.http.session
    index=True string='Session' args: 'auditlog.http.session'
  • log_ids One2many → auditlog.log
    string='Logs' args: 'auditlog.log', 'http_request_id'
  • name Char
    args: 'Path'
  • root_url Char
    args: 'Root URL'
  • user_context Char
    args: 'Context'
  • user_id Many2one → res.users
    string='User' args: 'res.users'
Public methods (2)
  • current_http_request(self)
    @api.model
    Create a log corresponding to the current HTTP request, and returns its ID. This method can be called several times during the HTTP query/response cycle, it will only log the request on the first call. If no HTTP request is available, returns `False`.
  • name_get(self)

New fields (4)
  • display_name Char
    compute='_compute_display_name' store=True args: 'Name'
  • http_request_ids One2many → auditlog.http.request
    string='HTTP Requests' args: 'auditlog.http.request', 'http_session_id'
  • name Char
    index=True args: 'Session ID'
  • user_id Many2one → res.users
    index=True string='User' args: 'res.users'
Public methods (2)
  • current_http_session(self)
    @api.model
    Create a log corresponding to the current HTTP user session, and returns its ID. This method can be called several times during the HTTP query/response cycle, it will only log the user session on the first call. If no HTTP user session is available, returns `False`.
  • name_get(self)

New fields (9)
  • http_request_id Many2one → auditlog.http.request
    index=True string='HTTP Request' args: 'auditlog.http.request'
  • http_session_id Many2one → auditlog.http.session
    index=True string='Session' args: 'auditlog.http.session'
  • line_ids One2many → auditlog.log.line
    string='Fields updated' args: 'auditlog.log.line', 'log_id'
  • log_type Selection
    string='Type' args: [('full', 'Full log'), ('fast', 'Fast log')]
  • method Char
    size=64
  • model_id Many2one → ir.model
    string='Model' args: 'ir.model'
  • name Char
    size=64 args: 'Resource Name'
  • res_id Integer
    args: 'Resource ID'
  • user_id Many2one → res.users
    string='User' args: 'res.users'
Public methods (0)

No public methods.

New fields (8)
  • field_description Char
    related='field_id.field_description' args: 'Description'
  • field_id Many2one → ir.model.fields
    ondelete='cascade' required=True string='Field' args: 'ir.model.fields'
  • field_name Char
    related='field_id.name' args: 'Technical name'
  • log_id Many2one → auditlog.log
    index=True ondelete='cascade' string='Log' args: 'auditlog.log'
  • new_value Text
  • new_value_text Text
    args: 'New value Text'
  • old_value Text
  • old_value_text Text
    args: 'Old value Text'
Public methods (0)

No public methods.

New fields (11)
  • action_id Many2one → ir.actions.act_window
    states={'subscribed': [('readonly', True)]} string='Action' args: 'ir.actions.act_window'
  • capture_record Boolean
    help='Select this if you want to keep track of Unlink Record' args: 'Capture Record'
  • log_create Boolean
    default=True help='Select this if you want to keep track of creation on any record of the model of this rule' states={'subscribed': [('readonly', True)]} args: 'Log Creates'
  • log_read Boolean
    help='Select this if you want to keep track of read/open on any record of the model of this rule' states={'subscribed': [('readonly', True)]} args: 'Log Reads'
  • log_type Selection
    default='full' help='Full log: make a diff between the data before and after the operation (log more info like computed fields which were updated, but it is slower)\nFast log: only log the changes made through the create and write operations (less information, but it is faster)' required=True states={'subscribed': [('readonly', True)]} string='Type' args: [('full', 'Full log'), ('fast', 'Fast log')]
  • log_unlink Boolean
    default=True help='Select this if you want to keep track of deletion on any record of the model of this rule' states={'subscribed': [('readonly', True)]} args: 'Log Deletes'
  • log_write Boolean
    default=True help='Select this if you want to keep track of modification on any record of the model of this rule' states={'subscribed': [('readonly', True)]} args: 'Log Writes'
  • model_id Many2one → ir.model
    help='Select model for which you want to generate log.' required=True states={'subscribed': [('readonly', True)]} args: 'ir.model', 'Model'
  • name Char
    required=True states={'subscribed': [('readonly', True)]}
  • state Selection
    default='draft' required=True args: [('draft', 'Draft'), ('subscribed', 'Subscribed')]
  • user_ids Many2many → res.users
    help='if User is not added then it will applicable for all users' states={'subscribed': [('readonly', True)]} string='Users' args: 'res.users', 'audittail_rules_users', 'user_id', 'rule_id'
Public methods (7)
  • create(self, vals)
    @api.model
    Update the registry when a new rule is created.
  • create_logs(self, uid, res_model, res_ids, method, old_values=None, new_values=None, additional_log_values=None)
    Create logs. `old_values` and `new_values` are dictionaries, e.g: {RES_ID: {'FIELD': VALUE, ...}}
  • get_auditlog_fields(self, model)
    @api.model
    Get the list of auditlog fields for a model By default it is all stored fields only, but you can override this.
  • subscribe(self)
    Subscribe Rule for auditing changes on model and apply shortcut to view logs on that model.
  • unlink(self)
    Unsubscribe rules before removing them.
  • unsubscribe(self)
    Unsubscribe Auditing Rule on model.
  • write(self, vals)
    Update the registry when existing rules are updated.
REPOSITORY
REPOSITORYOCA/server-tools
GIT
GIThttps://github.com/OCA/server-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-tools/tree/12.0/auditlog
VERSION
VERSION 2.1.1
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ABF OSIELL
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ABF OSIELL
COMMITTERS
COMMITTERSHolger Brunn, Maxime Chambreuil, sebalix, Bhavesh Odedra, OCA Transbot, oca-travis, Weblate, OCA-git-bot, Tom Blauwendraat, tslai
WEBSITE
WEBSITEhttps://github.com/OCA/server-tools
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:22
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
view_auditlog_http_request_form auditlog.http.request.form auditlog.http.request form New
view_auditlog_http_request_search auditlog.http.request.search auditlog.http.request search New
view_auditlog_http_request_tree auditlog.http.request.tree auditlog.http.request tree New
view_auditlog_http_session_form auditlog.http.session.form auditlog.http.session form New
view_auditlog_http_session_search auditlog.http.session.search auditlog.http.session search New
view_auditlog_http_session_tree auditlog.http.session.tree auditlog.http.session tree New
view_auditlog_log_form auditlog.log.form auditlog.log form New
view_auditlog_log_search auditlog.log.search auditlog.log search New
view_auditlog_log_tree auditlog.log.tree auditlog.log tree New
view_auditlog_rule_form auditlog.rule.form auditlog.rule form New
view_auditlog_rule_search auditlog.rule.search auditlog.rule search New
view_auditlog_rule_tree auditlog.rule.tree auditlog.rule tree New
Models touched (6)

New fields (0)

No new fields.

Public methods (1)
  • autovacuum(self, days, chunk_size=None)
    @api.model
    Delete all logs older than ``days``. This includes: - CRUD logs (create, read, write, unlink) - HTTP requests - HTTP user sessions Called from a cron.

New fields (7)
  • display_name Char
    compute='_compute_display_name' store=True args: 'Name'
  • http_session_id Many2one → auditlog.http.session
    string='Session' args: 'auditlog.http.session'
  • log_ids One2many → auditlog.log
    string='Logs' args: 'auditlog.log', 'http_request_id'
  • name Char
    args: 'Path'
  • root_url Char
    args: 'Root URL'
  • user_context Char
    args: 'Context'
  • user_id Many2one → res.users
    string='User' args: 'res.users'
Public methods (2)
  • current_http_request(self)
    @api.model
    Create a log corresponding to the current HTTP request, and returns its ID. This method can be called several times during the HTTP query/response cycle, it will only log the request on the first call. If no HTTP request is available, returns `False`.
  • name_get(self)
    @api.multi

New fields (4)
  • display_name Char
    compute='_compute_display_name' store=True args: 'Name'
  • http_request_ids One2many → auditlog.http.request
    string='HTTP Requests' args: 'auditlog.http.request', 'http_session_id'
  • name Char
    index=True args: 'Session ID'
  • user_id Many2one → res.users
    index=True string='User' args: 'res.users'
Public methods (2)
  • current_http_session(self)
    @api.model
    Create a log corresponding to the current HTTP user session, and returns its ID. This method can be called several times during the HTTP query/response cycle, it will only log the user session on the first call. If no HTTP user session is available, returns `False`.
  • name_get(self)
    @api.multi

New fields (9)
  • http_request_id Many2one → auditlog.http.request
    string='HTTP Request' args: 'auditlog.http.request'
  • http_session_id Many2one → auditlog.http.session
    string='Session' args: 'auditlog.http.session'
  • line_ids One2many → auditlog.log.line
    string='Fields updated' args: 'auditlog.log.line', 'log_id'
  • log_type Selection
    string='Type' args: [('full', 'Full log'), ('fast', 'Fast log')]
  • method Char
    size=64 args: 'Method'
  • model_id Many2one → ir.model
    string='Model' args: 'ir.model'
  • name Char
    size=64 args: 'Resource Name'
  • res_id Integer
    args: 'Resource ID'
  • user_id Many2one → res.users
    string='User' args: 'res.users'
Public methods (0)

No public methods.

New fields (8)
  • field_description Char
    related='field_id.field_description' args: 'Description'
  • field_id Many2one → ir.model.fields
    ondelete='cascade' required=True string='Field' args: 'ir.model.fields'
  • field_name Char
    related='field_id.name' args: 'Technical name'
  • log_id Many2one → auditlog.log
    index=True ondelete='cascade' string='Log' args: 'auditlog.log'
  • new_value Text
    args: 'New Value'
  • new_value_text Text
    args: 'New value Text'
  • old_value Text
    args: 'Old Value'
  • old_value_text Text
    args: 'Old value Text'
Public methods (0)

No public methods.

New fields (11)
  • action_id Many2one → ir.actions.act_window
    states={'subscribed': [('readonly', True)]} string='Action' args: 'ir.actions.act_window'
  • capture_record Boolean
    help='Select this if you want to keep track of Unlink Record' args: 'Capture Record'
  • log_create Boolean
    default=True help='Select this if you want to keep track of creation on any record of the model of this rule' states={'subscribed': [('readonly', True)]} args: 'Log Creates'
  • log_read Boolean
    help='Select this if you want to keep track of read/open on any record of the model of this rule' states={'subscribed': [('readonly', True)]} args: 'Log Reads'
  • log_type Selection
    default='full' help='Full log: make a diff between the data before and after the operation (log more info like computed fields which were updated, but it is slower)\nFast log: only log the changes made through the create and write operations (less information, but it is faster)' required=True states={'subscribed': [('readonly', True)]} string='Type' args: [('full', 'Full log'), ('fast', 'Fast log')]
  • log_unlink Boolean
    default=True help='Select this if you want to keep track of deletion on any record of the model of this rule' states={'subscribed': [('readonly', True)]} args: 'Log Deletes'
  • log_write Boolean
    default=True help='Select this if you want to keep track of modification on any record of the model of this rule' states={'subscribed': [('readonly', True)]} args: 'Log Writes'
  • model_id Many2one → ir.model
    help='Select model for which you want to generate log.' required=True states={'subscribed': [('readonly', True)]} args: 'ir.model', 'Model'
  • name Char
    required=True states={'subscribed': [('readonly', True)]} args: 'Name'
  • state Selection
    default='draft' required=True string='State' args: [('draft', 'Draft'), ('subscribed', 'Subscribed')]
  • user_ids Many2many → res.users
    help='if User is not added then it will applicable for all users' states={'subscribed': [('readonly', True)]} string='Users' args: 'res.users', 'audittail_rules_users', 'user_id', 'rule_id'
Public methods (7)
  • create(self, vals)
    @api.model
    Update the registry when a new rule is created.
  • create_logs(self, uid, res_model, res_ids, method, old_values=None, new_values=None, additional_log_values=None)
    Create logs. `old_values` and `new_values` are dictionaries, e.g: {RES_ID: {'FIELD': VALUE, ...}}
  • get_auditlog_fields(self, model)
    @api.model
    Get the list of auditlog fields for a model By default it is all stored fields only, but you can override this.
  • subscribe(self)
    @api.multi
    Subscribe Rule for auditing changes on model and apply shortcut to view logs on that model.
  • unlink(self)
    @api.multi
    Unsubscribe rules before removing them.
  • unsubscribe(self)
    @api.multi
    Unsubscribe Auditing Rule on model.
  • write(self, vals)
    @api.multi
    Update the registry when existing rules are updated.
REPOSITORY
REPOSITORYOCA/server-tools
GIT
GIThttps://github.com/OCA/server-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-tools/tree/11.0/auditlog
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ABF OSIELL
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ABF OSIELL
COMMITTERS
COMMITTERSsebalix, Enric Tobella, Stéphane Bidoul (ACSONE), OCA Transbot, oca-travis, Weblate, OCA-git-bot, Tom Blauwendraat, rgarnau
WEBSITE
WEBSITEhttps://github.com/OCA/server-tools
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:23:59
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
view_auditlog_http_request_form auditlog.http.request.form auditlog.http.request form New
view_auditlog_http_request_search auditlog.http.request.search auditlog.http.request search New
view_auditlog_http_request_tree auditlog.http.request.tree auditlog.http.request tree New
view_auditlog_http_session_form auditlog.http.session.form auditlog.http.session form New
view_auditlog_http_session_search auditlog.http.session.search auditlog.http.session search New
view_auditlog_http_session_tree auditlog.http.session.tree auditlog.http.session tree New
view_auditlog_log_form auditlog.log.form auditlog.log form New
view_auditlog_log_search auditlog.log.search auditlog.log search New
view_auditlog_log_tree auditlog.log.tree auditlog.log tree New
view_auditlog_rule_form auditlog.rule.form auditlog.rule form New
view_auditlog_rule_search auditlog.rule.search auditlog.rule search New
view_auditlog_rule_tree auditlog.rule.tree auditlog.rule tree New
Models touched (6)

New fields (0)

No new fields.

Public methods (1)
  • autovacuum(self, days)
    @api.model
    Delete all logs older than ``days``. This includes: - CRUD logs (create, read, write, unlink) - HTTP requests - HTTP user sessions Called from a cron.

New fields (7)
  • display_name Char
    compute='_compute_display_name' store=True args: 'Name'
  • http_session_id Many2one → auditlog.http.session
    string='Session' args: 'auditlog.http.session'
  • log_ids One2many → auditlog.log
    string='Logs' args: 'auditlog.log', 'http_request_id'
  • name Char
    args: 'Path'
  • root_url Char
    args: 'Root URL'
  • user_context Char
    args: 'Context'
  • user_id Many2one → res.users
    string='User' args: 'res.users'
Public methods (2)
  • current_http_request(self)
    @api.model
    Create a log corresponding to the current HTTP request, and returns its ID. This method can be called several times during the HTTP query/response cycle, it will only log the request on the first call. If no HTTP request is available, returns `False`.
  • name_get(self)
    @api.multi

New fields (4)
  • display_name Char
    compute='_compute_display_name' store=True args: 'Name'
  • http_request_ids One2many → auditlog.http.request
    string='HTTP Requests' args: 'auditlog.http.request', 'http_session_id'
  • name Char
    index=True args: 'Session ID'
  • user_id Many2one → res.users
    index=True string='User' args: 'res.users'
Public methods (2)
  • current_http_session(self)
    @api.model
    Create a log corresponding to the current HTTP user session, and returns its ID. This method can be called several times during the HTTP query/response cycle, it will only log the user session on the first call. If no HTTP user session is available, returns `False`.
  • name_get(self)
    @api.multi

New fields (9)
  • http_request_id Many2one → auditlog.http.request
    string='HTTP Request' args: 'auditlog.http.request'
  • http_session_id Many2one → auditlog.http.session
    string='Session' args: 'auditlog.http.session'
  • line_ids One2many → auditlog.log.line
    string='Fields updated' args: 'auditlog.log.line', 'log_id'
  • log_type Selection
    string='Type' args: [('full', 'Full log'), ('fast', 'Fast log')]
  • method Char
    size=64 args: 'Method'
  • model_id Many2one → ir.model
    string='Model' args: 'ir.model'
  • name Char
    size=64 args: 'Resource Name'
  • res_id Integer
    args: 'Resource ID'
  • user_id Many2one → res.users
    string='User' args: 'res.users'
Public methods (0)

No public methods.

New fields (8)
  • field_description Char
    related='field_id.field_description' args: 'Description'
  • field_id Many2one → ir.model.fields
    ondelete='cascade' required=True string='Field' args: 'ir.model.fields'
  • field_name Char
    related='field_id.name' args: 'Technical name'
  • log_id Many2one → auditlog.log
    index=True ondelete='cascade' string='Log' args: 'auditlog.log'
  • new_value Text
    args: 'New Value'
  • new_value_text Text
    args: 'New value Text'
  • old_value Text
    args: 'Old Value'
  • old_value_text Text
    args: 'Old value Text'
Public methods (0)

No public methods.

New fields (10)
  • action_id Many2one → ir.actions.act_window
    string='Action' args: 'ir.actions.act_window'
  • log_create Boolean
    default=True help='Select this if you want to keep track of creation on any record of the model of this rule' args: 'Log Creates'
  • log_read Boolean
    help='Select this if you want to keep track of read/open on any record of the model of this rule' args: 'Log Reads'
  • log_type Selection
    default='full' help='Full log: make a diff between the data before and after the operation (log more info like computed fields which were updated, but it is slower)\nFast log: only log the changes made through the create and write operations (less information, but it is faster)' required=True string='Type' args: [('full', 'Full log'), ('fast', 'Fast log')]
  • log_unlink Boolean
    default=True help='Select this if you want to keep track of deletion on any record of the model of this rule' args: 'Log Deletes'
  • log_write Boolean
    default=True help='Select this if you want to keep track of modification on any record of the model of this rule' args: 'Log Writes'
  • model_id Many2one → ir.model
    help='Select model for which you want to generate log.' required=True args: 'ir.model', 'Model'
  • name Char
    required=True size=32 args: 'Name'
  • state Selection
    default='draft' required=True string='State' args: [('draft', 'Draft'), ('subscribed', 'Subscribed')]
  • user_ids Many2many → res.users
    help='if User is not added then it will applicable for all users' string='Users' args: 'res.users', 'audittail_rules_users', 'user_id', 'rule_id'
Public methods (7)
  • create(self, vals)
    @api.model
    Update the registry when a new rule is created.
  • create_logs(self, uid, res_model, res_ids, method, old_values=None, new_values=None, additional_log_values=None)
    Create logs. `old_values` and `new_values` are dictionaries, e.g: {RES_ID: {'FIELD': VALUE, ...}}
  • get_auditlog_fields(self, model)
    @api.model
    Get the list of auditlog fields for a model By default it is all stored fields only, but you can override this.
  • subscribe(self)
    @api.multi
    Subscribe Rule for auditing changes on model and apply shortcut to view logs on that model.
  • unlink(self)
    @api.multi
    Unsubscribe rules before removing them.
  • unsubscribe(self)
    @api.multi
    Unsubscribe Auditing Rule on model.
  • write(self, vals)
    @api.multi
    Update the registry when existing rules are updated.
REPOSITORY
REPOSITORYOCA/server-tools
GIT
GIThttps://github.com/OCA/server-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-tools/tree/10.0/auditlog
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ABF OSIELL
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ABF OSIELL
COMMITTERS
COMMITTERSStefan Rijnhart, Pedro M. Baeza, Stéphane Bidoul (ACSONE), OCA Transbot, Dave Lasley, oca-travis, Weblate, OCA-git-bot, Tom Blauwendraat, Frédéric Garbely
WEBSITE
WEBSITEhttp://www.osiell.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:19:59
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
view_auditlog_http_request_form auditlog.http.request.form auditlog.http.request form New
view_auditlog_http_request_search auditlog.http.request.search auditlog.http.request search New
view_auditlog_http_request_tree auditlog.http.request.tree auditlog.http.request tree New
view_auditlog_http_session_form auditlog.http.session.form auditlog.http.session form New
view_auditlog_http_session_search auditlog.http.session.search auditlog.http.session search New
view_auditlog_http_session_tree auditlog.http.session.tree auditlog.http.session tree New
view_auditlog_log_form auditlog.log.form auditlog.log form New
view_auditlog_log_search auditlog.log.search auditlog.log search New
view_auditlog_log_tree auditlog.log.tree auditlog.log tree New
view_auditlog_rule_form auditlog.rule.form auditlog.rule form New
view_auditlog_rule_search auditlog.rule.search auditlog.rule search New
view_auditlog_rule_tree auditlog.rule.tree auditlog.rule tree New
Models touched (6)

New fields (0)

No new fields.

Public methods (1)
  • autovacuum(self, days)
    @api.model
    Delete all logs older than ``days``. This includes: - CRUD logs (create, read, write, unlink) - HTTP requests - HTTP user sessions Called from a cron.

New fields (7)
  • display_name Char
    compute='_compute_display_name' store=True args: 'Name'
  • http_session_id Many2one → auditlog.http.session
    string='Session' args: 'auditlog.http.session'
  • log_ids One2many → auditlog.log
    string='Logs' args: 'auditlog.log', 'http_request_id'
  • name Char
    args: 'Path'
  • root_url Char
    args: 'Root URL'
  • user_context Char
    args: 'Context'
  • user_id Many2one → res.users
    string='User' args: 'res.users'
Public methods (2)
  • current_http_request(self)
    @api.model
    Create a log corresponding to the current HTTP request, and returns its ID. This method can be called several times during the HTTP query/response cycle, it will only log the request on the first call. If no HTTP request is available, returns `False`.
  • name_get(self)
    @api.multi

New fields (4)
  • display_name Char
    compute='_compute_display_name' store=True args: 'Name'
  • http_request_ids One2many → auditlog.http.request
    string='HTTP Requests' args: 'auditlog.http.request', 'http_session_id'
  • name Char
    index=True args: 'Session ID'
  • user_id Many2one → res.users
    index=True string='User' args: 'res.users'
Public methods (2)
  • current_http_session(self)
    @api.model
    Create a log corresponding to the current HTTP user session, and returns its ID. This method can be called several times during the HTTP query/response cycle, it will only log the user session on the first call. If no HTTP user session is available, returns `False`.
  • name_get(self)
    @api.multi

New fields (9)
  • http_request_id Many2one → auditlog.http.request
    string='HTTP Request' args: 'auditlog.http.request'
  • http_session_id Many2one → auditlog.http.session
    string='Session' args: 'auditlog.http.session'
  • line_ids One2many → auditlog.log.line
    string='Fields updated' args: 'auditlog.log.line', 'log_id'
  • log_type Selection
    string='Type' args: [('full', 'Full log'), ('fast', 'Fast log')]
  • method Char
    size=64 args: 'Method'
  • model_id Many2one → ir.model
    string='Model' args: 'ir.model'
  • name Char
    size=64 args: 'Resource Name'
  • res_id Integer
    args: 'Resource ID'
  • user_id Many2one → res.users
    string='User' args: 'res.users'
Public methods (0)

No public methods.

New fields (8)
  • field_description Char
    related='field_id.field_description' args: 'Description'
  • field_id Many2one → ir.model.fields
    ondelete='cascade' required=True string='Field' args: 'ir.model.fields'
  • field_name Char
    related='field_id.name' args: 'Technical name'
  • log_id Many2one → auditlog.log
    index=True ondelete='cascade' string='Log' args: 'auditlog.log'
  • new_value Text
    args: 'New Value'
  • new_value_text Text
    args: 'New value Text'
  • old_value Text
    args: 'Old Value'
  • old_value_text Text
    args: 'Old value Text'
Public methods (0)

No public methods.

New fields (10)
  • action_id Many2one → ir.actions.act_window
    string='Action' args: 'ir.actions.act_window'
  • log_create Boolean
    default=True help='Select this if you want to keep track of creation on any record of the model of this rule' args: 'Log Creates'
  • log_read Boolean
    help='Select this if you want to keep track of read/open on any record of the model of this rule' args: 'Log Reads'
  • log_type Selection
    default='full' help='Full log: make a diff between the data before and after the operation (log more info like computed fields which were updated, but it is slower)\nFast log: only log the changes made through the create and write operations (less information, but it is faster)' required=True string='Type' args: [('full', 'Full log'), ('fast', 'Fast log')]
  • log_unlink Boolean
    default=True help='Select this if you want to keep track of deletion on any record of the model of this rule' args: 'Log Deletes'
  • log_write Boolean
    default=True help='Select this if you want to keep track of modification on any record of the model of this rule' args: 'Log Writes'
  • model_id Many2one → ir.model
    help='Select model for which you want to generate log.' required=True args: 'ir.model', 'Model'
  • name Char
    required=True size=32 args: 'Name'
  • state Selection
    default='draft' required=True string='State' args: [('draft', 'Draft'), ('subscribed', 'Subscribed')]
  • user_ids Many2many → res.users
    help='if User is not added then it will applicable for all users' string='Users' args: 'res.users', 'audittail_rules_users', 'user_id', 'rule_id'
Public methods (7)
  • create(self, vals)
    @api.model
    Update the registry when a new rule is created.
  • create_logs(self, uid, res_model, res_ids, method, old_values=None, new_values=None, additional_log_values=None)
    Create logs. `old_values` and `new_values` are dictionaries, e.g: {RES_ID: {'FIELD': VALUE, ...}}
  • get_auditlog_fields(self, model)
    @api.model
    Get the list of auditlog fields for a model By default it is all stored fields only, but you can override this.
  • subscribe(self)
    @api.multi
    Subscribe Rule for auditing changes on model and apply shortcut to view logs on that model.
  • unlink(self)
    @api.multi
    Unsubscribe rules before removing them.
  • unsubscribe(self)
    @api.multi
    Unsubscribe Auditing Rule on model.
  • write(self, vals)
    @api.multi
    Update the registry when existing rules are updated.
REPOSITORY
REPOSITORYOCA/server-tools
GIT
GIThttps://github.com/OCA/server-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-tools/tree/9.0/auditlog
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ABF OSIELL
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ABF OSIELL
COMMITTERS
COMMITTERSStefan Rijnhart, Pedro M. Baeza, sebalix, Stéphane Bidoul (ACSONE), OCA Transbot, oca-travis, Weblate
WEBSITE
WEBSITEhttp://www.osiell.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:15:22
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
view_auditlog_http_request_form auditlog.http.request.form auditlog.http.request form New
view_auditlog_http_request_search auditlog.http.request.search auditlog.http.request search New
view_auditlog_http_request_tree auditlog.http.request.tree auditlog.http.request tree New
view_auditlog_http_session_form auditlog.http.session.form auditlog.http.session form New
view_auditlog_http_session_search auditlog.http.session.search auditlog.http.session search New
view_auditlog_http_session_tree auditlog.http.session.tree auditlog.http.session tree New
view_auditlog_log_form auditlog.log.form auditlog.log form New
view_auditlog_log_search auditlog.log.search auditlog.log search New
view_auditlog_log_tree auditlog.log.tree auditlog.log tree New
view_auditlog_rule_form auditlog.rule.form auditlog.rule form New
view_auditlog_rule_search auditlog.rule.search auditlog.rule search New
view_auditlog_rule_tree auditlog.rule.tree auditlog.rule tree New
Models touched (6)

New fields (0)

No new fields.

Public methods (1)
  • autovacuum(self, days)
    @api.model
    Delete all logs older than ``days``. This includes: - CRUD logs (create, read, write, unlink) - HTTP requests - HTTP user sessions Called from a cron.

New fields (7)
  • display_name Char
    compute='_compute_display_name' args: 'Name'
  • http_session_id Many2one → auditlog.http.session
    string='Session' args: 'auditlog.http.session'
  • log_ids One2many → auditlog.log
    string='Logs' args: 'auditlog.log', 'http_request_id'
  • name Char
    args: 'Path'
  • root_url Char
    args: 'Root URL'
  • user_context Char
    args: 'Context'
  • user_id Many2one → res.users
    string='User' args: 'res.users'
Public methods (1)
  • current_http_request(self)
    @api.model
    Create a log corresponding to the current HTTP request, and returns its ID. This method can be called several times during the HTTP query/response cycle, it will only log the request on the first call. If no HTTP request is available, returns `False`.

New fields (4)
  • display_name Char
    compute='_compute_display_name' args: 'Name'
  • http_request_ids One2many → auditlog.http.request
    string='HTTP Requests' args: 'auditlog.http.request', 'http_session_id'
  • name Char
    index=True args: 'Session ID'
  • user_id Many2one → res.users
    index=True string='User' args: 'res.users'
Public methods (1)
  • current_http_session(self)
    @api.model
    Create a log corresponding to the current HTTP user session, and returns its ID. This method can be called several times during the HTTP query/response cycle, it will only log the user session on the first call. If no HTTP user session is available, returns `False`.

New fields (9)
  • http_request_id Many2one → auditlog.http.request
    string='HTTP Request' args: 'auditlog.http.request'
  • http_session_id Many2one → auditlog.http.session
    string='Session' args: 'auditlog.http.session'
  • line_ids One2many → auditlog.log.line
    string='Fields updated' args: 'auditlog.log.line', 'log_id'
  • log_type Selection
    string='Type' args: [('full', 'Full log'), ('fast', 'Fast log')]
  • method Char
    size=64 args: 'Method'
  • model_id Many2one → ir.model
    string='Model' args: 'ir.model'
  • name Char
    size=64 args: 'Resource Name'
  • res_id Integer
    args: 'Resource ID'
  • user_id Many2one → res.users
    string='User' args: 'res.users'
Public methods (0)

No public methods.

New fields (8)
  • field_description Char
    related='field_id.field_description' args: 'Description'
  • field_id Many2one → ir.model.fields
    ondelete='cascade' required=True string='Field' args: 'ir.model.fields'
  • field_name Char
    related='field_id.name' args: 'Technical name'
  • log_id Many2one → auditlog.log
    index=True ondelete='cascade' string='Log' args: 'auditlog.log'
  • new_value Text
    args: 'New Value'
  • new_value_text Text
    args: 'New value Text'
  • old_value Text
    args: 'Old Value'
  • old_value_text Text
    args: 'Old value Text'
Public methods (0)

No public methods.

New fields (10)
  • action_id Many2one → ir.actions.act_window
    string='Action' args: 'ir.actions.act_window'
  • log_create Boolean
    default=True help='Select this if you want to keep track of creation on any record of the model of this rule' args: 'Log Creates'
  • log_read Boolean
    help='Select this if you want to keep track of read/open on any record of the model of this rule' args: 'Log Reads'
  • log_type Selection
    default='full' help='Full log: make a diff between the data before and after the operation (log more info like computed fields which were updated, but it is slower)\nFast log: only log the changes made through the create and write operations (less information, but it is faster)' required=True string='Type' args: [('full', 'Full log'), ('fast', 'Fast log')]
  • log_unlink Boolean
    default=True help='Select this if you want to keep track of deletion on any record of the model of this rule' args: 'Log Deletes'
  • log_write Boolean
    default=True help='Select this if you want to keep track of modification on any record of the model of this rule' args: 'Log Writes'
  • model_id Many2one → ir.model
    help='Select model for which you want to generate log.' required=True args: 'ir.model', 'Model'
  • name Char
    required=True size=32 args: 'Name'
  • state Selection
    default='draft' required=True string='State' args: [('draft', 'Draft'), ('subscribed', 'Subscribed')]
  • user_ids Many2many → res.users
    help='if User is not added then it will applicable for all users' string='Users' args: 'res.users', 'audittail_rules_users', 'user_id', 'rule_id'
Public methods (6)
  • create(self, vals)
    @api.model
    Update the registry when a new rule is created.
  • create_logs(self, uid, res_model, res_ids, method, old_values=None, new_values=None, additional_log_values=None)
    Create logs. `old_values` and `new_values` are dictionaries, e.g: {RES_ID: {'FIELD': VALUE, ...}}
  • subscribe(self)
    @api.multi
    Subscribe Rule for auditing changes on model and apply shortcut to view logs on that model.
  • unlink(self)
    @api.multi
    Unsubscribe rules before removing them.
  • unsubscribe(self)
    @api.multi
    Unsubscribe Auditing Rule on model.
  • write(self, vals)
    @api.multi
    Update the registry when existing rules are updated.
REPOSITORY
REPOSITORYOCA/server-tools
GIT
GIThttps://github.com/OCA/server-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-tools/tree/8.0/auditlog
VERSION
VERSION 2.1.0
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ABF OSIELL
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ABF OSIELL
COMMITTERS
COMMITTERSStéphane Bidoul, Yannick Vaucher, Guewen Baconnier, Alexandre Fayolle, Stefan Rijnhart, Holger Brunn, Pedro M. Baeza, GitHub, sebalix, Stéphane Bidoul (ACSONE), Alejandro Santana, OCA Transbot, Sébastien Alix, Moises Lopez - https://www.vauxoo.com/, oca-travis, Weblate, OCA-git-bot, Tom Blauwendraat, Pieter Paulussen, Martin Schmid
WEBSITE
WEBSITEhttp://www.osiell.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:11:25
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - report
    - base
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (13)
XML IDNameModelTypeStatus
view_auditlog_http_request_form auditlog.http.request.form auditlog.http.request form New
view_auditlog_http_request_search auditlog.http.request.search auditlog.http.request search New
view_auditlog_http_request_tree auditlog.http.request.tree auditlog.http.request tree New
view_auditlog_http_session_form auditlog.http.session.form auditlog.http.session form New
view_auditlog_http_session_search auditlog.http.session.search auditlog.http.session search New
view_auditlog_http_session_tree auditlog.http.session.tree auditlog.http.session tree New
view_auditlog_log_form auditlog.log.form auditlog.log form New
view_auditlog_log_qweb view_auditlog_log_qweb ir.ui.view qweb New
view_auditlog_log_search auditlog.log.search auditlog.log search New
view_auditlog_log_tree auditlog.log.tree auditlog.log tree New
view_auditlog_rule_form auditlog.rule.form auditlog.rule form New
view_auditlog_rule_search auditlog.rule.search auditlog.rule search New
view_auditlog_rule_tree auditlog.rule.tree auditlog.rule tree New
Models touched (7)

New fields (0)

No new fields.

Public methods (1)
  • autovacuum(self, days)
    @api.model
    Delete all logs older than ``days``. This includes: - CRUD logs (create, read, write, unlink) - HTTP requests - HTTP user sessions Called from a cron.

New fields (7)
  • display_name Char
    compute='_compute_display_name' args: 'Name'
  • http_session_id Many2one → auditlog.http.session
    index=True string='Session' args: 'auditlog.http.session'
  • log_ids One2many → auditlog.log
    string='Logs' args: 'auditlog.log', 'http_request_id'
  • name Char
    args: 'Path'
  • root_url Char
    args: 'Root URL'
  • user_context Char
    args: 'Context'
  • user_id Many2one → res.users
    string='User' args: 'res.users'
Public methods (1)
  • current_http_request(self)
    @api.model
    Create a log corresponding to the current HTTP request, and returns its ID. This method can be called several times during the HTTP query/response cycle, it will only log the request on the first call. If no HTTP request is available, returns `False`.

New fields (4)
  • display_name Char
    compute='_compute_display_name' args: 'Name'
  • http_request_ids One2many → auditlog.http.request
    string='HTTP Requests' args: 'auditlog.http.request', 'http_session_id'
  • name Char
    index=True args: 'Session ID'
  • user_id Many2one → res.users
    index=True string='User' args: 'res.users'
Public methods (1)
  • current_http_session(self)
    @api.model
    Create a log corresponding to the current HTTP user session, and returns its ID. This method can be called several times during the HTTP query/response cycle, it will only log the user session on the first call. If no HTTP user session is available, returns `False`.

New fields (11)
  • http_request_id Many2one → auditlog.http.request
    index=True string='HTTP Request' args: 'auditlog.http.request'
  • http_session_id Many2one → auditlog.http.session
    index=True string='Session' args: 'auditlog.http.session'
  • line_ids One2many → auditlog.log.line
    string='Fields updated' args: 'auditlog.log.line', 'log_id'
  • log_type Selection
    string='Type' args: [('full', 'Full log'), ('fast', 'Fast log')]
  • method Char
    size=64 args: 'Method'
  • model_id Many2one → ir.model
    index=True on_delete='set null' string='Model' args: 'ir.model'
  • model_model Char
    string='Technical Model Name'
  • model_name Char
    string='Model Name'
  • name Char
    size=64 args: 'Resource Name'
  • res_id Integer
    args: 'Resource ID'
  • user_id Many2one → res.users
    string='User' args: 'res.users'
Public methods (2)
  • create(self, vals)
    @api.model
    Insert model_name and model_model field values upon creation.
  • write(self, vals)
    @api.multi
    Update model_name and model_model field values to reflect model_id changes.

New fields (8)
  • field_description Char
    args: 'Description'
  • field_id Many2one → ir.model.fields
    index=True ondelete='set null' string='Field' args: 'ir.model.fields'
  • field_name Char
    args: 'Technical name'
  • log_id Many2one → auditlog.log
    index=True ondelete='cascade' string='Log' args: 'auditlog.log'
  • new_value Text
    args: 'New Value'
  • new_value_text Text
    args: 'New value Text'
  • old_value Text
    args: 'Old Value'
  • old_value_text Text
    args: 'Old value Text'
Public methods (2)
  • create(self, vals)
    @api.model
    Ensure field_id is not empty on creation and store field_name and field_description.
  • write(self, vals)
    @api.multi
    Ensure field_id is set during write and update field_name and field_description values.

New fields (5)
  • context_field_number Integer
    default=0
  • message Char
    required=True
  • name Char
    required=True
  • rule_id Many2one → auditlog.rule
    readonly=True args: 'auditlog.rule'
  • use_active_ids Boolean
    default=False
Public methods (0)

No public methods.

New fields (14)
  • action_id Many2one → ir.actions.act_window
    string='Action' args: 'ir.actions.act_window'
  • custom_method_ids One2many → auditlog.methods
    args: 'auditlog.methods', 'rule_id'
  • log_create Boolean
    default=True help='Select this if you want to keep track of creation on any record of the model of this rule' args: 'Log Creates'
  • log_custom_method Boolean
    help='Select this if you want to keep track of custom methods on any record of the model of this rule' args: 'Log Methods'
  • log_read Boolean
    help='Select this if you want to keep track of read/open on any record of the model of this rule' args: 'Log Reads'
  • log_type Selection
    default='full' help='Full log: make a diff between the data before and after the operation (log more info like computed fields which were updated, but it is slower)\nFast log: only log the changes made through the create and write operations (less information, but it is faster)' required=True string='Type' args: [('full', 'Full log'), ('fast', 'Fast log')]
  • log_unlink Boolean
    default=True help='Select this if you want to keep track of deletion on any record of the model of this rule' args: 'Log Deletes'
  • log_write Boolean
    default=True help='Select this if you want to keep track of modification on any record of the model of this rule' args: 'Log Writes'
  • model_id Many2one → ir.model
    help='Select model for which you want to generate log.' index=True on_delete='set null' args: 'ir.model', 'Model'
  • model_model Char
    string='Technical Model Name'
  • model_name Char
    string='Model Name'
  • name Char
    required=True size=32 args: 'Name'
  • state Selection
    default='draft' required=True string='State' args: [('draft', 'Draft'), ('subscribed', 'Subscribed')]
  • user_ids Many2many → res.users
    help='if User is not added then it will applicable for all users' string='Users' args: 'res.users', 'audittail_rules_users', 'user_id', 'rule_id'
Public methods (7)
  • create(self, cr, uid, vals, context=None)
    Update the registry when a new rule is created.
  • create_logs(self, uid, res_model, res_ids, method, old_values=None, new_values=None, additional_log_values=None)
    Create logs. `old_values` and `new_values` are dictionnaries, e.g: {RES_ID: {'FIELD': VALUE, ...}}
  • get_auditlog_fields(self, model)
    @api.model
    Get the list of auditlog fields for a model By default it is all stored fields only, but you can override this.
  • subscribe(self)
    @api.multi
    Subscribe Rule for auditing changes on model and apply shortcut to view logs on that model.
  • unlink(self)
    @api.multi
    Unsubscribe rules before removing them.
  • unsubscribe(self)
    @api.multi
    Unsubscribe Auditing Rule on model.
  • write(self, cr, uid, ids, vals, context=None)
    Update the registry when existing rules are updated.