Skip to content

Commit 29ef30d

Browse files
Merge PR #582 into 16.0
Signed-off-by remytms
2 parents 304ab6d + 62d840c commit 29ef30d

18 files changed

+583
-226
lines changed

volunteer/README.rst

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
.. image:: https://odoo-community.org/readme-banner-image
2-
:target: https://odoo-community.org/get-involved?utm_source=readme
3-
:alt: Odoo Community Association
4-
51
=========
62
Volunteer
73
=========
@@ -17,7 +13,7 @@ Volunteer
1713
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
1814
:target: https://odoo-community.org/page/development-status
1915
:alt: Beta
20-
.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png
16+
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
2117
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
2218
:alt: License: AGPL-3
2319
.. |badge3| image:: https://img.shields.io/badge/github-beescoop%2FObeesdoo-lightgray.png?logo=github

volunteer/__manifest__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
"views/volunteer_shift_generator_views.xml",
2525
"views/volunteer_shift_kanban_views.xml",
2626
"views/volunteer_shift_participation_views.xml",
27+
"views/volunteer_shift_generator_kanban_views.xml",
2728
"views/volunteer_shift_subscription_views.xml",
2829
"views/volunteer_shift_category_views.xml",
2930
"views/volunteer_shift_type_views.xml",

volunteer/demo/volunteer_shift_demo.xml

Lines changed: 46 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -5,117 +5,90 @@ SPDX-FileCopyrightText: 2025 Coop IT Easy SC
55
SPDX-License-Identifier: AGPL-3.0-or-later
66
-->
77
<odoo>
8-
<record id="volunteer_shift_demo_today" model="volunteer.shift">
9-
<field name="name">Shift Today</field>
8+
<record id="volunteer_shift_demo_cheese" model="volunteer.shift">
9+
<field name="name">Cheese cutting</field>
1010
<field name="max_volunteer_nb">2</field>
11-
<field name="start_time" eval="datetime.now().strftime('%Y-%m-%d %H:%M:%S')" />
12-
<field
13-
name="end_time"
14-
eval="(datetime.now() + timedelta(hours=2)).strftime('%Y-%m-%d %H:%M:%S')"
15-
/>
16-
<field name="coordinator_id" ref="volunteer_partner_demo_b" />
11+
<field name="start_time" eval="datetime.now()" />
12+
<field name="end_time" eval="datetime.now() + timedelta(hours=2)" />
13+
<field name="coordinator_id" ref="volunteer_partner_demo_john" />
1714
<field name="stage_id" ref="volunteer_shift_stage_confirmed" />
18-
<field name="type_id" ref="volunteer_shift_type_demo_closing" />
15+
<field name="type_id" ref="volunteer_shift_type_demo_cheese_cut" />
1916
</record>
2017

21-
<record id="volunteer_shift_demo_tomorrow" model="volunteer.shift">
22-
<field name="name">Shift Tomorrow</field>
18+
<record id="volunteer_shift_demo_delicatessen" model="volunteer.shift">
19+
<field name="name">Delicatessen cutting</field>
2320
<field name="max_volunteer_nb">3</field>
21+
<field name="start_time" eval="datetime.now() + timedelta(days=1)" />
22+
<field name="end_time" eval="datetime.now() + timedelta(days=1, hours=2)" />
23+
<field name="stage_id" ref="volunteer_shift_stage_canceled" />
24+
<field name="type_id" ref="volunteer_shift_type_demo_delicatessen_cut" />
2425
<field
25-
name="start_time"
26-
eval="(datetime.now() + timedelta(days=1)).strftime('%Y-%m-%d %H:%M:%S')"
27-
/>
28-
<field
29-
name="end_time"
30-
eval="(datetime.now() + timedelta(days=1, hours=2)).strftime('%Y-%m-%d %H:%M:%S')"
26+
name="tag_ids"
27+
eval="[(6, 0, [ref('volunteer_shift_tag_demo_fresh')])]"
3128
/>
32-
<field name="stage_id" ref="volunteer_shift_stage_canceled" />
33-
<field name="type_id" ref="volunteer_shift_type_demo_opening" />
34-
<field name="tag_ids" eval="[(6, 0, [ref('volunteer_shift_demo_tag_a')])]" />
3529
<field name="category_id" ref="volunteer_shift_category_demo_week_b" />
3630
</record>
3731

38-
<record id="volunteer_shift_demo_next_7_days" model="volunteer.shift">
39-
<field name="name">Shift Next 7 days</field>
32+
<record id="volunteer_shift_demo_closing" model="volunteer.shift">
33+
<field name="name">Thursday closing</field>
4034
<field name="max_volunteer_nb">3</field>
41-
<field
42-
name="start_time"
43-
eval="(datetime.now() + timedelta(days=+6)).strftime('%Y-%m-%d %H:%M:%S')"
44-
/>
45-
<field
46-
name="end_time"
47-
eval="(datetime.now() + timedelta(days=+6, hours=2)).strftime('%Y-%m-%d %H:%M:%S')"
48-
/>
35+
<field name="start_time" eval="datetime.now() + timedelta(days=+6)" />
36+
<field name="end_time" eval="datetime.now() + timedelta(days=+6, hours=2)" />
4937
<field name="stage_id" ref="volunteer_shift_stage_confirmed" />
5038
<field
5139
name="tag_ids"
52-
eval="[(6, 0, [ref('volunteer_shift_demo_tag_a'), ref('volunteer_shift_demo_tag_b'), ref('volunteer_shift_demo_tag_c')])]"
40+
eval="[(6, 0, [ref('volunteer_shift_tag_demo_physical'), ref('volunteer_shift_tag_demo_lifting')])]"
5341
/>
54-
<field name="type_id" ref="volunteer_shift_type_demo_cheese_cut" />
42+
<field name="type_id" ref="volunteer_shift_type_demo_closing" />
5543
<field name="category_id" ref="volunteer_shift_category_demo_week_a" />
5644
</record>
5745

58-
<record id="volunteer_shift_demo_next_30_days" model="volunteer.shift">
59-
<field name="name">Shift Next 30 days</field>
46+
<record id="volunteer_shift_demo_future_closing" model="volunteer.shift">
47+
<field name="name">Friday closing</field>
6048
<field name="max_volunteer_nb">9</field>
6149
<field
6250
name="start_time"
63-
eval="(datetime.now() + timedelta(days=+29)).strftime('%Y-%m-%d %H:%M:%S')"
51+
eval="(datetime.now() + timedelta(days=29)).replace(hour=20, minute=0, second=0)"
6452
/>
6553
<field
6654
name="end_time"
67-
eval="(datetime.now() + timedelta(days=+29, hours=2)).strftime('%Y-%m-%d %H:%M:%S')"
55+
eval="(datetime.now() + timedelta(days=30)).replace(hour=2, minute=0, second=0)"
6856
/>
69-
<field name="coordinator_id" ref="volunteer_partner_demo_a" />
57+
<field name="coordinator_id" ref="volunteer_partner_demo_jean" />
7058
<field name="stage_id" ref="volunteer_shift_stage_confirmed" />
7159
<field name="type_id" ref="volunteer_shift_type_demo_closing" />
72-
<field name="tag_ids" eval="[(6, 0, [ref('volunteer_shift_demo_tag_a')])]" />
60+
<field
61+
name="tag_ids"
62+
eval="[(6, 0, [ref('volunteer_shift_tag_demo_physical')])]"
63+
/>
7364
</record>
7465

75-
<record id="volunteer_shift_demo_yesterday" model="volunteer.shift">
76-
<field name="name">Shift Yesterday</field>
66+
<record id="volunteer_shift_demo_past_opening" model="volunteer.shift">
67+
<field name="name">Store opening</field>
7768
<field name="max_volunteer_nb">3</field>
78-
<field
79-
name="start_time"
80-
eval="(datetime.now() + timedelta(days=-1)).strftime('%Y-%m-%d %H:%M:%S')"
81-
/>
82-
<field
83-
name="end_time"
84-
eval="(datetime.now() + timedelta(days=-1, hours=2)).strftime('%Y-%m-%d %H:%M:%S')"
85-
/>
86-
<field name="coordinator_id" ref="volunteer_partner_demo_b" />
69+
<field name="start_time" eval="datetime.now() + timedelta(days=-1)" />
70+
<field name="end_time" eval="datetime.now() + timedelta(days=-1, hours=2)" />
71+
<field name="coordinator_id" ref="volunteer_partner_demo_emma" />
8772
<field name="stage_id" ref="volunteer_shift_stage_confirmed" />
88-
<field name="type_id" ref="volunteer_shift_type_demo_cheese_cut" />
73+
<field name="type_id" ref="volunteer_shift_type_demo_opening" />
8974
</record>
9075

91-
<record id="volunteer_shift_demo_last_7_days" model="volunteer.shift">
92-
<field name="name">Shift Last 7 days</field>
76+
<record id="volunteer_shift_demo_past_cheese" model="volunteer.shift">
77+
<field name="name">Cheese cutting</field>
9378
<field name="max_volunteer_nb">3</field>
94-
<field
95-
name="start_time"
96-
eval="(datetime.now() + timedelta(days=-6)).strftime('%Y-%m-%d %H:%M:%S')"
97-
/>
98-
<field
99-
name="end_time"
100-
eval="(datetime.now() + timedelta(days=-6, hours=2)).strftime('%Y-%m-%d %H:%M:%S')"
101-
/>
102-
<field name="coordinator_id" ref="volunteer_partner_demo_b" />
79+
<field name="start_time" eval="datetime.now() + timedelta(days=-6)" />
80+
<field name="end_time" eval="datetime.now() + timedelta(days=-6, hours=2)" />
81+
<field name="coordinator_id" ref="volunteer_partner_demo_emma" />
10382
<field name="stage_id" ref="volunteer_shift_stage_confirmed" />
10483
<field name="type_id" ref="volunteer_shift_type_demo_cheese_cut" />
10584
</record>
10685

107-
<record id="volunteer_shift_demo_last_year" model="volunteer.shift">
108-
<field name="name">Shift Last year</field>
86+
<record id="volunteer_shift_demo_past_delicatessen" model="volunteer.shift">
87+
<field name="name">Delicatessen cutting</field>
10988
<field name="max_volunteer_nb">3</field>
110-
<field
111-
name="start_time"
112-
eval="(datetime.now() + timedelta(days=-367)).strftime('%Y-%m-%d %H:%M:%S')"
113-
/>
114-
<field
115-
name="end_time"
116-
eval="(datetime.now() + timedelta(days=-367, hours=2)).strftime('%Y-%m-%d %H:%M:%S')"
117-
/>
118-
<field name="coordinator_id" ref="volunteer_partner_demo_b" />
119-
<field name="type_id" ref="volunteer_shift_type_demo_cheese_cut" />
89+
<field name="start_time" eval="datetime.now() + timedelta(days=-367)" />
90+
<field name="end_time" eval="datetime.now() + timedelta(days=-367, hours=2)" />
91+
<field name="coordinator_id" ref="volunteer_partner_demo_emma" />
92+
<field name="type_id" ref="volunteer_shift_type_demo_delicatessen_cut" />
12093
</record>
12194
</odoo>

volunteer/demo/volunteer_shift_participation_demo.xml

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -9,69 +9,72 @@ SPDX-License-Identifier: AGPL-3.0-or-later
99
id="volunteer_shift_participation_demo_a"
1010
model="volunteer.shift.participation"
1111
>
12-
<field name="volunteer_id" ref="volunteer_demo_a" />
13-
<field name="shift_id" ref="volunteer_shift_demo_next_7_days" />
12+
<field name="volunteer_id" ref="volunteer_demo_jean" />
13+
<field name="shift_id" ref="volunteer_shift_demo_closing" />
1414
</record>
1515

1616
<record
1717
id="volunteer_shift_participation_demo_b"
1818
model="volunteer.shift.participation"
1919
>
20-
<field name="volunteer_id" ref="volunteer_demo_b" />
21-
<field name="shift_id" ref="volunteer_shift_demo_next_7_days" />
20+
<field name="volunteer_id" ref="volunteer_demo_john" />
21+
<field name="shift_id" ref="volunteer_shift_demo_closing" />
2222
</record>
2323

2424
<record
2525
id="volunteer_shift_participation_demo_c"
2626
model="volunteer.shift.participation"
2727
>
28-
<field name="volunteer_id" ref="volunteer_demo_a" />
29-
<field name="shift_id" ref="volunteer_shift_demo_next_30_days" />
28+
<field name="volunteer_id" ref="volunteer_demo_jean" />
29+
<field name="shift_id" ref="volunteer_shift_demo_future_closing" />
3030
</record>
3131

3232
<record
3333
id="volunteer_shift_participation_demo_d"
3434
model="volunteer.shift.participation"
3535
>
36-
<field name="volunteer_id" ref="volunteer_demo_a" />
37-
<field name="shift_id" ref="volunteer_shift_demo_today" />
36+
<field name="volunteer_id" ref="volunteer_demo_jean" />
37+
<field name="shift_id" ref="volunteer_shift_demo_cheese" />
3838
</record>
3939

40-
<record id="shift_participation_demo_e" model="volunteer.shift.participation">
41-
<field name="volunteer_id" ref="volunteer_demo_b" />
42-
<field name="shift_id" ref="volunteer_shift_demo_today" />
40+
<record
41+
id="volunteer_shift_participation_demo_e"
42+
model="volunteer.shift.participation"
43+
>
44+
<field name="volunteer_id" ref="volunteer_demo_emma" />
45+
<field name="shift_id" ref="volunteer_shift_demo_cheese" />
4346
</record>
4447

4548
<record
4649
id="volunteer_shift_participation_demo_f"
4750
model="volunteer.shift.participation"
4851
>
49-
<field name="volunteer_id" ref="volunteer_demo_c" />
50-
<field name="shift_id" ref="volunteer_shift_demo_today" />
52+
<field name="volunteer_id" ref="volunteer_demo_john" />
53+
<field name="shift_id" ref="volunteer_shift_demo_cheese" />
5154
<field name="registration_state">canceled</field>
5255
</record>
5356

5457
<record
5558
id="volunteer_shift_participation_demo_g"
5659
model="volunteer.shift.participation"
5760
>
58-
<field name="volunteer_id" ref="volunteer_demo_c" />
59-
<field name="shift_id" ref="volunteer_shift_demo_last_7_days" />
61+
<field name="volunteer_id" ref="volunteer_demo_john" />
62+
<field name="shift_id" ref="volunteer_shift_demo_past_cheese" />
6063
</record>
6164

6265
<record
6366
id="volunteer_shift_participation_demo_h"
6467
model="volunteer.shift.participation"
6568
>
66-
<field name="volunteer_id" ref="volunteer_demo_c" />
67-
<field name="shift_id" ref="volunteer_shift_demo_yesterday" />
69+
<field name="volunteer_id" ref="volunteer_demo_john" />
70+
<field name="shift_id" ref="volunteer_shift_demo_past_opening" />
6871
</record>
6972

7073
<record
7174
id="volunteer_shift_participation_demo_i"
7275
model="volunteer.shift.participation"
7376
>
74-
<field name="volunteer_id" ref="volunteer_demo_c" />
75-
<field name="shift_id" ref="volunteer_shift_demo_last_year" />
77+
<field name="volunteer_id" ref="volunteer_demo_john" />
78+
<field name="shift_id" ref="volunteer_shift_demo_past_delicatessen" />
7679
</record>
7780
</odoo>

volunteer/demo/volunteer_shift_recurrent_generator_demo.xml

Lines changed: 87 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,104 @@ SPDX-FileCopyrightText: 2025 Coop IT Easy SC
55
SPDX-License-Identifier: AGPL-3.0-or-later
66
-->
77
<odoo>
8-
<record
9-
id="volunteer_generator_demo_opening"
8+
<record
9+
id="volunteer_generator_demo_friday_opening"
1010
model="volunteer.shift.recurrent.generator"
1111
>
12-
<field name="name">Store Opening</field>
13-
<field name="max_volunteer_nb">5</field>
12+
<field name="name">Friday opening</field>
13+
<field name="max_volunteer_nb">3</field>
1414
<field
1515
name="start_time"
16-
eval="(datetime.now() - timedelta(days=30)).replace(hour=6, minute=0, second=0).strftime('%Y-%m-%d %H:%M:%S')"
16+
eval="(datetime.now() - timedelta(days=30)).replace(hour=6, minute=0, second=0)"
1717
/>
1818
<field
1919
name="end_time"
20-
eval="(datetime.now() - timedelta(days=30)).replace(hour=9, minute=0, second=0).strftime('%Y-%m-%d %H:%M:%S')"
20+
eval="(datetime.now() - timedelta(days=30)).replace(hour=9, minute=0, second=0)"
2121
/>
2222
<field name="interval_type">days</field>
2323
<field name="interval">1</field>
24-
<field name="state">draft</field>
24+
<field name="state">confirmed</field>
2525
<field name="type_id" ref="volunteer_shift_type_demo_opening" />
26+
<field name="category_id" ref="volunteer_shift_category_demo_week_b" />
27+
<field
28+
name="tag_ids"
29+
eval="[(6, 0, [ref('volunteer_shift_tag_demo_fresh'), ref('volunteer_shift_tag_demo_lifting')])]"
30+
/>
31+
<field name="tz">Europe/Brussels</field>
32+
</record>
33+
34+
<record
35+
id="volunteer_generator_demo_thursday_closing"
36+
model="volunteer.shift.recurrent.generator"
37+
>
38+
<field name="name">Thursday closing</field>
39+
<field name="max_volunteer_nb">3</field>
40+
<field
41+
name="start_time"
42+
eval="datetime.now().replace(hour=20, minute=0, second=0)"
43+
/>
44+
<field
45+
name="end_time"
46+
eval="(datetime.now() + timedelta(days=1)).replace(hour=2, minute=0, second=0)"
47+
/>
48+
<field name="interval_type">weeks</field>
49+
<field name="interval">1</field>
50+
<field name="state">draft</field>
51+
<field name="type_id" ref="volunteer_shift_type_demo_closing" />
52+
<field name="category_id" ref="volunteer_shift_category_demo_week_b" />
53+
<field
54+
name="tag_ids"
55+
eval="[(6, 0, [ref('volunteer_shift_tag_demo_fresh'), ref('volunteer_shift_tag_demo_lifting')])]"
56+
/>
57+
<field name="tz">Europe/Brussels</field>
58+
</record>
59+
60+
<record
61+
id="volunteer_generator_demo_saturday_opening"
62+
model="volunteer.shift.recurrent.generator"
63+
>
64+
<field name="name">Saturday opening</field>
65+
<field name="max_volunteer_nb">3</field>
66+
<field
67+
name="start_time"
68+
eval="(datetime.now() + timedelta(days=3)).replace(hour=6, minute=0, second=0)"
69+
/>
70+
<field
71+
name="end_time"
72+
eval="(datetime.now() + timedelta(days=3)).replace(hour=9, minute=0, second=0)"
73+
/>
74+
<field name="interval_type">weeks</field>
75+
<field name="interval">2</field>
76+
<field name="state">canceled</field>
77+
<field name="type_id" ref="volunteer_shift_type_demo_closing" />
78+
<field name="category_id" ref="volunteer_shift_category_demo_week_a" />
79+
<field
80+
name="tag_ids"
81+
eval="[(6, 0, [ref('volunteer_shift_tag_demo_lifting')])]"
82+
/>
83+
<field name="tz">Europe/Brussels</field>
84+
</record>
85+
86+
<record
87+
id="volunteer_generator_demo_cheese"
88+
model="volunteer.shift.recurrent.generator"
89+
>
90+
<field name="name">Cheese cutting</field>
91+
<field name="max_volunteer_nb">2</field>
92+
<field
93+
name="start_time"
94+
eval="datetime.now().replace(hour=8, minute=0, second=0)"
95+
/>
96+
<field
97+
name="end_time"
98+
eval="datetime.now().replace(hour=12, minute=0, second=0)"
99+
/>
100+
<field name="interval_type">months</field>
101+
<field name="interval">1</field>
102+
<field name="until_date" eval="datetime.now() + timedelta(days=62)" />
103+
<field name="state">confirmed</field>
104+
<field name="type_id" ref="volunteer_shift_type_demo_cheese_cut" />
105+
<field name="coordinator_id" ref="volunteer_partner_demo_emma" />
26106
<field name="tz">Europe/Brussels</field>
27107
</record>
28108
</odoo>

0 commit comments

Comments
 (0)