Exemple #1
0
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)
Exemple #2
0
    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)
Exemple #5
0
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)