odoo-addon-base-tier-validation 17.0.1.4.0.2__py3-none-any.whl → 17.0.1.5.0.1__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.
- odoo/addons/base_tier_validation/README.rst +2 -1
- odoo/addons/base_tier_validation/__manifest__.py +1 -1
- odoo/addons/base_tier_validation/i18n/base_tier_validation.pot +36 -0
- odoo/addons/base_tier_validation/i18n/es.po +36 -0
- odoo/addons/base_tier_validation/i18n/es_MX.po +36 -0
- odoo/addons/base_tier_validation/i18n/fr.po +36 -0
- odoo/addons/base_tier_validation/i18n/it.po +36 -0
- odoo/addons/base_tier_validation/i18n/nl_NL.po +36 -0
- odoo/addons/base_tier_validation/i18n/sv.po +36 -0
- odoo/addons/base_tier_validation/i18n/tr.po +36 -0
- odoo/addons/base_tier_validation/i18n/zh_CN.po +36 -0
- odoo/addons/base_tier_validation/models/tier_definition.py +15 -0
- odoo/addons/base_tier_validation/models/tier_validation.py +47 -7
- odoo/addons/base_tier_validation/readme/CONTRIBUTORS.md +1 -0
- odoo/addons/base_tier_validation/static/description/index.html +2 -1
- odoo/addons/base_tier_validation/tests/test_tier_validation.py +370 -0
- odoo/addons/base_tier_validation/views/tier_definition_view.xml +3 -0
- {odoo_addon_base_tier_validation-17.0.1.4.0.2.dist-info → odoo_addon_base_tier_validation-17.0.1.5.0.1.dist-info}/METADATA +3 -2
- {odoo_addon_base_tier_validation-17.0.1.4.0.2.dist-info → odoo_addon_base_tier_validation-17.0.1.5.0.1.dist-info}/RECORD +21 -21
- {odoo_addon_base_tier_validation-17.0.1.4.0.2.dist-info → odoo_addon_base_tier_validation-17.0.1.5.0.1.dist-info}/WHEEL +1 -1
- {odoo_addon_base_tier_validation-17.0.1.4.0.2.dist-info → odoo_addon_base_tier_validation-17.0.1.5.0.1.dist-info}/top_level.txt +0 -0
@@ -7,7 +7,7 @@ Base Tier Validation
|
|
7
7
|
!! This file is generated by oca-gen-addon-readme !!
|
8
8
|
!! changes will be overwritten. !!
|
9
9
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
10
|
-
!! source digest: sha256:
|
10
|
+
!! source digest: sha256:1972fd9b89f95ec6bdb14bea217d28a7f7ca6df56e7517a86e002f9e36c9d3b6
|
11
11
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
12
12
|
|
13
13
|
.. |badge1| image:: https://img.shields.io/badge/maturity-Mature-brightgreen.png
|
@@ -234,6 +234,7 @@ Contributors
|
|
234
234
|
- Javier Colmeiro <javier.colmeiro@braintec.com>
|
235
235
|
- bosd
|
236
236
|
- Evan Soh <evan.soh@omnisoftsolution.com>
|
237
|
+
- Manuel Regidor <manuel.regidor@sygel.es>
|
237
238
|
|
238
239
|
Maintainers
|
239
240
|
-----------
|
@@ -329,6 +329,27 @@ msgid ""
|
|
329
329
|
" to review is sent out when it's their turn to review."
|
330
330
|
msgstr ""
|
331
331
|
|
332
|
+
#. module: base_tier_validation
|
333
|
+
#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_accepted
|
334
|
+
msgid ""
|
335
|
+
"If set, reviewers will be notified by email when a review related to this "
|
336
|
+
"definition is accepted."
|
337
|
+
msgstr ""
|
338
|
+
|
339
|
+
#. module: base_tier_validation
|
340
|
+
#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_rejected
|
341
|
+
msgid ""
|
342
|
+
"If set, reviewers will be notified by email when a review related to this "
|
343
|
+
"definition is rejected."
|
344
|
+
msgstr ""
|
345
|
+
|
346
|
+
#. module: base_tier_validation
|
347
|
+
#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_restarted
|
348
|
+
msgid ""
|
349
|
+
"If set, reviewers will be notified by email when a reviews related to this "
|
350
|
+
"definition are restarted."
|
351
|
+
msgstr ""
|
352
|
+
|
332
353
|
#. module: base_tier_validation
|
333
354
|
#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_uid
|
334
355
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_uid
|
@@ -385,11 +406,26 @@ msgstr ""
|
|
385
406
|
msgid "No reviews to do."
|
386
407
|
msgstr ""
|
387
408
|
|
409
|
+
#. module: base_tier_validation
|
410
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_accepted
|
411
|
+
msgid "Notify Reviewers on Accepted"
|
412
|
+
msgstr ""
|
413
|
+
|
388
414
|
#. module: base_tier_validation
|
389
415
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_create
|
390
416
|
msgid "Notify Reviewers on Creation"
|
391
417
|
msgstr ""
|
392
418
|
|
419
|
+
#. module: base_tier_validation
|
420
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_rejected
|
421
|
+
msgid "Notify Reviewers on Rejected"
|
422
|
+
msgstr ""
|
423
|
+
|
424
|
+
#. module: base_tier_validation
|
425
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_restarted
|
426
|
+
msgid "Notify Reviewers on Restarted"
|
427
|
+
msgstr ""
|
428
|
+
|
393
429
|
#. module: base_tier_validation
|
394
430
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_pending
|
395
431
|
msgid "Notify Reviewers on reaching Pending"
|
@@ -354,6 +354,27 @@ msgstr ""
|
|
354
354
|
"aprobación por secuencia. Se envía una solicitud de notificación de revisión "
|
355
355
|
"cuando les toca revisar."
|
356
356
|
|
357
|
+
#. module: base_tier_validation
|
358
|
+
#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_accepted
|
359
|
+
msgid ""
|
360
|
+
"If set, reviewers will be notified by email when a review related to this "
|
361
|
+
"definition is accepted."
|
362
|
+
msgstr ""
|
363
|
+
|
364
|
+
#. module: base_tier_validation
|
365
|
+
#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_rejected
|
366
|
+
msgid ""
|
367
|
+
"If set, reviewers will be notified by email when a review related to this "
|
368
|
+
"definition is rejected."
|
369
|
+
msgstr ""
|
370
|
+
|
371
|
+
#. module: base_tier_validation
|
372
|
+
#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_restarted
|
373
|
+
msgid ""
|
374
|
+
"If set, reviewers will be notified by email when a reviews related to this "
|
375
|
+
"definition are restarted."
|
376
|
+
msgstr ""
|
377
|
+
|
357
378
|
#. module: base_tier_validation
|
358
379
|
#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_uid
|
359
380
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_uid
|
@@ -410,11 +431,26 @@ msgstr "Siguiente: %s"
|
|
410
431
|
msgid "No reviews to do."
|
411
432
|
msgstr "No hay revisiones a realizar."
|
412
433
|
|
434
|
+
#. module: base_tier_validation
|
435
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_accepted
|
436
|
+
msgid "Notify Reviewers on Accepted"
|
437
|
+
msgstr ""
|
438
|
+
|
413
439
|
#. module: base_tier_validation
|
414
440
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_create
|
415
441
|
msgid "Notify Reviewers on Creation"
|
416
442
|
msgstr "Notificar a los revisores en la creación"
|
417
443
|
|
444
|
+
#. module: base_tier_validation
|
445
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_rejected
|
446
|
+
msgid "Notify Reviewers on Rejected"
|
447
|
+
msgstr ""
|
448
|
+
|
449
|
+
#. module: base_tier_validation
|
450
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_restarted
|
451
|
+
msgid "Notify Reviewers on Restarted"
|
452
|
+
msgstr ""
|
453
|
+
|
418
454
|
#. module: base_tier_validation
|
419
455
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_pending
|
420
456
|
msgid "Notify Reviewers on reaching Pending"
|
@@ -337,6 +337,27 @@ msgid ""
|
|
337
337
|
"to review is sent out when it's their turn to review."
|
338
338
|
msgstr ""
|
339
339
|
|
340
|
+
#. module: base_tier_validation
|
341
|
+
#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_accepted
|
342
|
+
msgid ""
|
343
|
+
"If set, reviewers will be notified by email when a review related to this "
|
344
|
+
"definition is accepted."
|
345
|
+
msgstr ""
|
346
|
+
|
347
|
+
#. module: base_tier_validation
|
348
|
+
#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_rejected
|
349
|
+
msgid ""
|
350
|
+
"If set, reviewers will be notified by email when a review related to this "
|
351
|
+
"definition is rejected."
|
352
|
+
msgstr ""
|
353
|
+
|
354
|
+
#. module: base_tier_validation
|
355
|
+
#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_restarted
|
356
|
+
msgid ""
|
357
|
+
"If set, reviewers will be notified by email when a reviews related to this "
|
358
|
+
"definition are restarted."
|
359
|
+
msgstr ""
|
360
|
+
|
340
361
|
#. module: base_tier_validation
|
341
362
|
#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_uid
|
342
363
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_uid
|
@@ -393,11 +414,26 @@ msgstr ""
|
|
393
414
|
msgid "No reviews to do."
|
394
415
|
msgstr "No hay revisiones que hacer."
|
395
416
|
|
417
|
+
#. module: base_tier_validation
|
418
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_accepted
|
419
|
+
msgid "Notify Reviewers on Accepted"
|
420
|
+
msgstr ""
|
421
|
+
|
396
422
|
#. module: base_tier_validation
|
397
423
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_create
|
398
424
|
msgid "Notify Reviewers on Creation"
|
399
425
|
msgstr "Notificar a los revisores sobre la creación"
|
400
426
|
|
427
|
+
#. module: base_tier_validation
|
428
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_rejected
|
429
|
+
msgid "Notify Reviewers on Rejected"
|
430
|
+
msgstr ""
|
431
|
+
|
432
|
+
#. module: base_tier_validation
|
433
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_restarted
|
434
|
+
msgid "Notify Reviewers on Restarted"
|
435
|
+
msgstr ""
|
436
|
+
|
401
437
|
#. module: base_tier_validation
|
402
438
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_pending
|
403
439
|
msgid "Notify Reviewers on reaching Pending"
|
@@ -338,6 +338,27 @@ msgid ""
|
|
338
338
|
"to review is sent out when it's their turn to review."
|
339
339
|
msgstr ""
|
340
340
|
|
341
|
+
#. module: base_tier_validation
|
342
|
+
#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_accepted
|
343
|
+
msgid ""
|
344
|
+
"If set, reviewers will be notified by email when a review related to this "
|
345
|
+
"definition is accepted."
|
346
|
+
msgstr ""
|
347
|
+
|
348
|
+
#. module: base_tier_validation
|
349
|
+
#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_rejected
|
350
|
+
msgid ""
|
351
|
+
"If set, reviewers will be notified by email when a review related to this "
|
352
|
+
"definition is rejected."
|
353
|
+
msgstr ""
|
354
|
+
|
355
|
+
#. module: base_tier_validation
|
356
|
+
#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_restarted
|
357
|
+
msgid ""
|
358
|
+
"If set, reviewers will be notified by email when a reviews related to this "
|
359
|
+
"definition are restarted."
|
360
|
+
msgstr ""
|
361
|
+
|
341
362
|
#. module: base_tier_validation
|
342
363
|
#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_uid
|
343
364
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_uid
|
@@ -394,11 +415,26 @@ msgstr "Suivante : %s"
|
|
394
415
|
msgid "No reviews to do."
|
395
416
|
msgstr "Aucune revue n'est nécessaire."
|
396
417
|
|
418
|
+
#. module: base_tier_validation
|
419
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_accepted
|
420
|
+
msgid "Notify Reviewers on Accepted"
|
421
|
+
msgstr ""
|
422
|
+
|
397
423
|
#. module: base_tier_validation
|
398
424
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_create
|
399
425
|
msgid "Notify Reviewers on Creation"
|
400
426
|
msgstr "Notifier les réviseurs à la création"
|
401
427
|
|
428
|
+
#. module: base_tier_validation
|
429
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_rejected
|
430
|
+
msgid "Notify Reviewers on Rejected"
|
431
|
+
msgstr ""
|
432
|
+
|
433
|
+
#. module: base_tier_validation
|
434
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_restarted
|
435
|
+
msgid "Notify Reviewers on Restarted"
|
436
|
+
msgstr ""
|
437
|
+
|
402
438
|
#. module: base_tier_validation
|
403
439
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_pending
|
404
440
|
msgid "Notify Reviewers on reaching Pending"
|
@@ -355,6 +355,27 @@ msgstr ""
|
|
355
355
|
"questo stato è raggiunto. Utile in uno scenario di approvazione in sequenza. "
|
356
356
|
"Una notifica di revisione è inviata quando è il turno di revisione."
|
357
357
|
|
358
|
+
#. module: base_tier_validation
|
359
|
+
#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_accepted
|
360
|
+
msgid ""
|
361
|
+
"If set, reviewers will be notified by email when a review related to this "
|
362
|
+
"definition is accepted."
|
363
|
+
msgstr ""
|
364
|
+
|
365
|
+
#. module: base_tier_validation
|
366
|
+
#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_rejected
|
367
|
+
msgid ""
|
368
|
+
"If set, reviewers will be notified by email when a review related to this "
|
369
|
+
"definition is rejected."
|
370
|
+
msgstr ""
|
371
|
+
|
372
|
+
#. module: base_tier_validation
|
373
|
+
#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_restarted
|
374
|
+
msgid ""
|
375
|
+
"If set, reviewers will be notified by email when a reviews related to this "
|
376
|
+
"definition are restarted."
|
377
|
+
msgstr ""
|
378
|
+
|
358
379
|
#. module: base_tier_validation
|
359
380
|
#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_uid
|
360
381
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_uid
|
@@ -411,11 +432,26 @@ msgstr "Prossimo: %s"
|
|
411
432
|
msgid "No reviews to do."
|
412
433
|
msgstr "Nessuna approvazione da fare."
|
413
434
|
|
435
|
+
#. module: base_tier_validation
|
436
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_accepted
|
437
|
+
msgid "Notify Reviewers on Accepted"
|
438
|
+
msgstr ""
|
439
|
+
|
414
440
|
#. module: base_tier_validation
|
415
441
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_create
|
416
442
|
msgid "Notify Reviewers on Creation"
|
417
443
|
msgstr "Notifica Approvatori su Creazione"
|
418
444
|
|
445
|
+
#. module: base_tier_validation
|
446
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_rejected
|
447
|
+
msgid "Notify Reviewers on Rejected"
|
448
|
+
msgstr ""
|
449
|
+
|
450
|
+
#. module: base_tier_validation
|
451
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_restarted
|
452
|
+
msgid "Notify Reviewers on Restarted"
|
453
|
+
msgstr ""
|
454
|
+
|
419
455
|
#. module: base_tier_validation
|
420
456
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_pending
|
421
457
|
msgid "Notify Reviewers on reaching Pending"
|
@@ -351,6 +351,27 @@ msgid ""
|
|
351
351
|
"to review is sent out when it's their turn to review."
|
352
352
|
msgstr ""
|
353
353
|
|
354
|
+
#. module: base_tier_validation
|
355
|
+
#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_accepted
|
356
|
+
msgid ""
|
357
|
+
"If set, reviewers will be notified by email when a review related to this "
|
358
|
+
"definition is accepted."
|
359
|
+
msgstr ""
|
360
|
+
|
361
|
+
#. module: base_tier_validation
|
362
|
+
#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_rejected
|
363
|
+
msgid ""
|
364
|
+
"If set, reviewers will be notified by email when a review related to this "
|
365
|
+
"definition is rejected."
|
366
|
+
msgstr ""
|
367
|
+
|
368
|
+
#. module: base_tier_validation
|
369
|
+
#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_restarted
|
370
|
+
msgid ""
|
371
|
+
"If set, reviewers will be notified by email when a reviews related to this "
|
372
|
+
"definition are restarted."
|
373
|
+
msgstr ""
|
374
|
+
|
354
375
|
#. module: base_tier_validation
|
355
376
|
#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_uid
|
356
377
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_uid
|
@@ -407,11 +428,26 @@ msgstr "Volgende: %s"
|
|
407
428
|
msgid "No reviews to do."
|
408
429
|
msgstr "Geen beoordelingen te doen."
|
409
430
|
|
431
|
+
#. module: base_tier_validation
|
432
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_accepted
|
433
|
+
msgid "Notify Reviewers on Accepted"
|
434
|
+
msgstr ""
|
435
|
+
|
410
436
|
#. module: base_tier_validation
|
411
437
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_create
|
412
438
|
msgid "Notify Reviewers on Creation"
|
413
439
|
msgstr "Informeer beoordelaar bij het maken"
|
414
440
|
|
441
|
+
#. module: base_tier_validation
|
442
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_rejected
|
443
|
+
msgid "Notify Reviewers on Rejected"
|
444
|
+
msgstr ""
|
445
|
+
|
446
|
+
#. module: base_tier_validation
|
447
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_restarted
|
448
|
+
msgid "Notify Reviewers on Restarted"
|
449
|
+
msgstr ""
|
450
|
+
|
415
451
|
#. module: base_tier_validation
|
416
452
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_pending
|
417
453
|
msgid "Notify Reviewers on reaching Pending"
|
@@ -336,6 +336,27 @@ msgid ""
|
|
336
336
|
"to review is sent out when it's their turn to review."
|
337
337
|
msgstr ""
|
338
338
|
|
339
|
+
#. module: base_tier_validation
|
340
|
+
#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_accepted
|
341
|
+
msgid ""
|
342
|
+
"If set, reviewers will be notified by email when a review related to this "
|
343
|
+
"definition is accepted."
|
344
|
+
msgstr ""
|
345
|
+
|
346
|
+
#. module: base_tier_validation
|
347
|
+
#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_rejected
|
348
|
+
msgid ""
|
349
|
+
"If set, reviewers will be notified by email when a review related to this "
|
350
|
+
"definition is rejected."
|
351
|
+
msgstr ""
|
352
|
+
|
353
|
+
#. module: base_tier_validation
|
354
|
+
#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_restarted
|
355
|
+
msgid ""
|
356
|
+
"If set, reviewers will be notified by email when a reviews related to this "
|
357
|
+
"definition are restarted."
|
358
|
+
msgstr ""
|
359
|
+
|
339
360
|
#. module: base_tier_validation
|
340
361
|
#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_uid
|
341
362
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_uid
|
@@ -392,11 +413,26 @@ msgstr "Nästa: %s"
|
|
392
413
|
msgid "No reviews to do."
|
393
414
|
msgstr "Inga granskningar att göra."
|
394
415
|
|
416
|
+
#. module: base_tier_validation
|
417
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_accepted
|
418
|
+
msgid "Notify Reviewers on Accepted"
|
419
|
+
msgstr ""
|
420
|
+
|
395
421
|
#. module: base_tier_validation
|
396
422
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_create
|
397
423
|
msgid "Notify Reviewers on Creation"
|
398
424
|
msgstr "Meddela granskare vid skapande"
|
399
425
|
|
426
|
+
#. module: base_tier_validation
|
427
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_rejected
|
428
|
+
msgid "Notify Reviewers on Rejected"
|
429
|
+
msgstr ""
|
430
|
+
|
431
|
+
#. module: base_tier_validation
|
432
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_restarted
|
433
|
+
msgid "Notify Reviewers on Restarted"
|
434
|
+
msgstr ""
|
435
|
+
|
400
436
|
#. module: base_tier_validation
|
401
437
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_pending
|
402
438
|
msgid "Notify Reviewers on reaching Pending"
|
@@ -336,6 +336,27 @@ msgid ""
|
|
336
336
|
"to review is sent out when it's their turn to review."
|
337
337
|
msgstr ""
|
338
338
|
|
339
|
+
#. module: base_tier_validation
|
340
|
+
#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_accepted
|
341
|
+
msgid ""
|
342
|
+
"If set, reviewers will be notified by email when a review related to this "
|
343
|
+
"definition is accepted."
|
344
|
+
msgstr ""
|
345
|
+
|
346
|
+
#. module: base_tier_validation
|
347
|
+
#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_rejected
|
348
|
+
msgid ""
|
349
|
+
"If set, reviewers will be notified by email when a review related to this "
|
350
|
+
"definition is rejected."
|
351
|
+
msgstr ""
|
352
|
+
|
353
|
+
#. module: base_tier_validation
|
354
|
+
#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_restarted
|
355
|
+
msgid ""
|
356
|
+
"If set, reviewers will be notified by email when a reviews related to this "
|
357
|
+
"definition are restarted."
|
358
|
+
msgstr ""
|
359
|
+
|
339
360
|
#. module: base_tier_validation
|
340
361
|
#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_uid
|
341
362
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_uid
|
@@ -392,11 +413,26 @@ msgstr "Sonraki: %s"
|
|
392
413
|
msgid "No reviews to do."
|
393
414
|
msgstr "Yapacak inceleme yok."
|
394
415
|
|
416
|
+
#. module: base_tier_validation
|
417
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_accepted
|
418
|
+
msgid "Notify Reviewers on Accepted"
|
419
|
+
msgstr ""
|
420
|
+
|
395
421
|
#. module: base_tier_validation
|
396
422
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_create
|
397
423
|
msgid "Notify Reviewers on Creation"
|
398
424
|
msgstr "İncelemeleri Oluşturma Hakkında Bilgilendir"
|
399
425
|
|
426
|
+
#. module: base_tier_validation
|
427
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_rejected
|
428
|
+
msgid "Notify Reviewers on Rejected"
|
429
|
+
msgstr ""
|
430
|
+
|
431
|
+
#. module: base_tier_validation
|
432
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_restarted
|
433
|
+
msgid "Notify Reviewers on Restarted"
|
434
|
+
msgstr ""
|
435
|
+
|
400
436
|
#. module: base_tier_validation
|
401
437
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_pending
|
402
438
|
msgid "Notify Reviewers on reaching Pending"
|
@@ -332,6 +332,27 @@ msgid ""
|
|
332
332
|
"to review is sent out when it's their turn to review."
|
333
333
|
msgstr ""
|
334
334
|
|
335
|
+
#. module: base_tier_validation
|
336
|
+
#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_accepted
|
337
|
+
msgid ""
|
338
|
+
"If set, reviewers will be notified by email when a review related to this "
|
339
|
+
"definition is accepted."
|
340
|
+
msgstr ""
|
341
|
+
|
342
|
+
#. module: base_tier_validation
|
343
|
+
#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_rejected
|
344
|
+
msgid ""
|
345
|
+
"If set, reviewers will be notified by email when a review related to this "
|
346
|
+
"definition is rejected."
|
347
|
+
msgstr ""
|
348
|
+
|
349
|
+
#. module: base_tier_validation
|
350
|
+
#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_restarted
|
351
|
+
msgid ""
|
352
|
+
"If set, reviewers will be notified by email when a reviews related to this "
|
353
|
+
"definition are restarted."
|
354
|
+
msgstr ""
|
355
|
+
|
335
356
|
#. module: base_tier_validation
|
336
357
|
#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_uid
|
337
358
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_uid
|
@@ -388,11 +409,26 @@ msgstr ""
|
|
388
409
|
msgid "No reviews to do."
|
389
410
|
msgstr "没有待审批的项目。"
|
390
411
|
|
412
|
+
#. module: base_tier_validation
|
413
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_accepted
|
414
|
+
msgid "Notify Reviewers on Accepted"
|
415
|
+
msgstr ""
|
416
|
+
|
391
417
|
#. module: base_tier_validation
|
392
418
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_create
|
393
419
|
msgid "Notify Reviewers on Creation"
|
394
420
|
msgstr "创建时通知审批人"
|
395
421
|
|
422
|
+
#. module: base_tier_validation
|
423
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_rejected
|
424
|
+
msgid "Notify Reviewers on Rejected"
|
425
|
+
msgstr ""
|
426
|
+
|
427
|
+
#. module: base_tier_validation
|
428
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_restarted
|
429
|
+
msgid "Notify Reviewers on Restarted"
|
430
|
+
msgstr ""
|
431
|
+
|
396
432
|
#. module: base_tier_validation
|
397
433
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_pending
|
398
434
|
msgid "Notify Reviewers on reaching Pending"
|
@@ -74,6 +74,21 @@ class TierDefinition(models.Model):
|
|
74
74
|
"Usefull in an Approve by sequence scenario. "
|
75
75
|
"An notification request to review is sent out when it's their turn to review.",
|
76
76
|
)
|
77
|
+
notify_on_accepted = fields.Boolean(
|
78
|
+
string="Notify Reviewers on Accepted",
|
79
|
+
help="If set, reviewers will be notified by email when a review related "
|
80
|
+
"to this definition is accepted.",
|
81
|
+
)
|
82
|
+
notify_on_rejected = fields.Boolean(
|
83
|
+
string="Notify Reviewers on Rejected",
|
84
|
+
help="If set, reviewers will be notified by email when a review related "
|
85
|
+
"to this definition is rejected.",
|
86
|
+
)
|
87
|
+
notify_on_restarted = fields.Boolean(
|
88
|
+
string="Notify Reviewers on Restarted",
|
89
|
+
help="If set, reviewers will be notified by email when a reviews related "
|
90
|
+
"to this definition are restarted.",
|
91
|
+
)
|
77
92
|
has_comment = fields.Boolean(string="Comment", default=False)
|
78
93
|
approve_sequence = fields.Boolean(
|
79
94
|
string="Approve by sequence",
|
@@ -352,9 +352,20 @@ class TierValidation(models.AbstractModel):
|
|
352
352
|
"reviewed_date": fields.Datetime.now(),
|
353
353
|
}
|
354
354
|
)
|
355
|
-
|
356
|
-
|
357
|
-
|
355
|
+
reviews_to_notify = user_reviews.filtered(
|
356
|
+
lambda r: r.definition_id.notify_on_accepted
|
357
|
+
)
|
358
|
+
if reviews_to_notify:
|
359
|
+
subscribe = "message_subscribe"
|
360
|
+
if hasattr(self, subscribe):
|
361
|
+
getattr(self, subscribe)(
|
362
|
+
partner_ids=reviews_to_notify.mapped("reviewer_ids")
|
363
|
+
.mapped("partner_id")
|
364
|
+
.ids
|
365
|
+
)
|
366
|
+
for review in reviews_to_notify:
|
367
|
+
rec = self.env[review.model].browse(review.res_id)
|
368
|
+
rec._notify_accepted_reviews()
|
358
369
|
|
359
370
|
def _get_requested_notification_subtype(self):
|
360
371
|
return "base_tier_validation.mt_tier_validation_requested"
|
@@ -459,9 +470,21 @@ class TierValidation(models.AbstractModel):
|
|
459
470
|
"reviewed_date": fields.Datetime.now(),
|
460
471
|
}
|
461
472
|
)
|
462
|
-
|
463
|
-
|
464
|
-
|
473
|
+
|
474
|
+
reviews_to_notify = user_reviews.filtered(
|
475
|
+
lambda r: r.definition_id.notify_on_rejected
|
476
|
+
)
|
477
|
+
if reviews_to_notify:
|
478
|
+
subscribe = "message_subscribe"
|
479
|
+
if hasattr(self, subscribe):
|
480
|
+
getattr(self, subscribe)(
|
481
|
+
partner_ids=reviews_to_notify.mapped("reviewer_ids")
|
482
|
+
.mapped("partner_id")
|
483
|
+
.ids
|
484
|
+
)
|
485
|
+
for review in reviews_to_notify:
|
486
|
+
rec = self.env[review.model].browse(review.res_id)
|
487
|
+
rec._notify_rejected_review()
|
465
488
|
|
466
489
|
def _notify_created_review_body(self):
|
467
490
|
return _("A record to be reviewed has been created by %s.") % (
|
@@ -536,6 +559,7 @@ class TierValidation(models.AbstractModel):
|
|
536
559
|
|
537
560
|
def restart_validation(self):
|
538
561
|
for rec in self:
|
562
|
+
partners_to_notify_ids = False
|
539
563
|
if getattr(rec, self._state_field) in self._state_from:
|
540
564
|
to_update_counter = (
|
541
565
|
rec.mapped("review_ids").filtered(
|
@@ -544,10 +568,26 @@ class TierValidation(models.AbstractModel):
|
|
544
568
|
and True
|
545
569
|
or False
|
546
570
|
)
|
571
|
+
reviews_to_notify = rec.review_ids.filtered(
|
572
|
+
lambda r: r.definition_id.notify_on_restarted
|
573
|
+
)
|
574
|
+
if reviews_to_notify:
|
575
|
+
partners_to_notify_ids = (
|
576
|
+
reviews_to_notify.mapped("reviewer_ids")
|
577
|
+
.mapped("partner_id")
|
578
|
+
.ids
|
579
|
+
)
|
547
580
|
rec.mapped("review_ids").unlink()
|
548
581
|
if to_update_counter:
|
549
582
|
self._update_counter({"review_deleted": True})
|
550
|
-
|
583
|
+
if partners_to_notify_ids:
|
584
|
+
subscribe = "message_subscribe"
|
585
|
+
reviews_to_notify = rec.review_ids.filtered(
|
586
|
+
lambda r: r.definition_id.notify_on_restarted
|
587
|
+
)
|
588
|
+
if hasattr(self, subscribe):
|
589
|
+
getattr(self, subscribe)(partner_ids=partners_to_notify_ids)
|
590
|
+
rec._notify_restarted_review()
|
551
591
|
|
552
592
|
@api.model
|
553
593
|
def _update_counter(self, review_counter):
|
@@ -366,7 +366,7 @@ ul.auto-toc {
|
|
366
366
|
!! This file is generated by oca-gen-addon-readme !!
|
367
367
|
!! changes will be overwritten. !!
|
368
368
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
369
|
-
!! source digest: sha256:
|
369
|
+
!! source digest: sha256:1972fd9b89f95ec6bdb14bea217d28a7f7ca6df56e7517a86e002f9e36c9d3b6
|
370
370
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
371
371
|
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Mature" src="https://img.shields.io/badge/maturity-Mature-brightgreen.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/server-ux/tree/17.0/base_tier_validation"><img alt="OCA/server-ux" src="https://img.shields.io/badge/github-OCA%2Fserver--ux-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/server-ux-17-0/server-ux-17-0-base_tier_validation"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/server-ux&target_branch=17.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
|
372
372
|
<p>Validating some operations is a common need across different areas in a
|
@@ -587,6 +587,7 @@ If you spotted it first, help us to smash it by providing a detailed and welcome
|
|
587
587
|
<li>Javier Colmeiro <<a class="reference external" href="mailto:javier.colmeiro@braintec.com">javier.colmeiro@braintec.com</a>></li>
|
588
588
|
<li>bosd</li>
|
589
589
|
<li>Evan Soh <<a class="reference external" href="mailto:evan.soh@omnisoftsolution.com">evan.soh@omnisoftsolution.com</a>></li>
|
590
|
+
<li>Manuel Regidor <<a class="reference external" href="mailto:manuel.regidor@sygel.es">manuel.regidor@sygel.es</a>></li>
|
590
591
|
</ul>
|
591
592
|
</div>
|
592
593
|
<div class="section" id="maintainers">
|
@@ -547,6 +547,376 @@ class TierTierValidation(CommonTierValidation):
|
|
547
547
|
request = test_record2._notify_requested_review_body()
|
548
548
|
self.assertIn(request, msg2)
|
549
549
|
|
550
|
+
def test_21_notify_on_create(self):
|
551
|
+
# notify on create
|
552
|
+
tier_definition = self.env["tier.definition"].search([])
|
553
|
+
tier_definition.write(
|
554
|
+
{
|
555
|
+
"notify_on_create": True,
|
556
|
+
"notify_on_accepted": False,
|
557
|
+
"notify_on_rejected": False,
|
558
|
+
"notify_on_restarted": False,
|
559
|
+
"review_type": "group",
|
560
|
+
"reviewer_group_id": self.env.ref("base.group_system").id,
|
561
|
+
}
|
562
|
+
)
|
563
|
+
test_record_1 = self.test_model.create({"test_field": 1})
|
564
|
+
notifications_no_1 = len(
|
565
|
+
self.env["mail.notification"].search(
|
566
|
+
[("res_partner_id", "=", self.test_user_1.partner_id.id)]
|
567
|
+
)
|
568
|
+
)
|
569
|
+
test_record_1.request_validation()
|
570
|
+
notifications_no_2 = len(
|
571
|
+
self.env["mail.notification"].search(
|
572
|
+
[("res_partner_id", "=", self.test_user_1.partner_id.id)]
|
573
|
+
)
|
574
|
+
)
|
575
|
+
self.assertEqual(notifications_no_2, notifications_no_1 + 1)
|
576
|
+
|
577
|
+
# do not notify on create
|
578
|
+
tier_definition.write({"notify_on_create": False})
|
579
|
+
test_record_2 = self.test_model.create({"test_field": 1})
|
580
|
+
notifications_no_1 = len(
|
581
|
+
self.env["mail.notification"].search(
|
582
|
+
[("res_partner_id", "=", self.test_user_1.partner_id.id)]
|
583
|
+
)
|
584
|
+
)
|
585
|
+
test_record_2.request_validation()
|
586
|
+
notifications_no_2 = len(
|
587
|
+
self.env["mail.notification"].search(
|
588
|
+
[("res_partner_id", "=", self.test_user_1.partner_id.id)]
|
589
|
+
)
|
590
|
+
)
|
591
|
+
self.assertEqual(notifications_no_2, notifications_no_1)
|
592
|
+
|
593
|
+
def test_22_notify_on_accepted(self):
|
594
|
+
self.test_user_2.write(
|
595
|
+
{
|
596
|
+
"groups_id": [(6, 0, self.env.ref("base.group_system").ids)],
|
597
|
+
}
|
598
|
+
)
|
599
|
+
|
600
|
+
# notify on accepted
|
601
|
+
tier_definition = self.env["tier.definition"].search([])
|
602
|
+
tier_definition.write(
|
603
|
+
{
|
604
|
+
"notify_on_create": False,
|
605
|
+
"notify_on_accepted": True,
|
606
|
+
"notify_on_rejected": False,
|
607
|
+
"notify_on_restarted": False,
|
608
|
+
"review_type": "group",
|
609
|
+
"reviewer_group_id": self.env.ref("base.group_system").id,
|
610
|
+
}
|
611
|
+
)
|
612
|
+
test_record_1 = self.test_model.create({"test_field": 1})
|
613
|
+
test_record_1.request_validation()
|
614
|
+
test_record_1.invalidate_model()
|
615
|
+
record = test_record_1.with_user(self.test_user_2.id)
|
616
|
+
notifications_no_1 = len(
|
617
|
+
self.env["mail.notification"].search(
|
618
|
+
[("res_partner_id", "=", self.test_user_1.partner_id.id)]
|
619
|
+
)
|
620
|
+
)
|
621
|
+
record.validate_tier()
|
622
|
+
notifications_no_2 = len(
|
623
|
+
self.env["mail.notification"].search(
|
624
|
+
[("res_partner_id", "=", self.test_user_1.partner_id.id)]
|
625
|
+
)
|
626
|
+
)
|
627
|
+
self.assertEqual(notifications_no_2, notifications_no_1 + 1)
|
628
|
+
|
629
|
+
# do not notify on accepted
|
630
|
+
tier_definition.write({"notify_on_accepted": False})
|
631
|
+
test_record_2 = self.test_model.create({"test_field": 1})
|
632
|
+
test_record_2.request_validation()
|
633
|
+
test_record_2.invalidate_model()
|
634
|
+
test_record_2.with_user(self.test_user_2.id)
|
635
|
+
notifications_no_1 = len(
|
636
|
+
self.env["mail.notification"].search(
|
637
|
+
[("res_partner_id", "=", self.test_user_1.partner_id.id)]
|
638
|
+
)
|
639
|
+
)
|
640
|
+
test_record_2.validate_tier()
|
641
|
+
notifications_no_2 = len(
|
642
|
+
self.env["mail.notification"].search(
|
643
|
+
[("res_partner_id", "=", self.test_user_1.partner_id.id)]
|
644
|
+
)
|
645
|
+
)
|
646
|
+
self.assertEqual(notifications_no_2, notifications_no_1)
|
647
|
+
|
648
|
+
def test_23_notify_on_rejected(self):
|
649
|
+
self.test_user_2.write(
|
650
|
+
{
|
651
|
+
"groups_id": [(6, 0, self.env.ref("base.group_system").ids)],
|
652
|
+
}
|
653
|
+
)
|
654
|
+
|
655
|
+
# notify on rejected
|
656
|
+
tier_definition = self.env["tier.definition"].search([])
|
657
|
+
tier_definition.write(
|
658
|
+
{
|
659
|
+
"notify_on_create": False,
|
660
|
+
"notify_on_accepted": False,
|
661
|
+
"notify_on_rejected": True,
|
662
|
+
"notify_on_restarted": False,
|
663
|
+
"review_type": "group",
|
664
|
+
"reviewer_group_id": self.env.ref("base.group_system").id,
|
665
|
+
}
|
666
|
+
)
|
667
|
+
test_record_1 = self.test_model.create({"test_field": 1})
|
668
|
+
test_record_1.request_validation()
|
669
|
+
test_record_1.invalidate_model()
|
670
|
+
record = test_record_1.with_user(self.test_user_2.id)
|
671
|
+
notifications_no_1 = len(
|
672
|
+
self.env["mail.notification"].search(
|
673
|
+
[("res_partner_id", "=", self.test_user_1.partner_id.id)]
|
674
|
+
)
|
675
|
+
)
|
676
|
+
record.reject_tier()
|
677
|
+
notifications_no_2 = len(
|
678
|
+
self.env["mail.notification"].search(
|
679
|
+
[("res_partner_id", "=", self.test_user_1.partner_id.id)]
|
680
|
+
)
|
681
|
+
)
|
682
|
+
self.assertEqual(notifications_no_2, notifications_no_1 + 1)
|
683
|
+
|
684
|
+
# do not notify on rejected
|
685
|
+
tier_definition.write({"notify_on_rejected": False})
|
686
|
+
test_record_2 = self.test_model.create({"test_field": 1})
|
687
|
+
test_record_2.request_validation()
|
688
|
+
test_record_2.invalidate_model()
|
689
|
+
test_record_2.with_user(self.test_user_2.id)
|
690
|
+
|
691
|
+
notifications_no_1 = len(
|
692
|
+
self.env["mail.notification"].search(
|
693
|
+
[("res_partner_id", "=", self.test_user_1.partner_id.id)]
|
694
|
+
)
|
695
|
+
)
|
696
|
+
test_record_2.reject_tier()
|
697
|
+
notifications_no_2 = len(
|
698
|
+
self.env["mail.notification"].search(
|
699
|
+
[("res_partner_id", "=", self.test_user_1.partner_id.id)]
|
700
|
+
)
|
701
|
+
)
|
702
|
+
self.assertEqual(notifications_no_2, notifications_no_1)
|
703
|
+
|
704
|
+
def test_24_notify_on_restarted(self):
|
705
|
+
self.test_user_2.write(
|
706
|
+
{
|
707
|
+
"groups_id": [(6, 0, self.env.ref("base.group_system").ids)],
|
708
|
+
}
|
709
|
+
)
|
710
|
+
|
711
|
+
# notify on restarted
|
712
|
+
tier_definition = self.env["tier.definition"].search([])
|
713
|
+
tier_definition.write(
|
714
|
+
{
|
715
|
+
"notify_on_create": False,
|
716
|
+
"notify_on_accepted": False,
|
717
|
+
"notify_on_rejected": False,
|
718
|
+
"notify_on_restarted": True,
|
719
|
+
"review_type": "group",
|
720
|
+
"reviewer_group_id": self.env.ref("base.group_system").id,
|
721
|
+
}
|
722
|
+
)
|
723
|
+
test_record_1 = self.test_model.create({"test_field": 1})
|
724
|
+
test_record_1.request_validation()
|
725
|
+
test_record_1.invalidate_model()
|
726
|
+
record = test_record_1.with_user(self.test_user_2.id)
|
727
|
+
notifications_no_1 = len(
|
728
|
+
self.env["mail.notification"].search(
|
729
|
+
[("res_partner_id", "=", self.test_user_1.partner_id.id)]
|
730
|
+
)
|
731
|
+
)
|
732
|
+
record.restart_validation()
|
733
|
+
notifications_no_2 = len(
|
734
|
+
self.env["mail.notification"].search(
|
735
|
+
[("res_partner_id", "=", self.test_user_1.partner_id.id)]
|
736
|
+
)
|
737
|
+
)
|
738
|
+
self.assertEqual(notifications_no_2, notifications_no_1 + 1)
|
739
|
+
|
740
|
+
# do not notify on restarted
|
741
|
+
tier_definition.write({"notify_on_restarted": False})
|
742
|
+
test_record_2 = self.test_model.create({"test_field": 1})
|
743
|
+
test_record_2.request_validation()
|
744
|
+
test_record_2.with_user(self.test_user_2.id)
|
745
|
+
notifications_no_1 = len(
|
746
|
+
self.env["mail.notification"].search(
|
747
|
+
[("res_partner_id", "=", self.test_user_1.partner_id.id)]
|
748
|
+
)
|
749
|
+
)
|
750
|
+
test_record_2.restart_validation()
|
751
|
+
notifications_no_2 = len(
|
752
|
+
self.env["mail.notification"].search(
|
753
|
+
[("res_partner_id", "=", self.test_user_1.partner_id.id)]
|
754
|
+
)
|
755
|
+
)
|
756
|
+
self.assertEqual(notifications_no_2, notifications_no_1)
|
757
|
+
|
758
|
+
def test_25_all_notification(self):
|
759
|
+
self.test_user_2.write(
|
760
|
+
{
|
761
|
+
"groups_id": [(6, 0, self.env.ref("base.group_system").ids)],
|
762
|
+
}
|
763
|
+
)
|
764
|
+
|
765
|
+
# notify on restarted
|
766
|
+
tier_definition = self.env["tier.definition"].search([])
|
767
|
+
tier_definition.write(
|
768
|
+
{
|
769
|
+
"notify_on_create": True,
|
770
|
+
"notify_on_accepted": True,
|
771
|
+
"notify_on_rejected": True,
|
772
|
+
"notify_on_restarted": True,
|
773
|
+
"review_type": "group",
|
774
|
+
"reviewer_group_id": self.env.ref("base.group_system").id,
|
775
|
+
}
|
776
|
+
)
|
777
|
+
|
778
|
+
test_record = self.test_model.create({"test_field": 1})
|
779
|
+
|
780
|
+
# request validation
|
781
|
+
notifications_no_1 = len(
|
782
|
+
self.env["mail.notification"].search(
|
783
|
+
[("res_partner_id", "=", self.test_user_1.partner_id.id)]
|
784
|
+
)
|
785
|
+
)
|
786
|
+
test_record.request_validation()
|
787
|
+
test_record.invalidate_model()
|
788
|
+
notifications_no_2 = len(
|
789
|
+
self.env["mail.notification"].search(
|
790
|
+
[("res_partner_id", "=", self.test_user_1.partner_id.id)]
|
791
|
+
)
|
792
|
+
)
|
793
|
+
self.assertEqual(notifications_no_2, notifications_no_1 + 1)
|
794
|
+
|
795
|
+
# accept validation
|
796
|
+
record = test_record.with_user(self.test_user_2.id)
|
797
|
+
notifications_no_1 = len(
|
798
|
+
self.env["mail.notification"].search(
|
799
|
+
[("res_partner_id", "=", self.test_user_1.partner_id.id)]
|
800
|
+
)
|
801
|
+
)
|
802
|
+
record.validate_tier()
|
803
|
+
notifications_no_2 = len(
|
804
|
+
self.env["mail.notification"].search(
|
805
|
+
[("res_partner_id", "=", self.test_user_1.partner_id.id)]
|
806
|
+
)
|
807
|
+
)
|
808
|
+
self.assertEqual(notifications_no_2, notifications_no_1 + 1)
|
809
|
+
|
810
|
+
# restart validation
|
811
|
+
notifications_no_1 = len(
|
812
|
+
self.env["mail.notification"].search(
|
813
|
+
[("res_partner_id", "=", self.test_user_1.partner_id.id)]
|
814
|
+
)
|
815
|
+
)
|
816
|
+
record.restart_validation()
|
817
|
+
notifications_no_2 = len(
|
818
|
+
self.env["mail.notification"].search(
|
819
|
+
[("res_partner_id", "=", self.test_user_1.partner_id.id)]
|
820
|
+
)
|
821
|
+
)
|
822
|
+
self.assertEqual(notifications_no_2, notifications_no_1 + 1)
|
823
|
+
|
824
|
+
# reject validation
|
825
|
+
record.request_validation()
|
826
|
+
notifications_no_1 = len(
|
827
|
+
self.env["mail.notification"].search(
|
828
|
+
[("res_partner_id", "=", self.test_user_1.partner_id.id)]
|
829
|
+
)
|
830
|
+
)
|
831
|
+
record.reject_tier()
|
832
|
+
notifications_no_2 = len(
|
833
|
+
self.env["mail.notification"].search(
|
834
|
+
[("res_partner_id", "=", self.test_user_1.partner_id.id)]
|
835
|
+
)
|
836
|
+
)
|
837
|
+
self.assertEqual(notifications_no_2, notifications_no_1 + 1)
|
838
|
+
|
839
|
+
def test_26_no_notification(self):
|
840
|
+
self.test_user_2.write(
|
841
|
+
{
|
842
|
+
"groups_id": [(6, 0, self.env.ref("base.group_system").ids)],
|
843
|
+
}
|
844
|
+
)
|
845
|
+
|
846
|
+
# notify on restarted
|
847
|
+
tier_definition = self.env["tier.definition"].search([])
|
848
|
+
tier_definition.write(
|
849
|
+
{
|
850
|
+
"notify_on_create": False,
|
851
|
+
"notify_on_accepted": False,
|
852
|
+
"notify_on_rejected": False,
|
853
|
+
"notify_on_restarted": False,
|
854
|
+
"review_type": "group",
|
855
|
+
"reviewer_group_id": self.env.ref("base.group_system").id,
|
856
|
+
}
|
857
|
+
)
|
858
|
+
|
859
|
+
test_record = self.test_model.create({"test_field": 1})
|
860
|
+
|
861
|
+
# request validation
|
862
|
+
notifications_no_1 = len(
|
863
|
+
self.env["mail.notification"].search(
|
864
|
+
[("res_partner_id", "=", self.test_user_1.partner_id.id)]
|
865
|
+
)
|
866
|
+
)
|
867
|
+
test_record.request_validation()
|
868
|
+
test_record.invalidate_model()
|
869
|
+
notifications_no_2 = len(
|
870
|
+
self.env["mail.notification"].search(
|
871
|
+
[("res_partner_id", "=", self.test_user_1.partner_id.id)]
|
872
|
+
)
|
873
|
+
)
|
874
|
+
self.assertEqual(notifications_no_2, notifications_no_1)
|
875
|
+
|
876
|
+
# accept validation
|
877
|
+
record = test_record.with_user(self.test_user_2.id)
|
878
|
+
notifications_no_1 = len(
|
879
|
+
self.env["mail.notification"].search(
|
880
|
+
[("res_partner_id", "=", self.test_user_1.partner_id.id)]
|
881
|
+
)
|
882
|
+
)
|
883
|
+
record.validate_tier()
|
884
|
+
notifications_no_2 = len(
|
885
|
+
self.env["mail.notification"].search(
|
886
|
+
[("res_partner_id", "=", self.test_user_1.partner_id.id)]
|
887
|
+
)
|
888
|
+
)
|
889
|
+
self.assertEqual(notifications_no_2, notifications_no_1)
|
890
|
+
|
891
|
+
# restart validation
|
892
|
+
notifications_no_1 = len(
|
893
|
+
self.env["mail.notification"].search(
|
894
|
+
[("res_partner_id", "=", self.test_user_1.partner_id.id)]
|
895
|
+
)
|
896
|
+
)
|
897
|
+
record.restart_validation()
|
898
|
+
notifications_no_2 = len(
|
899
|
+
self.env["mail.notification"].search(
|
900
|
+
[("res_partner_id", "=", self.test_user_1.partner_id.id)]
|
901
|
+
)
|
902
|
+
)
|
903
|
+
self.assertEqual(notifications_no_2, notifications_no_1)
|
904
|
+
|
905
|
+
# reject validation
|
906
|
+
record.request_validation()
|
907
|
+
notifications_no_1 = len(
|
908
|
+
self.env["mail.notification"].search(
|
909
|
+
[("res_partner_id", "=", self.test_user_1.partner_id.id)]
|
910
|
+
)
|
911
|
+
)
|
912
|
+
record.reject_tier()
|
913
|
+
notifications_no_2 = len(
|
914
|
+
self.env["mail.notification"].search(
|
915
|
+
[("res_partner_id", "=", self.test_user_1.partner_id.id)]
|
916
|
+
)
|
917
|
+
)
|
918
|
+
self.assertEqual(notifications_no_2, notifications_no_1)
|
919
|
+
|
550
920
|
|
551
921
|
@tagged("at_install")
|
552
922
|
class TierTierValidationView(CommonTierValidation):
|
@@ -113,6 +113,9 @@
|
|
113
113
|
<group name="notify">
|
114
114
|
<field name="notify_on_create" />
|
115
115
|
<field name="notify_on_pending" />
|
116
|
+
<field name="notify_on_accepted" />
|
117
|
+
<field name="notify_on_rejected" />
|
118
|
+
<field name="notify_on_restarted" />
|
116
119
|
<field name="has_comment" />
|
117
120
|
</group>
|
118
121
|
</group>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: odoo-addon-base_tier_validation
|
3
|
-
Version: 17.0.1.
|
3
|
+
Version: 17.0.1.5.0.1
|
4
4
|
Requires-Python: >=3.10
|
5
5
|
Requires-Dist: odoo>=17.0a,<17.1dev
|
6
6
|
Summary: Implement a validation process based on tiers.
|
@@ -23,7 +23,7 @@ Base Tier Validation
|
|
23
23
|
!! This file is generated by oca-gen-addon-readme !!
|
24
24
|
!! changes will be overwritten. !!
|
25
25
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
26
|
-
!! source digest: sha256:
|
26
|
+
!! source digest: sha256:1972fd9b89f95ec6bdb14bea217d28a7f7ca6df56e7517a86e002f9e36c9d3b6
|
27
27
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
28
28
|
|
29
29
|
.. |badge1| image:: https://img.shields.io/badge/maturity-Mature-brightgreen.png
|
@@ -250,6 +250,7 @@ Contributors
|
|
250
250
|
- Javier Colmeiro <javier.colmeiro@braintec.com>
|
251
251
|
- bosd
|
252
252
|
- Evan Soh <evan.soh@omnisoftsolution.com>
|
253
|
+
- Manuel Regidor <manuel.regidor@sygel.es>
|
253
254
|
|
254
255
|
Maintainers
|
255
256
|
-----------
|
@@ -1,31 +1,31 @@
|
|
1
|
-
odoo/addons/base_tier_validation/README.rst,sha256=
|
1
|
+
odoo/addons/base_tier_validation/README.rst,sha256=W2QwSTAQX70dj8m1y5arzETy6nyNg4U7CGCXdab3WJc,7527
|
2
2
|
odoo/addons/base_tier_validation/__init__.py,sha256=rKfzYX9RhkkCxgh2f0PJLYN45Kw8T8-fwxw1pbjLuug,108
|
3
|
-
odoo/addons/base_tier_validation/__manifest__.py,sha256=
|
3
|
+
odoo/addons/base_tier_validation/__manifest__.py,sha256=ZO4UIXhoEDSDAkxrdJuKkS7GIcJD9ajbmP8gKxOKh1U,1606
|
4
4
|
odoo/addons/base_tier_validation/data/mail_data.xml,sha256=UKzkLT8rYrFuThdp43v7nLW5SOco4vvIIAhbB_IAQZs,1414
|
5
|
-
odoo/addons/base_tier_validation/i18n/base_tier_validation.pot,sha256=
|
6
|
-
odoo/addons/base_tier_validation/i18n/es.po,sha256=
|
7
|
-
odoo/addons/base_tier_validation/i18n/es_MX.po,sha256=
|
8
|
-
odoo/addons/base_tier_validation/i18n/fr.po,sha256=
|
9
|
-
odoo/addons/base_tier_validation/i18n/it.po,sha256=
|
10
|
-
odoo/addons/base_tier_validation/i18n/nl_NL.po,sha256=
|
11
|
-
odoo/addons/base_tier_validation/i18n/sv.po,sha256=
|
12
|
-
odoo/addons/base_tier_validation/i18n/tr.po,sha256=
|
13
|
-
odoo/addons/base_tier_validation/i18n/zh_CN.po,sha256=
|
5
|
+
odoo/addons/base_tier_validation/i18n/base_tier_validation.pot,sha256=kLaZk1QzRvPUFTxYyATaYg7Xtqj6ZqKT8j4V6Lwh_jQ,26806
|
6
|
+
odoo/addons/base_tier_validation/i18n/es.po,sha256=KuWBksLhuFyMwJ38FX9GZjEQ9f7ACTrI4PsTW2Qi8II,31978
|
7
|
+
odoo/addons/base_tier_validation/i18n/es_MX.po,sha256=jZqztOsZHTRMOY9d2iK1OG0HYCufAhuFK9cGoXvJ2KE,30201
|
8
|
+
odoo/addons/base_tier_validation/i18n/fr.po,sha256=nxS-gcZ8rtqdX6IJbIDRpj6tWw2s-d3GQTJ0IjFzZaA,31207
|
9
|
+
odoo/addons/base_tier_validation/i18n/it.po,sha256=x38KQc9DL9aoPACJGS5Nx4w34RmWuCOwnpA9A1J_e6Q,31647
|
10
|
+
odoo/addons/base_tier_validation/i18n/nl_NL.po,sha256=8-gfWvAqGgFjX5EE9FMeypSFsAp_mSX6McCIdBFE5h0,30500
|
11
|
+
odoo/addons/base_tier_validation/i18n/sv.po,sha256=fr81ONp-Y7xBvMW83d9ryLQsZCfiyILv741CaVQ6nYo,30784
|
12
|
+
odoo/addons/base_tier_validation/i18n/tr.po,sha256=kJCCMKVkULuJjhh5SHf2SK7Pu03fmMaBuoNckKd2MSY,30073
|
13
|
+
odoo/addons/base_tier_validation/i18n/zh_CN.po,sha256=0gJMwbLvUSNpV64Yl9S49sr5Mb9mHeuPyFN9yE2lnQ4,28624
|
14
14
|
odoo/addons/base_tier_validation/models/__init__.py,sha256=mLFF29I3WBYA2Qwlf9NU4pP2KwDKn5JpbZRzwe9-9pg,210
|
15
15
|
odoo/addons/base_tier_validation/models/res_config_settings.py,sha256=xMdQiCfU5p7Z5puKcSRvJihLpI9ulyVFUd_QJjAOuwc,619
|
16
16
|
odoo/addons/base_tier_validation/models/res_users.py,sha256=W7i5pJR4b5Pif9VWQW-0wpCIhyKGl0y3J8DS32oZWbA,2639
|
17
|
-
odoo/addons/base_tier_validation/models/tier_definition.py,sha256=
|
17
|
+
odoo/addons/base_tier_validation/models/tier_definition.py,sha256=yHFe4atrr-zHUPAfmxB1BYyWK8oC172JTLPnEbCoanI,4125
|
18
18
|
odoo/addons/base_tier_validation/models/tier_review.py,sha256=vuR832VVM-ZUDm-4j9zK1BSNnL0JfesxBSLyhW4Zia8,6754
|
19
|
-
odoo/addons/base_tier_validation/models/tier_validation.py,sha256=
|
19
|
+
odoo/addons/base_tier_validation/models/tier_validation.py,sha256=QdE966M-46aTix_rlIuKiH28pYrduf8jsjK2PHir61Q,27196
|
20
20
|
odoo/addons/base_tier_validation/readme/CONFIGURE.md,sha256=95NOZLcm0wpb4a8gC89YlSibj7GZ1kz5IbDsuqaaNII,752
|
21
|
-
odoo/addons/base_tier_validation/readme/CONTRIBUTORS.md,sha256=
|
21
|
+
odoo/addons/base_tier_validation/readme/CONTRIBUTORS.md,sha256=_JIIvdWdZ7iVO1dpyq9XJ1UtytA1gowJ9L0y0LABJuo,504
|
22
22
|
odoo/addons/base_tier_validation/readme/DESCRIPTION.md,sha256=nFbYOx89EsI26v6NJF9d-Wm-X2YtHduSRlV5Euk3WWc,651
|
23
23
|
odoo/addons/base_tier_validation/readme/HISTORY.md,sha256=P8GfoUhYG7QGIpa8Z0L67E3YEeZBFQCwpDXnt5WG-DY,1332
|
24
24
|
odoo/addons/base_tier_validation/readme/ROADMAP.md,sha256=HRRQQuOlSeOF5yfqG0KuANnvrde8y6Suz2pbrXB1OyU,864
|
25
25
|
odoo/addons/base_tier_validation/security/ir.model.access.csv,sha256=BuwLCexKbuj-5uOaxK8STRW1UMAhFJVaZj9Kto4iBp8,900
|
26
26
|
odoo/addons/base_tier_validation/security/tier_validation_security.xml,sha256=eWFwz-osHgYFmVoEVzOSboO9oqUMtQ8oygyaz0os50Y,806
|
27
27
|
odoo/addons/base_tier_validation/static/description/icon.png,sha256=6xBPJauaFOF0KDHfHgQopSc28kKvxMaeoQFQWZtfZDo,9455
|
28
|
-
odoo/addons/base_tier_validation/static/description/index.html,sha256
|
28
|
+
odoo/addons/base_tier_validation/static/description/index.html,sha256=sZbHc61YTHd5aYglL0jSigydsbjXQ5w40SsZ9dAi_og,21686
|
29
29
|
odoo/addons/base_tier_validation/static/src/components/tier_review_menu/tier_review_menu.esm.js,sha256=MNfjKSg-9h3JfeXiYlf15SAdVHjj3aUvedj0BqVvJrk,2254
|
30
30
|
odoo/addons/base_tier_validation/static/src/components/tier_review_menu/tier_review_menu.xml,sha256=_wIy5Gv2VUJEXD5_FGphx1J19-Y8uzFlWryuPqlIh8c,2798
|
31
31
|
odoo/addons/base_tier_validation/static/src/components/tier_review_widget/tier_review_widget.esm.js,sha256=MDWUp2ozeRdBoLeCfTcOnD-bKnk3yF6pHwtTAnsLZmg,1090
|
@@ -35,15 +35,15 @@ odoo/addons/base_tier_validation/static/src/js/services/tier_review_service.esm.
|
|
35
35
|
odoo/addons/base_tier_validation/templates/tier_validation_templates.xml,sha256=VI6kY0V6nVSz6KQ9GRxY_9TZkRrJgzBzsl9xFKtA__Y,3620
|
36
36
|
odoo/addons/base_tier_validation/tests/__init__.py,sha256=3z2_lQ9JiDSFDam4p24qDw5j02iaPb4m2naxv9DkbGA,122
|
37
37
|
odoo/addons/base_tier_validation/tests/common.py,sha256=Q0g3zv6cYrSPx8QHwsikFxRmi7TtmuUr4ID_9WvImd8,4504
|
38
|
-
odoo/addons/base_tier_validation/tests/test_tier_validation.py,sha256=
|
38
|
+
odoo/addons/base_tier_validation/tests/test_tier_validation.py,sha256=jSjddl2waQQzOMLGlAAuqKQrItlEeZodA7yMnasgE6g,38852
|
39
39
|
odoo/addons/base_tier_validation/tests/tier_validation_tester.py,sha256=sUN-BRUHDDQ8t1Dze5c6H_2XQqop7c5cEsA4vJksEpA,1660
|
40
40
|
odoo/addons/base_tier_validation/views/res_config_settings_views.xml,sha256=5HbrsAVaXRoQNX7utIQ_EzZrqzKnwBrV9uHsi-PHb9M,2640
|
41
|
-
odoo/addons/base_tier_validation/views/tier_definition_view.xml,sha256=
|
41
|
+
odoo/addons/base_tier_validation/views/tier_definition_view.xml,sha256=u0n0iMvMxECxoduao9IpYf1f0LG-sH7QXqIj1mKB1o4,7613
|
42
42
|
odoo/addons/base_tier_validation/views/tier_review_view.xml,sha256=tPzmpz-kbQwOOtJrAcsTJEP9bJLcfzWAITCpI86kZU4,966
|
43
43
|
odoo/addons/base_tier_validation/wizard/__init__.py,sha256=52q6-LAjYeJ1Vu5ahon_jnhds9VsoJvYaQCiZc82WKw,95
|
44
44
|
odoo/addons/base_tier_validation/wizard/comment_wizard.py,sha256=gj7zCcpe47-2ifxSRlE6okQ1wtq5Ok3JBVg2CtN0ZIU,879
|
45
45
|
odoo/addons/base_tier_validation/wizard/comment_wizard_view.xml,sha256=9XFTqrNwDCZH2IEX3HutaznSkBYk-6RERXzUDwObz4I,979
|
46
|
-
odoo_addon_base_tier_validation-17.0.1.
|
47
|
-
odoo_addon_base_tier_validation-17.0.1.
|
48
|
-
odoo_addon_base_tier_validation-17.0.1.
|
49
|
-
odoo_addon_base_tier_validation-17.0.1.
|
46
|
+
odoo_addon_base_tier_validation-17.0.1.5.0.1.dist-info/METADATA,sha256=1JOXDM9ngQpnzYY77dOJbq9pv4Y8f0bLLAcIRT93VTw,8125
|
47
|
+
odoo_addon_base_tier_validation-17.0.1.5.0.1.dist-info/WHEEL,sha256=n-3R37xDTBUi7r4325OZjhJyVIEQGKiCsyQgb8zW73A,81
|
48
|
+
odoo_addon_base_tier_validation-17.0.1.5.0.1.dist-info/top_level.txt,sha256=QE6RBQ0QX5f4eFuUcGgU5Kbq1A_qJcDs-e_vpr6pmfU,4
|
49
|
+
odoo_addon_base_tier_validation-17.0.1.5.0.1.dist-info/RECORD,,
|