Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: deactivate monthly notifications about retired review system #238

Open
wants to merge 1 commit into
base: dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 0 additions & 45 deletions django/project/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,51 +66,6 @@ def project_review_requested_on_create_notification(review_id, custom_msg=None):
)


@app.task(name="project_review_requested_monthly_notification")
def project_review_requested_monthly_notification():
"""
Sends notification if a project needs review by an user - monthly celery task
"""

incomplete_reviews = ReviewScore.objects.exclude(
status=ReviewScore.STATUS_COMPLETE
).filter(
modified__lt=timezone.now()
- timezone.timedelta(days=settings.NOTIFICATION_PROJECT_REVIEW_DAYS)
)

if not incomplete_reviews: # pragma: no cover
return

# limit number of mails sent
if not settings.EMAIL_SENDING_PRODUCTION:
incomplete_reviews = ReviewScore.objects.filter(
id=incomplete_reviews.first().id
)

# grab the list of users
addressees = UserProfile.objects.filter(
id__in=incomplete_reviews.values_list("reviewer", flat=True).distinct()
)

for addressee in addressees:
send_mail_wrapper(
subject=_("You have a new project review request"),
email_type="reminder_project_review_template",
to=addressee.user.email,
language=addressee.language or settings.LANGUAGE_CODE,
context={
"reviewscores": list(
addressee.review_scores.filter(id__in=incomplete_reviews).order_by(
"modified"
)
),
"name": addressee.name,
"details": _("Please review the following project(s): "),
},
)


@app.task(name="project_still_in_draft_notification")
def project_still_in_draft_notification():
"""
Expand Down
63 changes: 1 addition & 62 deletions django/project/tests/notification_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,7 @@

from country.models import Donor, DonorCustomQuestion
from project.models import Project, Portfolio, ProjectPortfolioState
from project.tasks import project_still_in_draft_notification, published_projects_updated_long_ago, \
project_review_requested_monthly_notification, project_review_requested_on_create_notification
from project.tasks import project_still_in_draft_notification, published_projects_updated_long_ago, project_review_requested_on_create_notification
from project.tests.setup import SetupTests
from user.models import UserProfile

Expand Down Expand Up @@ -211,66 +210,6 @@ def test_published_projects_updated_long_ago(self, send_mail_wrapper):
self.assertEqual(call_args_list['to'], self.user_1.email)
self.assertIn(published_project_1, call_args_list['context']['projects'])

@mock.patch('project.tasks.send_mail_wrapper', return_value=None)
def test_project_review_monthly_reminder(self, send_mail_wrapper):
now = timezone.now()

with freeze_time(now - timezone.timedelta(days=45)):
# create project
published_project_1 = Project.objects.create(
name='Published project 1', data=self.published_project_data, public_id='1111')
published_project_1.team.add(self.profile_1)
published_project_2 = Project.objects.create(
name='Published project 2', data=self.published_project_data, public_id='1112')
published_project_2.team.add(self.profile_1)
published_project_3 = Project.objects.create(
name='Published project 3', data=self.published_project_data, public_id='1113')
published_project_3.team.add(self.profile_1)
# create portfolio
portfolio_1 = Portfolio.objects.create(name="Notification test portfolio")
# create reviews
pps_1 = ProjectPortfolioState.objects.create(project=published_project_1, portfolio=portfolio_1)
pps_2 = ProjectPortfolioState.objects.create(project=published_project_2, portfolio=portfolio_1)
pps_3 = ProjectPortfolioState.objects.create(project=published_project_3, portfolio=portfolio_1)
reviewscore_1, _ = pps_1.assign_questionnaire(self.profile_1)
reviewscore_2, _ = pps_2.assign_questionnaire(self.profile_2)
reviewscore_3, _ = pps_3.assign_questionnaire(self.profile_2)
with freeze_time(now - timezone.timedelta(days=10)):
# task shouldn't pick this up
reviewscore_4, _ = pps_2.assign_questionnaire(self.profile_1)

with override_settings(EMAIL_SENDING_PRODUCTION=True):
project_review_requested_monthly_notification.apply()

# task should send emails about Published project 1 and 2-3
self.assertEqual(len(send_mail_wrapper.call_args_list), 2)

for call in send_mail_wrapper.call_args_list:
call_args = call[1]
self.assertEqual(call_args['email_type'], 'reminder_project_review_template')
self.assertEqual(call_args['language'], 'en')

if call_args['to'] == self.user_1.email:
# user_1 should receive notifications about published project 1
self.assertEqual(call_args['context']['name'], self.profile_1.name)
self.assertEqual([reviewscore_1], call_args['context']['reviewscores'])
else:
# user_2 should receive notifications about published project 2
self.assertEqual(call_args['context']['name'], self.profile_2.name)
self.assertEqual({reviewscore_2, reviewscore_3}, set(call_args['context']['reviewscores']))
# init
send_mail_wrapper.call_args_list = _CallList()

with override_settings(EMAIL_SENDING_PRODUCTION=False):
project_review_requested_monthly_notification.apply()

# task should send email about Published project 1
self.assertEqual(len(send_mail_wrapper.call_args_list), 1)
call_args_list = send_mail_wrapper.call_args_list[0][1]
self.assertEqual(call_args_list['email_type'], 'reminder_project_review_template')
self.assertEqual(call_args_list['to'], self.user_1.email)
self.assertEqual([reviewscore_1], call_args_list['context']['reviewscores'])

@mock.patch('project.tasks.send_mail_wrapper', return_value=None)
def test_project_review_on_create_reminder(self, send_mail_wrapper):
# create project
Expand Down
4 changes: 0 additions & 4 deletions django/tiip/settings_deployed.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,6 @@
"task": 'published_projects_updated_long_ago',
"schedule": datetime.timedelta(days=31),
},
"project_review_requested_monthly_notification": {
"task": 'project_review_requested_monthly_notification',
"schedule": datetime.timedelta(days=30),
},
"solution_log_task": {
"task": "solution_log_task",
"schedule": crontab(hour=1, minute=0),
Expand Down