Skip to content

Commit b7deff0

Browse files
committed
⬆️ sync: update automation views
1 parent c984882 commit b7deff0

File tree

1 file changed

+220
-64
lines changed

1 file changed

+220
-64
lines changed

sync/views/sync_trigger_automation_views.xml

Lines changed: 220 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -20,74 +20,230 @@
2020
<field name="model">sync.trigger.automation</field>
2121
<field name="arch" type="xml">
2222
<form>
23-
<div class="oe_button_box" name="button_box">
24-
<button
25-
name="toggle_active"
26-
type="object"
27-
class="oe_stat_button"
28-
icon="fa-archive"
29-
>
23+
<!--
24+
<div class="oe_button_box" name="button_box">
25+
<button name="action_view_webhook_logs" type="object" string="Logs" class="oe_stat_button" icon="fa-list" invisible="trigger != 'on_webhook'">
26+
</button>
27+
</div>
28+
-->
29+
<field name="active" invisible="1" />
30+
<field name="model_name" invisible="1" force_save="True" />
31+
<widget
32+
name="web_ribbon"
33+
title="Archived"
34+
bg_color="bg-danger"
35+
invisible="active"
36+
/>
37+
<div class="oe_title">
38+
<h1>
39+
<field name="trigger_name" placeholder="e.g. Support flow" />
40+
</h1>
41+
<field name="sync_task_id" invisible="1" />
42+
</div>
43+
<group
44+
groups="!base.group_no_one"
45+
invisible="context.get('default_model_id')"
46+
>
47+
<group>
48+
<field name="model_id" options="{'no_create': True}" />
49+
</group>
50+
</group>
51+
<group groups="base.group_no_one">
52+
<group>
53+
<field name="model_id" options="{'no_create': True}" />
54+
</group>
55+
</group>
56+
<group invisible="not model_id">
57+
<group>
58+
<label for="trigger" />
59+
<div>
60+
<div class="d-flex flex-row">
61+
<field
62+
name="trigger"
63+
widget="base_automation_trigger_selection"
64+
class="oe_inline me-3"
65+
/>
66+
<field
67+
name="trg_selection_field_id"
68+
placeholder="Select a value..."
69+
class="oe_inline"
70+
options="{'no_open': True, 'no_create': True}"
71+
invisible="trigger not in ['on_state_set', 'on_priority_set']"
72+
required="trigger in ['on_state_set', 'on_priority_set']"
73+
/>
74+
<field
75+
name="trg_field_ref"
76+
placeholder="Select a value..."
77+
class="oe_inline"
78+
widget="base_automation_trigger_reference"
79+
invisible="trigger not in ['on_stage_set', 'on_tag_set']"
80+
required="trigger in ['on_stage_set', 'on_tag_set']"
81+
/>
82+
<field name="trg_field_ref_model_name" invisible="1" />
83+
<field
84+
name="trg_field_ref_display_name"
85+
invisible="1"
86+
/>
87+
<field
88+
name="trg_date_id"
89+
class="oe_inline"
90+
string="Date Field"
91+
options="{'no_open': True, 'no_create': True}"
92+
invisible="trigger != 'on_time'"
93+
required="trigger in ['on_time', 'on_time_created', 'on_time_updated']"
94+
/>
95+
</div>
96+
<div class="text-muted" invisible="trigger != 'on_change'">
97+
<i class="fa fa-warning" />
98+
Automation rules triggered by UI changes will be
99+
executed
100+
<em>every time</em>
101+
the watched fields change,
102+
<em>whether you save or not</em>
103+
.
104+
</div>
105+
</div>
106+
<!--
107+
<label for="url" string="URL" invisible="trigger != 'on_webhook'"/>
108+
<div invisible="trigger != 'on_webhook'">
109+
<field name="url" widget="CopyClipboardURL" placeholder="URL will be created once the rule is saved."/>
110+
<div class="alert alert-warning" role="status">
111+
<strong><i class="fa fa-lock"/> Keep it secret, keep it safe.</strong>
112+
<p>Your webhook URL contains a secret. Don't share it online or carelessly.</p>
113+
<button class="btn btn-seconadry" type="object" name="action_rotate_webhook_uuid" string="Rotate Secret" icon="fa-refresh" help="Change the URL's secret if you think the URL is no longer secure. You will have to update any automated system that calls this webhook to the new URL."/>
114+
</div>
115+
</div>
116+
-->
117+
<label
118+
for="trg_date_range"
119+
string="Delay"
120+
invisible="trigger not in ['on_time', 'on_time_created', 'on_time_updated']"
121+
/>
122+
<div
123+
class="d-flex flex-row gap-2"
124+
invisible="trigger not in ['on_time', 'on_time_created', 'on_time_updated']"
125+
>
126+
<field
127+
name="trg_date_range"
128+
class="oe_inline"
129+
required="trigger in ['on_time', 'on_time_created', 'on_time_updated']"
130+
/>
131+
<field
132+
name="trg_date_range_type"
133+
class="oe_inline"
134+
required="trigger in ['on_time', 'on_time_created', 'on_time_updated']"
135+
/>
136+
<span invisible="trigger != 'on_time_created'">
137+
after creation
138+
</span>
139+
<span invisible="trigger != 'on_time_updated'">
140+
after last update
141+
</span>
142+
<span invisible="trigger != 'on_time'">after</span>
143+
<field
144+
name="trg_date_id"
145+
class="oe_inline"
146+
string="Date Field"
147+
placeholder="Select a date field..."
148+
options="{'no_open': True, 'no_create': True}"
149+
context="{'hide_model': 1}"
150+
invisible="trigger != 'on_time'"
151+
required="trigger in ['on_time', 'on_time_created', 'on_time_updated']"
152+
/>
153+
</div>
154+
<!--
155+
<field name="log_webhook_calls" widget="boolean_toggle" invisible="trigger != 'on_webhook'"/>
156+
-->
30157
<field
31-
name="active"
32-
widget="boolean_button"
33-
options='{"terminology": "archive"}'
158+
name="trg_date_calendar_id"
159+
class="oe_inline"
160+
options="{'no_open': True, 'no_create': True}"
161+
invisible="not trg_date_id or trg_date_range_type != 'day'"
34162
/>
35-
</button>
36-
</div>
37-
<group>
38-
<field name="trigger_name" />
39-
<field name="model_id" />
40-
<field name="model_name" invisible="1" />
41-
<field name="trigger" />
42-
<field
43-
name="trigger_field_ids"
44-
domain="[('model_id', '=', model_id)]"
45-
invisible="trigger not in ('on_write', 'on_create_or_write')"
46-
widget="many2many_tags"
47-
/>
48-
<field
49-
name="on_change_field_ids"
50-
string="Trigger Fields"
51-
domain="[('model_id', '=', model_id)]"
52-
invisible="trigger != 'on_change'"
53-
required="trigger == 'on_change'"
54-
widget='many2many_tags'
55-
options="{'no_create': True}"
56-
/>
57-
<field
58-
name="filter_pre_domain"
59-
widget="domain"
60-
options="{'model': 'model_name', 'in_dialog': True}"
61-
invisible="trigger not in ('on_write','on_create_or_write')"
62-
/>
63-
<field
64-
name="filter_domain"
65-
widget="domain"
66-
options="{'model': 'model_name', 'in_dialog': True}"
67-
/>
68-
<field
69-
name="on_change_field_ids"
70-
invisible="trigger != 'on_change'"
71-
required="trigger == 'on_change'"
72-
/>
73-
<field
74-
name="trg_date_id"
75-
invisible="trigger != 'on_time'"
76-
required="trigger == 'on_time'"
77-
/>
78-
<label for="trg_date_range" invisible="trigger != 'on_time'" />
79-
<div class="o_row" invisible="trigger != 'on_time'">
80-
<field name="trg_date_range" required="trigger == 'on_time'" />
163+
<label
164+
for="least_delay_msg"
165+
invisible="trigger not in ['on_time', 'on_time_created', 'on_time_updated'] or not least_delay_msg"
166+
string=""
167+
/>
168+
<div
169+
class="alert alert-info"
170+
role="alert"
171+
invisible="trigger not in ['on_time', 'on_time_created', 'on_time_updated'] or not least_delay_msg"
172+
>
173+
<field name="least_delay_msg" />
174+
</div>
81175
<field
82-
name="trg_date_range_type"
83-
required="trigger == 'on_time'"
176+
name="filter_pre_domain"
177+
widget="domain"
178+
groups="base.group_no_one"
179+
options="{'model': 'model_name', 'in_dialog': True}"
180+
invisible="trigger in ['on_change', 'on_webhook']"
84181
/>
85-
</div>
86-
<field
87-
name="trg_date_calendar_id"
88-
invisible="not trg_date_id or trg_date_range_type != 'day'"
89-
/>
90-
<field name="sync_task_id" invisible="1" />
182+
<field
183+
name="filter_domain"
184+
widget="domain"
185+
groups="base.group_no_one"
186+
options="{'model': 'model_name', 'in_dialog': True}"
187+
invisible="trigger in ['on_change', 'on_webhook']"
188+
/>
189+
<label
190+
for="filter_domain"
191+
groups="!base.group_no_one"
192+
invisible="trigger not in ['on_create_or_write', 'on_unlink']"
193+
/>
194+
<label
195+
for="filter_domain"
196+
groups="!base.group_no_one"
197+
string="Extra Conditions"
198+
invisible="trigger not in ['on_time', 'on_time_created', 'on_time_updated']"
199+
/>
200+
<field
201+
name="filter_domain"
202+
nolabel="1"
203+
widget="domain"
204+
groups="!base.group_no_one"
205+
options="{'model': 'model_name', 'in_dialog': False, 'foldable': True}"
206+
invisible="trigger not in ['on_create_or_write', 'on_unlink', 'on_time', 'on_time_created', 'on_time_updated']"
207+
/>
208+
<field
209+
name="trigger_field_ids"
210+
string="When updating"
211+
placeholder="Select fields..."
212+
options="{'no_open': True, 'no_create': True}"
213+
domain="[('model_id', '=', model_id),('store','=',True)]"
214+
context="{'hide_model': 1}"
215+
invisible="trigger != 'on_create_or_write'"
216+
widget="many2many_tags"
217+
/>
218+
<field
219+
name="on_change_field_ids"
220+
string="When updating"
221+
placeholder="Select fields..."
222+
options="{'no_open': True, 'no_create': True}"
223+
domain="[('model_id', '=', model_id)]"
224+
context="{'hide_model': 1}"
225+
invisible="trigger != 'on_change'"
226+
widget="many2many_tags"
227+
/>
228+
</group>
229+
<!--
230+
<group>
231+
<label for="record_getter" string="Target Record" invisible="trigger != 'on_webhook'" />
232+
<div invisible="trigger != 'on_webhook'">
233+
<field name="record_getter" string="Target Record"/>
234+
<div>
235+
<div class="text-muted"><i class="fa fa-info-circle"/> The default target record getter will work out-of-the-box for any webhook coming from another Odoo instance.</div>
236+
<span class="text-muted"> Available variables: </span>
237+
<ul class="text-muted">
238+
<li><code>env</code>: environment on which the action is triggered</li>
239+
<li><code>model</code>: model of the record on which the action is triggered; is a void recordset</li>
240+
<li><code>time</code>, <code>datetime</code>, <code>dateutil</code>, <code>timezone</code>: useful Python libraries</li>
241+
<li><code>payload</code>: the payload of the call (GET parameters, JSON body), as a dict.</li>
242+
</ul>
243+
</div>
244+
</div>
245+
</group>
246+
-->
91247
</group>
92248
</form>
93249
</field>

0 commit comments

Comments
 (0)