odoo-addon-base-tier-validation 17.0.2.3.2.1__py3-none-any.whl → 18.0.1.0.0.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. odoo/addons/base_tier_validation/README.rst +14 -6
  2. odoo/addons/base_tier_validation/__manifest__.py +3 -7
  3. odoo/addons/base_tier_validation/data/cron_data.xml +0 -2
  4. odoo/addons/base_tier_validation/i18n/base_tier_validation.pot +7 -63
  5. odoo/addons/base_tier_validation/i18n/es.po +0 -2
  6. odoo/addons/base_tier_validation/i18n/es_MX.po +0 -2
  7. odoo/addons/base_tier_validation/i18n/fr.po +0 -2
  8. odoo/addons/base_tier_validation/i18n/it.po +0 -2
  9. odoo/addons/base_tier_validation/i18n/nl_NL.po +0 -2
  10. odoo/addons/base_tier_validation/i18n/sv.po +0 -2
  11. odoo/addons/base_tier_validation/i18n/tr.po +0 -2
  12. odoo/addons/base_tier_validation/i18n/zh_CN.po +0 -2
  13. odoo/addons/base_tier_validation/models/res_users.py +20 -14
  14. odoo/addons/base_tier_validation/models/tier_definition.py +14 -12
  15. odoo/addons/base_tier_validation/models/tier_review.py +15 -19
  16. odoo/addons/base_tier_validation/models/tier_validation.py +58 -57
  17. odoo/addons/base_tier_validation/models/tier_validation_exception.py +16 -14
  18. odoo/addons/base_tier_validation/readme/CONTRIBUTORS.md +2 -0
  19. odoo/addons/base_tier_validation/readme/CREDITS.md +1 -0
  20. odoo/addons/base_tier_validation/security/ir.model.access.csv +1 -1
  21. odoo/addons/base_tier_validation/security/tier_validation_security.xml +2 -6
  22. odoo/addons/base_tier_validation/static/description/index.html +14 -6
  23. odoo/addons/base_tier_validation/static/src/components/tier_review_menu/tier_review_menu.esm.js +18 -17
  24. odoo/addons/base_tier_validation/static/src/components/tier_review_menu/tier_review_menu.xml +46 -38
  25. odoo/addons/base_tier_validation/static/src/components/tier_review_widget/tier_review_widget.esm.js +17 -17
  26. odoo/addons/base_tier_validation/static/src/components/tier_review_widget/tier_review_widget.scss +1 -1
  27. odoo/addons/base_tier_validation/static/src/components/tier_review_widget/tier_review_widget.xml +25 -37
  28. odoo/addons/base_tier_validation/static/src/js/services/tier_review_service.esm.js +3 -4
  29. odoo/addons/base_tier_validation/templates/tier_validation_templates.xml +41 -50
  30. odoo/addons/base_tier_validation/tests/common.py +3 -6
  31. odoo/addons/base_tier_validation/views/tier_definition_view.xml +7 -11
  32. odoo/addons/base_tier_validation/views/tier_review_view.xml +3 -3
  33. odoo/addons/base_tier_validation/views/tier_validation_exception_view.xml +4 -5
  34. {odoo_addon_base_tier_validation-17.0.2.3.2.1.dist-info → odoo_addon_base_tier_validation-18.0.1.0.0.3.dist-info}/METADATA +17 -9
  35. {odoo_addon_base_tier_validation-17.0.2.3.2.1.dist-info → odoo_addon_base_tier_validation-18.0.1.0.0.3.dist-info}/RECORD +37 -36
  36. {odoo_addon_base_tier_validation-17.0.2.3.2.1.dist-info → odoo_addon_base_tier_validation-18.0.1.0.0.3.dist-info}/WHEEL +0 -0
  37. {odoo_addon_base_tier_validation-17.0.2.3.2.1.dist-info → odoo_addon_base_tier_validation-18.0.1.0.0.3.dist-info}/top_level.txt +0 -0
@@ -2,62 +2,70 @@
2
2
  <templates xml:space="preserve">
3
3
 
4
4
  <t t-name="base_tier_validation.TierReviewMenu">
5
- <Dropdown
5
+ <Dropdown
6
6
  position="'bottom-end'"
7
- beforeOpen.bind="onBeforeOpen"
8
- autoOpen="false"
7
+ state="dropdown"
8
+ beforeOpen.bind="fetchSystrayReviewer"
9
9
  menuClass="discussSystray.menuClass"
10
- class="discussSystray.class"
11
10
  >
12
- <t t-set-slot="toggler">
13
- <i class="fa fa-lg fa-pencil-square-o" role="img" aria-label="Reviews" />
11
+ <button>
12
+ <i
13
+ class="fa fa-lg fa-pencil-square-o"
14
+ role="img"
15
+ aria-label="Reviews"
16
+ />
14
17
  <span
15
- t-if="store.tierReviewCounter > 0"
18
+ t-if="store.tierReviewCounter"
16
19
  class="o-mail-ActivityMenu-counter badge rounded-pill"
17
- t-out="store.tierReviewCounter"
18
- />
19
- </t>
20
- <t t-set-slot="default">
21
- <div t-att-class="`${discussSystray.contentClass} o-mail-ActivityMenu`">
22
- <div
20
+ >
21
+ <t t-out="store.tierReviewCounter" />
22
+ </span>
23
+ </button>
24
+ <t t-set-slot="content">
25
+ <div t-att-class="`${discussSystray.contentClass} o-mail-ActivityMenu`">
26
+ <div
23
27
  t-if="store.tierReviewCounter === 0"
24
28
  class="o-mail-ActivityMenu-empty align-items-center text-muted p-2 opacity-50 d-flex justify-content-center"
25
29
  >
26
- <span>No reviews to do.</span>
27
- </div>
28
- <div class="d-flex flex-column list-group-flush" name="activityGroups">
29
- <t
30
+ <span>No reviews to do.</span>
31
+ </div>
32
+ <div
33
+ class="d-flex flex-column list-group-flush"
34
+ name="reviewGroups"
35
+ >
36
+ <t
30
37
  t-foreach="store.tierReviewGroups"
31
- t-as="group"
32
- t-key="group_index"
33
- name="activityGroupLoop"
38
+ t-as="review"
39
+ t-key="review_index"
40
+ name="reviewGroupLoop"
34
41
  >
35
- <div
42
+ <div
36
43
  class="o-mail-ActivityGroup list-group-item list-group-item-action d-flex p-2 cursor-pointer"
37
- t-att-data-model_name="group.model"
38
- t-on-click="() => this.openReviewGroup(group)"
44
+ t-att-data-model_name="review.model"
45
+ t-on-click="() => this.openReviewGroup(review)"
39
46
  >
40
- <img alt="Activity" t-att-src="group.icon" />
41
- <div class="flex-grow-1 overflow-hidden">
42
- <div
47
+ <img alt="Review" t-att-src="review.icon" />
48
+ <div class="flex-grow-1 overflow-hidden">
49
+ <div
43
50
  class="d-flex px-2"
44
- name="activityTitle"
45
- t-out="group.name"
51
+ name="reviewTitle"
52
+ t-out="review.name"
46
53
  />
47
- <div class="d-flex">
48
- <span
49
- t-attf-class="#{group.pending_count ? '' : 'text-muted'} py-0 px-2"
54
+ <div class="d-flex">
55
+ <span
56
+ t-attf-class="#{review.pending_count ? 'btn btn-link' : 'text-muted'} py-0 px-2 text-truncate"
57
+ t-on-click.stop="() => this.openReviewGroup(review)"
50
58
  >
51
- <t t-out="group.pending_count" /> Pending
59
+ <t t-out="review.pending_count" /> Pending
52
60
  </span>
61
+ </div>
53
62
  </div>
54
63
  </div>
55
- </div>
56
- </t>
64
+ </t>
65
+ </div>
57
66
  </div>
58
- </div>
59
- </t>
60
- </Dropdown>
61
- </t>
67
+ </t>
68
+ </Dropdown>
69
+ </t>
62
70
 
63
71
  </templates>
@@ -1,33 +1,33 @@
1
- /** @odoo-module **/
2
-
1
+ import {Component, useState} from "@odoo/owl";
3
2
  import {registry} from "@web/core/registry";
4
-
5
3
  import {useService} from "@web/core/utils/hooks";
6
4
 
7
- const {Component} = owl;
8
-
9
5
  export class ReviewsTable extends Component {
10
6
  setup() {
11
- this.collapse = false;
7
+ super.setup();
12
8
  this.orm = useService("orm");
13
- this.reviews = [];
9
+ this.state = useState({
10
+ collapse: false,
11
+ });
14
12
  }
13
+
15
14
  _getReviewData() {
16
15
  const records = this.env.model.root.data.review_ids.records;
17
- const reviews = [];
18
- for (var i = 0; i < records.length; i++) {
19
- reviews.push(records[i].data);
20
- }
21
- return reviews;
16
+ return records.map((record) => record.data);
22
17
  }
18
+
23
19
  onToggleCollapse(ev) {
24
- var $panelHeading = $(ev.currentTarget).closest(".panel-heading");
25
- if (this.collapse) {
26
- $panelHeading.next("div#collapse1").hide();
20
+ const panelHeading = ev.currentTarget.closest(".panel-heading");
21
+ const collapseDiv = panelHeading.nextElementSibling.matches("div#collapse1")
22
+ ? panelHeading.nextElementSibling
23
+ : null;
24
+ if (!collapseDiv) return;
25
+ if (this.state.collapse) {
26
+ collapseDiv.style.display = "none";
27
27
  } else {
28
- $panelHeading.next("div#collapse1").show();
28
+ collapseDiv.style.display = "block";
29
29
  }
30
- this.collapse = !this.collapse;
30
+ this.state.collapse = !this.state.collapse;
31
31
  }
32
32
  }
33
33
 
@@ -14,7 +14,7 @@ ul.o_review {
14
14
  }
15
15
 
16
16
  .panel {
17
- border: 0px !important;
17
+ border: 0 !important;
18
18
  }
19
19
 
20
20
  .panel-body {
@@ -7,7 +7,7 @@
7
7
  <h4 class="panel-title">
8
8
  <a
9
9
  class="o_info_btn"
10
- data-toggle="collapse"
10
+ data-toggle="state.collapse"
11
11
  href="#"
12
12
  data-target="#collapse1"
13
13
  t-on-click="onToggleCollapse"
@@ -27,32 +27,20 @@
27
27
  >Sequence</th>
28
28
  <th
29
29
  name="th_requested_by"
30
- class="text-left"
30
+ class="text-start"
31
31
  >Requested by</th>
32
- <th
33
- name="th_name"
34
- class="text-right"
35
- >Description</th>
32
+ <th name="th_name" class="text-end">Description</th>
36
33
  <th
37
34
  name="th_display_status"
38
- class="text-right"
35
+ class="text-end"
39
36
  >Status</th>
40
- <th
41
- name="th_todo_by"
42
- class="text-right"
43
- >Todo by</th>
44
- <th
45
- name="th_done_by"
46
- class="text-right"
47
- >Done by</th>
37
+ <th name="th_todo_by" class="text-end">Todo by</th>
38
+ <th name="th_done_by" class="text-end">Done by</th>
48
39
  <th
49
40
  name="th_reviewed_date"
50
- class="text-right"
41
+ class="text-end"
51
42
  >Validation Date</th>
52
- <th
53
- name="th_comment"
54
- class="text-right"
55
- >Comment</th>
43
+ <th name="th_comment" class="text-end">Comment</th>
56
44
  </tr>
57
45
  </thead>
58
46
  <tbody class="sale_tbody">
@@ -74,42 +62,42 @@
74
62
  <t
75
63
  t-if="review.status == 'approved'"
76
64
  t-set="status_class"
77
- t-value="'alert-success'"
65
+ t-value="'alert alert-success'"
78
66
  />
79
67
  <t
80
68
  t-if="review.status == 'rejected'"
81
69
  t-set="status_class"
82
- t-value="'alert-danger'"
70
+ t-value="'alert alert-danger'"
83
71
  />
84
72
  <tr t-att-class="status_class">
85
73
  <td name="td_sequence" class="text-center">
86
- <span t-esc="review.sequence" />
74
+ <span t-out="review.sequence" />
87
75
  </td>
88
- <td name="td_requested_by" class="text-left">
89
- <span t-esc="review.requested_by[1]" />
76
+ <td name="td_requested_by" class="text-start">
77
+ <span t-out="review.requested_by[1]" />
90
78
  </td>
91
- <td name="td_name" class="text-right">
92
- <span t-esc="review.name" />
79
+ <td name="td_name" class="text-end">
80
+ <span t-out="review.name" />
93
81
  </td>
94
- <td name="td_display_status" class="text-right">
95
- <span t-esc="review.display_status" />
82
+ <td name="td_display_status" class="text-end">
83
+ <span t-out="review.display_status" />
96
84
  </td>
97
- <td name="td_todo_by" class="text-right">
98
- <span t-esc="review.todo_by" />
85
+ <td name="td_todo_by" class="text-end">
86
+ <span t-out="review.todo_by" />
99
87
  </td>
100
- <td name="td_done_by" class="text-right">
101
- <span t-esc="review.done_by[1]" />
88
+ <td name="td_done_by" class="text-end">
89
+ <span t-out="review.done_by[1]" />
102
90
  </td>
103
- <td name="td_reviewed_date" class="text-right">
91
+ <td name="td_reviewed_date" class="text-end">
104
92
  <t t-if="review.reviewed_formated_date">
105
93
  <span
106
- t-esc="review.reviewed_formated_date"
94
+ t-out="review.reviewed_formated_date"
107
95
  />
108
96
  </t>
109
97
  </td>
110
- <td name="td_comment" class="text-left">
98
+ <td name="td_comment" class="text-start">
111
99
  <t t-if="review.comment">
112
- <span t-esc="review.comment" />
100
+ <span t-out="review.comment" />
113
101
  </t>
114
102
  </td>
115
103
  </tr>
@@ -1,5 +1,4 @@
1
- /** @odoo-module **/
2
-
1
+ import {reactive} from "@odoo/owl";
3
2
  import {registry} from "@web/core/registry";
4
3
 
5
4
  export class TierReviewService {
@@ -25,8 +24,8 @@ export const tierReviewService = {
25
24
  dependencies: ["bus_service", "mail.store"],
26
25
 
27
26
  start(env, services) {
28
- const tier_review_service = new TierReviewService(env, services);
29
- tier_review_service.setup(env, services);
27
+ const tier_review_service = reactive(new TierReviewService(env, services));
28
+ tier_review_service.setup();
30
29
  return tier_review_service;
31
30
  },
32
31
  };
@@ -18,66 +18,58 @@
18
18
  </template>
19
19
  <template id="tier_validation_label">
20
20
  <div>
21
- <field name="hide_reviews" invisible="1" />
22
- <field name="need_validation" invisible="1" />
23
- <field name="validated" invisible="1" />
24
- <field name="rejected" invisible="1" />
25
- <div
26
- class="alert alert-warning"
21
+ <div
22
+ class="alert alert-warning mb-0"
27
23
  role="alert"
28
24
  t-attf-invisible="validated or hide_reviews or rejected or not review_ids"
29
- style="margin-bottom:0px;"
30
25
  >
31
- <p>
26
+ <p class="mb-1">
32
27
  <i class="fa fa-lg fa-info-circle" />
33
28
  This Record needs to be
34
29
  validated.
35
- <field name="can_review" invisible="1" />
36
30
  <button
37
- name="validate_tier"
38
- string="Validate"
39
- invisible="not can_review"
40
- type="object"
41
- class="btn-icon me-1 btn-success"
42
- icon="fa-thumbs-up"
43
- />
31
+ name="validate_tier"
32
+ string="Validate"
33
+ invisible="not can_review"
34
+ type="object"
35
+ class="btn-icon me-1 btn-success"
36
+ icon="fa-thumbs-up"
37
+ />
44
38
  <button
45
- name="reject_tier"
46
- string="Reject"
47
- invisible="not can_review"
48
- type="object"
49
- class="btn-icon me-1 btn-danger"
50
- icon="fa-thumbs-down"
51
- />
39
+ name="reject_tier"
40
+ string="Reject"
41
+ invisible="not can_review"
42
+ type="object"
43
+ class="btn-icon btn-danger"
44
+ icon="fa-thumbs-down"
45
+ />
52
46
  <br /><field name="next_review" readonly="1" />
53
47
  </p>
54
- </div>
55
- <div
56
- class="alert alert-success"
48
+ </div>
49
+ <div
50
+ class="alert alert-success mb-0"
57
51
  role="alert"
58
- t-attf-invisible="validated != True or hide_reviews or not review_ids"
59
- style="margin-bottom:0px;"
52
+ t-attf-invisible="not validated or hide_reviews or not review_ids"
60
53
  >
61
- <p>
54
+ <p class="mb-1">
62
55
  <i class="fa fa-lg fa-thumbs-up" />
63
56
  Operation has been
64
57
  <b>validated</b>
65
58
  !
66
59
  </p>
67
- </div>
68
- <div
69
- class="alert alert-danger"
60
+ </div>
61
+ <div
62
+ class="alert alert-danger mb-0"
70
63
  role="alert"
71
64
  t-attf-invisible="not rejected or hide_reviews or not review_ids"
72
- style="margin-bottom:0px;"
73
65
  >
74
- <p>
66
+ <p class="mb-1">
75
67
  <i class="fa fa-lg fa-thumbs-down" />
76
68
  Operation has been
77
69
  <b>rejected</b>
78
70
  .
79
71
  </p>
80
- </div>
72
+ </div>
81
73
  </div>
82
74
  </template>
83
75
  <template id="tier_validation_reviews">
@@ -85,21 +77,20 @@
85
77
  name="review_ids"
86
78
  widget="tier_validation"
87
79
  invisible="not review_ids"
88
- style="width:100%%; margin-top: 10px;"
80
+ class="w-100 mt-1"
89
81
  >
90
- <tree>
91
- <field name="id" />
92
- <field name="name" />
93
- <field name="sequence" />
94
- <field name="requested_by" />
95
- <field name="status" />
96
- <field name="display_status" />
97
- <field name="todo_by" />
98
- <field name="done_by" />
99
- <field name="reviewed_date" />
100
- <field name="reviewed_formated_date" />
101
- <field name="comment" />
102
- </tree>
103
- </field>
82
+ <list>
83
+ <field name="name" />
84
+ <field name="sequence" />
85
+ <field name="requested_by" />
86
+ <field name="status" />
87
+ <field name="display_status" />
88
+ <field name="todo_by" />
89
+ <field name="done_by" />
90
+ <field name="reviewed_date" />
91
+ <field name="reviewed_formated_date" />
92
+ <field name="comment" />
93
+ </list>
94
+ </field>
104
95
  </template>
105
96
  </odoo>
@@ -3,16 +3,13 @@
3
3
 
4
4
  from odoo_test_helper import FakeModelLoader
5
5
 
6
- from odoo.tests import common
6
+ from odoo.addons.base.tests.common import BaseCommon
7
7
 
8
- from odoo.addons.base.tests.common import DISABLED_MAIL_CONTEXT
9
8
 
10
-
11
- class CommonTierValidation(common.TransactionCase):
9
+ class CommonTierValidation(BaseCommon):
12
10
  @classmethod
13
11
  def setUpClass(cls):
14
12
  super().setUpClass()
15
- cls.env = cls.env(context=dict(cls.env.context, **DISABLED_MAIL_CONTEXT))
16
13
  cls.loader = FakeModelLoader(cls.env, cls.__module__)
17
14
  cls.loader.backup_registry()
18
15
  from .tier_validation_tester import (
@@ -164,4 +161,4 @@ class CommonTierValidation(common.TransactionCase):
164
161
  @classmethod
165
162
  def tearDownClass(cls):
166
163
  cls.loader.restore_registry()
167
- return super().tearDownClass()
164
+ super().tearDownClass()
@@ -3,10 +3,10 @@
3
3
  License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
4
4
  <odoo>
5
5
  <record id="tier_definition_view_tree" model="ir.ui.view">
6
- <field name="name">tier.definition.tree</field>
6
+ <field name="name">tier.definition.list</field>
7
7
  <field name="model">tier.definition</field>
8
8
  <field name="arch" type="xml">
9
- <tree>
9
+ <list>
10
10
  <field name="sequence" widget="handle" />
11
11
  <field name="model_id" />
12
12
  <field name="name" />
@@ -23,7 +23,7 @@
23
23
  optional="hide"
24
24
  />
25
25
  <field name="active" />
26
- </tree>
26
+ </list>
27
27
  </field>
28
28
  </record>
29
29
  <record id="tier_definition_view_form" model="ir.ui.view">
@@ -50,7 +50,6 @@
50
50
  </h1>
51
51
  </div>
52
52
  <group>
53
- <field name="active" invisible="1" />
54
53
  <group name="left">
55
54
  <field name="model_id" options="{'no_create': True}" />
56
55
  <field name="model" invisible="1" />
@@ -69,7 +68,6 @@
69
68
  invisible="review_type != 'field'"
70
69
  options="{'no_create': True}"
71
70
  />
72
- <field name="valid_reviewer_field_ids" invisible="1" />
73
71
  </group>
74
72
  <group name="right">
75
73
  <field
@@ -78,18 +76,16 @@
78
76
  options="{'no_create': True}"
79
77
  />
80
78
  <field name="sequence" />
81
-
82
79
  <field name="approve_sequence" />
83
80
  <label
84
81
  for="approve_sequence_bypass"
85
82
  class="o_form_label"
86
- invisible="approve_sequence == False"
83
+ invisible="not approve_sequence"
87
84
  />
88
-
89
85
  <div
90
86
  name="approve_sequence_bypass_div"
91
87
  class="o_wrap_field d-flex d-sm-contents flex-column mb-3 mb-sm-0"
92
- invisible="approve_sequence == False"
88
+ invisible="not approve_sequence"
93
89
  >
94
90
  <field name="approve_sequence_bypass" />
95
91
  <span
@@ -141,7 +137,7 @@
141
137
  <filter
142
138
  string="All"
143
139
  name="all"
144
- domain="['|', ('active', '=', False), ('active', '=', True)]"
140
+ domain="[('active', 'in', (False, True))]"
145
141
  />
146
142
  <group expand="0" string="Group By">
147
143
  <filter
@@ -158,7 +154,7 @@
158
154
  <field name="name">Tier Definition</field>
159
155
  <field name="type">ir.actions.act_window</field>
160
156
  <field name="res_model">tier.definition</field>
161
- <field name="view_mode">tree,form</field>
157
+ <field name="view_mode">list,form</field>
162
158
  <field name="context">{'search_default_all': 1}</field>
163
159
  </record>
164
160
  <menuitem
@@ -3,10 +3,10 @@
3
3
  License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
4
4
  <odoo>
5
5
  <record id="tier_review_view_tree" model="ir.ui.view">
6
- <field name="name">tier.review.tree</field>
6
+ <field name="name">tier.review.list</field>
7
7
  <field name="model">tier.review</field>
8
8
  <field name="arch" type="xml">
9
- <tree
9
+ <list
10
10
  decoration-danger="status=='rejected'"
11
11
  decoration-success="status=='approved'"
12
12
  >
@@ -19,7 +19,7 @@
19
19
  <field name="done_by" />
20
20
  <field name="reviewed_date" />
21
21
  <field name="comment" />
22
- </tree>
22
+ </list>
23
23
  </field>
24
24
  </record>
25
25
  </odoo>
@@ -3,10 +3,10 @@
3
3
  License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
4
4
  <odoo>
5
5
  <record id="tier_validation_exception_tree" model="ir.ui.view">
6
- <field name="name">tier.validation.exception.tree</field>
6
+ <field name="name">tier.validation.exception.list</field>
7
7
  <field name="model">tier.validation.exception</field>
8
8
  <field name="arch" type="xml">
9
- <tree>
9
+ <list>
10
10
  <field name="name" />
11
11
  <field name="model_id" />
12
12
  <field name="field_ids" widget="many2many_tags" optional="show" />
@@ -14,7 +14,7 @@
14
14
  <field name="allowed_to_write_under_validation" />
15
15
  <field name="allowed_to_write_after_validation" />
16
16
  <field name="group_ids" widget="many2many_tags" />
17
- </tree>
17
+ </list>
18
18
  </field>
19
19
  </record>
20
20
 
@@ -36,7 +36,6 @@
36
36
  name="model_id"
37
37
  options="{'no_create': True, 'no_open': True}"
38
38
  />
39
- <field name="valid_model_field_ids" invisible="1" />
40
39
  <field
41
40
  name="field_ids"
42
41
  widget="many2many_tags"
@@ -101,7 +100,7 @@
101
100
  <field name="name">Tier Validation Exception</field>
102
101
  <field name="type">ir.actions.act_window</field>
103
102
  <field name="res_model">tier.validation.exception</field>
104
- <field name="view_mode">tree,form</field>
103
+ <field name="view_mode">list,form</field>
105
104
  <field name="help" type="html">
106
105
  <p
107
106
  class="o_view_nocontent_smiling_face"