def competition_message_participants(request, competition_id): if request.method != "POST": return HttpResponse(status=400) try: competition = models.Competition.objects.get(pk=competition_id) except ObjectDoesNotExist: return HttpResponse(status=404) if competition.creator != request.user: return HttpResponse(status=403) if "subject" not in request.POST and "body" not in request.POST: return HttpResponse(json.dumps( {"error": "Missing subject or body of message!"}), status=400) participants = models.CompetitionParticipant.objects.filter( competition=competition, status=models.ParticipantStatus.objects.get(codename="approved"), user__organizer_direct_message_updates=True) emails = [p.user.email for p in participants] subject = request.POST.get('subject') body = strip_tags(request.POST.get('body')) if len(emails) > 0: tasks.send_mass_email(competition, subject=subject, body=body, from_email=settings.DEFAULT_FROM_EMAIL, to_emails=emails) return HttpResponse(status=200)
def test_send_mass_email_works(self): task_args = { "competition_pk": self.competition.pk, "body": "Body", "subject": "Subject", "from_email": "*****@*****.**", "to_emails": ["*****@*****.**" % i for i in range(0, 10)] } tasks.send_mass_email(**task_args) self.assertEquals(len(mail.outbox), 10)
def test_send_mass_email_works(self): task_args = { "competition_pk": self.competition.pk, "body": "Body", "subject": "Subject", "from_email": "*****@*****.**", "to_emails": [u.email for u in self.users] } tasks.send_mass_email(**task_args) self.assertEquals(len(mail.outbox), 1) self.assertEquals(len(mail.outbox[0].to), 0) # make sure we're only sending BCC!! self.assertEquals(len(mail.outbox[0].bcc), 10)
def test_send_mass_email_has_valid_links(self): task_args = { "competition_pk": self.competition.pk, "body": "Body", "subject": "Subject", "from_email": "*****@*****.**", "to_emails": [self.users[0].email] } tasks.send_mass_email(**task_args) m = mail.outbox[0] self.assertIn("http://example.com/my/settings", m.body) self.assertIn("http://example.com/competitions/%s" % self.competition.pk, m.body)
def competition_message_participants(request, competition_id): if request.method != "POST": return HttpResponse(status=400) try: competition = models.Competition.objects.get(pk=competition_id) except ObjectDoesNotExist: return HttpResponse(status=404) if competition.creator != request.user: return HttpResponse(status=403) if "subject" not in request.POST and "body" not in request.POST: return HttpResponse( json.dumps({ "error": "Missing subject or body of message!" }), status=400 ) participants = models.CompetitionParticipant.objects.filter( competition=competition, status=models.ParticipantStatus.objects.get(codename="approved"), user__organizer_direct_message_updates=True ) emails = [p.user.email for p in participants] subject = request.POST.get('subject') body = strip_tags(request.POST.get('body')) if len(emails) > 0: tasks.send_mass_email( competition, subject=subject, body=body, from_email=settings.DEFAULT_FROM_EMAIL, to_emails=emails ) return HttpResponse(status=200)