diff --git a/base_exception_user/__init__.py b/base_exception_user/__init__.py
new file mode 100644
index 00000000..9b429614
--- /dev/null
+++ b/base_exception_user/__init__.py
@@ -0,0 +1,2 @@
+from . import models
+from . import wizard
diff --git a/base_exception_user/__manifest__.py b/base_exception_user/__manifest__.py
new file mode 100644
index 00000000..e4f0a669
--- /dev/null
+++ b/base_exception_user/__manifest__.py
@@ -0,0 +1,24 @@
+# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
+
+{
+ 'name': 'Exception Rule User',
+ 'version': '13.0.1.0.0',
+ 'author': 'Hibou Corp.',
+ 'license': 'OPL-1',
+ 'category': 'Generic Modules',
+ 'summary': 'Allow users to ignore exceptions',
+ 'description': """
+Allow users to ignore exceptions
+""",
+ 'website': 'https://hibou.io/',
+ 'depends': [
+ 'base_exception',
+ ],
+ 'data': [
+ 'security/base_exception_security.xml',
+ 'views/base_exception_views.xml',
+ 'wizard/base_exception_confirm_view.xml',
+ ],
+ 'installable': True,
+ 'auto_install': False,
+}
diff --git a/base_exception_user/models/__init__.py b/base_exception_user/models/__init__.py
new file mode 100644
index 00000000..495e1fe2
--- /dev/null
+++ b/base_exception_user/models/__init__.py
@@ -0,0 +1 @@
+from . import base_exception
diff --git a/base_exception_user/models/base_exception.py b/base_exception_user/models/base_exception.py
new file mode 100644
index 00000000..46453bce
--- /dev/null
+++ b/base_exception_user/models/base_exception.py
@@ -0,0 +1,7 @@
+from odoo import models, fields
+
+
+class ExceptionRule(models.Model):
+ _inherit = 'exception.rule'
+
+ allow_user_ignore = fields.Boolean('Allow User Ignore')
diff --git a/base_exception_user/security/base_exception_security.xml b/base_exception_user/security/base_exception_security.xml
new file mode 100644
index 00000000..0dfbf591
--- /dev/null
+++ b/base_exception_user/security/base_exception_security.xml
@@ -0,0 +1,13 @@
+
+
Exceptions ignored:
' + exceptions_summary + self.related_model_id.message_post(body=msg) + return super().action_confirm() + + + def action_ignore(self): + self.ensure_one() + if self.show_ignore_button: + if 'message_ids' in self.related_model_id: + msg = 'Exceptions ignored:
' + self.related_model_id.exceptions_summary + self.related_model_id.message_post(body=msg) + return self._action_ignore() + return False + + def _action_ignore(self): + return {'type': 'ir.actions.act_window_close'} diff --git a/base_exception_user/wizard/base_exception_confirm_view.xml b/base_exception_user/wizard/base_exception_confirm_view.xml new file mode 100644 index 00000000..4252ff15 --- /dev/null +++ b/base_exception_user/wizard/base_exception_confirm_view.xml @@ -0,0 +1,18 @@ + +