diff --git a/base_tier_validation/data/mail_data.xml b/base_tier_validation/data/mail_data.xml index fdcef9e2e0..fc155345ce 100644 --- a/base_tier_validation/data/mail_data.xml +++ b/base_tier_validation/data/mail_data.xml @@ -6,7 +6,7 @@ forcecreate="1" > Tier Validation Requested - + @@ -16,7 +16,7 @@ forcecreate="1" > Tier Validation Accepted Notification - + @@ -26,7 +26,7 @@ forcecreate="1" > Tier Validation Rejected Notification - + @@ -36,7 +36,7 @@ forcecreate="1" > Tier Validation Restarted - + diff --git a/base_tier_validation/models/tier_validation.py b/base_tier_validation/models/tier_validation.py index 302fd61a2b..ca906308d6 100644 --- a/base_tier_validation/models/tier_validation.py +++ b/base_tier_validation/models/tier_validation.py @@ -491,29 +491,13 @@ def _validate_tier(self, tiers=False): reviews_to_notify = user_reviews.filtered( lambda r: r.definition_id.notify_on_accepted ) - # We need to notify all pending users if there is approve sequence - if tier_reviews and any(review.approve_sequence for review in tier_reviews): - reviews_to_notify = self.review_ids.filtered( - lambda r: r.status == "pending" and r.definition_id.notify_on_accepted - ) - # If there are approve sequence, only the following should be - # considered to notify - if reviews_to_notify and any( - review.approve_sequence for review in reviews_to_notify - ): - reviews_to_notify = reviews_to_notify.filtered( - lambda x: x.approve_sequence - )[0] if reviews_to_notify: subscribe = "message_subscribe" if hasattr(self, subscribe): getattr(self, subscribe)( partner_ids=reviews_to_notify.mapped("reviewer_ids") .mapped("partner_id") - .ids, - subtype_ids=self.env.ref( - self._get_accepted_notification_subtype() - ).ids, + .ids ) for review in reviews_to_notify: rec = self.env[review.model].browse(review.res_id) @@ -628,29 +612,13 @@ def _rejected_tier(self, tiers=False): reviews_to_notify = user_reviews.filtered( lambda r: r.definition_id.notify_on_rejected ) - # We need to notify all pending users if there is approve sequence - if tier_reviews and any(review.approve_sequence for review in tier_reviews): - reviews_to_notify = self.review_ids.filtered( - lambda r: r.status == "pending" and r.definition_id.notify_on_rejected - ) - # If there are approve sequence, only the following should be - # considered to notify - if reviews_to_notify and any( - review.approve_sequence for review in reviews_to_notify - ): - reviews_to_notify = reviews_to_notify.filtered( - lambda x: x.approve_sequence - )[0] if reviews_to_notify: subscribe = "message_subscribe" if hasattr(self, subscribe): getattr(self, subscribe)( partner_ids=reviews_to_notify.mapped("reviewer_ids") .mapped("partner_id") - .ids, - subtype_ids=self.env.ref( - self._get_rejected_notification_subtype() - ).ids, + .ids ) for review in reviews_to_notify: rec = self.env[review.model].browse(review.res_id) @@ -670,10 +638,7 @@ def _notify_review_requested(self, tier_reviews): # Subscribe reviewers and notify if len(users_to_notify) > 0: getattr(rec, subscribe)( - partner_ids=users_to_notify.mapped("partner_id").ids, - subtype_ids=self.env.ref( - self._get_requested_notification_subtype() - ).ids, + partner_ids=users_to_notify.mapped("partner_id").ids ) getattr(rec, post)( subtype_xmlid=self._get_requested_notification_subtype(), @@ -763,12 +728,7 @@ def restart_validation(self): lambda r: r.definition_id.notify_on_restarted ) if hasattr(self, subscribe): - getattr(self, subscribe)( - partner_ids=partners_to_notify_ids, - subtype_ids=self.env.ref( - self._get_restarted_notification_subtype() - ).ids, - ) + getattr(self, subscribe)(partner_ids=partners_to_notify_ids) rec._notify_restarted_review() def reevaluate_reviews(self): diff --git a/base_tier_validation/tests/__init__.py b/base_tier_validation/tests/__init__.py index 9859e84cad..0cbb7c32cc 100644 --- a/base_tier_validation/tests/__init__.py +++ b/base_tier_validation/tests/__init__.py @@ -1,4 +1,5 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from . import common from . import test_tier_validation from . import test_tier_validation_reminder diff --git a/base_tier_validation/tests/test_tier_validation.py b/base_tier_validation/tests/test_tier_validation.py index 19857bb165..907ce65f2e 100644 --- a/base_tier_validation/tests/test_tier_validation.py +++ b/base_tier_validation/tests/test_tier_validation.py @@ -1015,159 +1015,6 @@ def test_29_request_validation_same_company(self): self.assertEqual(len(reviews), 2) - def test_30_request_validation(self): - # Create new test record - test_record = self.test_model.create({"test_field": 2.5}) - # Create tier definitions for both tester models - self.tier_definition.write( - { - "approve_sequence": True, - "notify_on_create": True, - } - ) - def_2 = self.tier_def_obj.create( - { - "model_id": self.tester_model.id, - "review_type": "individual", - "reviewer_id": self.test_user_2.id, - "sequence": 20, - "approve_sequence": True, - "notify_on_create": False, - "notify_on_accepted": True, - } - ) - def_3 = self.tier_def_obj.create( - { - "model_id": self.tester_model.id, - "review_type": "individual", - "reviewer_id": self.test_user_3_multi_company.id, - "sequence": 10, - "approve_sequence": True, - "notify_on_create": False, - "notify_on_accepted": True, - } - ) - mt_tier_validation_requested = self.env.ref( - "base_tier_validation.mt_tier_validation_requested" - ) - mt_tier_validation_accepted = self.env.ref( - "base_tier_validation.mt_tier_validation_accepted" - ) - test_record.request_validation() - review_1 = test_record.review_ids.filtered( - lambda x: x.definition_id == self.tier_definition - ) - self.assertEqual(review_1.status, "pending") - review_2 = test_record.review_ids.filtered(lambda x: x.definition_id == def_2) - self.assertEqual(review_2.status, "pending") - review_3 = test_record.review_ids.filtered(lambda x: x.definition_id == def_3) - self.assertEqual(review_3.status, "pending") - followers = test_record.message_follower_ids - self.assertIn(self.test_user_1.partner_id, followers.mapped("partner_id")) - follower_1 = followers.filtered( - lambda x: x.partner_id == self.test_user_1.partner_id - ) - self.assertIn(mt_tier_validation_requested, follower_1.subtype_ids) - self.assertNotIn(mt_tier_validation_accepted, follower_1.subtype_ids) - self.assertNotIn(self.test_user_2.partner_id, followers.mapped("partner_id")) - self.assertNotIn( - self.test_user_3_multi_company.partner_id, followers.mapped("partner_id") - ) - old_messages = test_record.message_ids - test_record.with_user(self.test_user_1).validate_tier() - new_messages = test_record.message_ids - old_messages - self.assertEqual(len(new_messages), 1) - self.assertEqual(new_messages.subtype_id, mt_tier_validation_accepted) - self.assertEqual(self.test_user_2.partner_id, new_messages.notified_partner_ids) - self.assertEqual(review_1.status, "approved") - self.assertEqual(review_2.status, "pending") - self.assertEqual(review_3.status, "pending") - followers = test_record.message_follower_ids - self.assertIn(self.test_user_1.partner_id, followers.mapped("partner_id")) - self.assertIn(self.test_user_2.partner_id, followers.mapped("partner_id")) - follower_2 = followers.filtered( - lambda x: x.partner_id == self.test_user_2.partner_id - ) - self.assertNotIn(mt_tier_validation_requested, follower_2.subtype_ids) - self.assertIn(mt_tier_validation_accepted, follower_2.subtype_ids) - self.assertNotIn( - self.test_user_3_multi_company.partner_id, followers.mapped("partner_id") - ) - old_messages = test_record.message_ids - test_record.with_user(self.test_user_2).validate_tier() - new_messages = test_record.message_ids - old_messages - self.assertEqual(len(new_messages), 1) - self.assertEqual(new_messages.subtype_id, mt_tier_validation_accepted) - self.assertEqual( - self.test_user_3_multi_company.partner_id, new_messages.notified_partner_ids - ) - self.assertEqual(review_1.status, "approved") - self.assertEqual(review_2.status, "approved") - self.assertEqual(review_3.status, "pending") - followers = test_record.message_follower_ids - self.assertIn(self.test_user_1.partner_id, followers.mapped("partner_id")) - self.assertIn(self.test_user_2.partner_id, followers.mapped("partner_id")) - self.assertIn( - self.test_user_3_multi_company.partner_id, followers.mapped("partner_id") - ) - follower_3 = followers.filtered( - lambda x: x.partner_id == self.test_user_3_multi_company.partner_id - ) - self.assertNotIn(mt_tier_validation_requested, follower_3.subtype_ids) - self.assertIn(mt_tier_validation_accepted, follower_3.subtype_ids) - old_messages = test_record.message_ids - test_record.with_user(self.test_user_3_multi_company).validate_tier() - new_messages = test_record.message_ids - old_messages - self.assertEqual(len(new_messages), 0) - - def test_31_request_validation(self): - # Create new test record - test_record = self.test_model.create({"test_field": 2.5}) - # Create tier definitions for both tester models - self.tier_definition.write( - { - "approve_sequence": True, - "notify_on_create": True, - } - ) - def_2 = self.tier_def_obj.create( - { - "model_id": self.tester_model.id, - "review_type": "individual", - "reviewer_id": self.test_user_2.id, - "sequence": 20, - "approve_sequence": True, - "notify_on_create": True, - "notify_on_accepted": True, - } - ) - def_3 = self.tier_def_obj.create( - { - "model_id": self.tester_model.id, - "review_type": "individual", - "reviewer_id": self.test_user_3_multi_company.id, - "sequence": 10, - "approve_sequence": True, - "notify_on_create": True, - "notify_on_accepted": True, - } - ) - test_record.request_validation() - review_1 = test_record.review_ids.filtered( - lambda x: x.definition_id == self.tier_definition - ) - self.assertEqual(review_1.status, "pending") - review_2 = test_record.review_ids.filtered(lambda x: x.definition_id == def_2) - self.assertEqual(review_2.status, "pending") - review_3 = test_record.review_ids.filtered(lambda x: x.definition_id == def_3) - self.assertEqual(review_3.status, "pending") - followers = test_record.message_follower_ids - self.assertIn(self.test_user_1.partner_id, followers.mapped("partner_id")) - self.assertIn(self.test_user_2.partner_id, followers.mapped("partner_id")) - self.assertIn( - self.test_user_3_multi_company.partner_id, followers.mapped("partner_id") - ) - @tagged("at_install") class TierTierValidationView(CommonTierValidation):