Beispiel #1
0
def thankyou(request, *args, **kwargs):
    dara_list = Dara.objects.all()
    participant_list = Participant.objects.all()
    dara_email_list = []

    sender = 'ikwen Daraja <*****@*****.**>'

    for dara in dara_list:
        dara_lang = dara.member.language

        if dara_lang == 'en':
            cta_url = 'https://blog.ikwen.com/from-social-network-to-daraja/'
        else:
            cta_url = 'https://blog.ikwen.com/des-reseaux-sociaux-a-daraja/'

        activate(dara_lang)
        dara_name = dara.member.first_name
        dara_email = dara.member.email
        subject = _("Start making money now !")
        html_content = get_mail_content(
            subject,
            template_name='smartevent/mails/thank-you.html',
            extra_context={
                'dara_name': dara_name,
                'cta_url': cta_url
            })
        msg = EmailMessage(subject, html_content, sender, [dara_email])
        msg.content_subtype = "html"
        msg.extra_headers = {'Reply-To': '*****@*****.**'}
        Thread(target=lambda m: m.send(), args=(msg, )).start()
        dara_email_list.append(dara_email)

    for participant in participant_list:
        cta_url = 'https://blog.ikwen.com/des-reseaux-sociaux-a-daraja/'
        if participant.email in dara_email_list:
            continue
        lang = 'fr'
        activate(lang)
        dara_name = participant.first_name
        dara_email = participant.email
        subject = _("Start making money now !")
        html_content = get_mail_content(
            subject,
            template_name='smartevent/mails/thank-you.html',
            extra_context={
                'dara_name': dara_name,
                'cta_url': cta_url,
            })
        msg = EmailMessage(subject, html_content, sender, [dara_email])
        msg.content_subtype = "html"
        msg.extra_headers = {'Reply-To': '*****@*****.**'}
        Thread(target=lambda m: m.send(), args=(msg, )).start()

    response = {"success": True}
    return HttpResponse(json.dumps(response), 'content-type: text/json')
def send_mail_task(subject, message, to, only_print=False, history_line=None, headers=None):
    if not isinstance(to, (list, tuple)):
        to = [to]

    to = [t for t in to if t is not None]

    to = list(set(to)) # remove duplicates
    if history_line is not None:
        if headers is None:
            headers = {}
        history_header = '<%s>' % history_line
        headers['In-Reply-To'] = history_header
        headers['References'] = history_header

    if settings.EPO_EMAIL_ONLY_PRINT or only_print:
        info(u'printing portal email to: %s: %s (%r)\n%s', to, subject, headers, message)
    else:

        info('sending email to: %s', to)
        try:
            email_message = EmailMessage(subject, message, settings.SMTP_CONF["from"], to)
            if headers is not None:
                email_message.extra_headers = headers
            email_message.send()
        except Exception as e:
            error('failed to send email: %s', e)
            raise
Beispiel #3
0
def contact(request, event_slug):
    event = Event.objects.filter(slug__iexact=event_slug).first()
    if not event:
        return handler404(request)
    contact_message = ContactMessage()
    form = ContactMessageForm(request.POST or None, instance=contact_message)
    if request.POST:
        if form.is_valid():
            contact_message = form.save()
            info = _("Message received from ") + contact_message.name + "\n"
            info += _("User email: ") + contact_message.email + "\n"
            contact_message.message = info + contact_message.message

            email = EmailMessage()
            email.subject = _("eventoL Contact Message from " + contact_message.name)
            email.body = contact_message.message
            email.from_email = contact_message.email
            email.to = [event.email]
            email.extra_headers = {'Reply-To': contact_message.email}
            email.send(fail_silently=False)
            event = Event.objects.filter(slug__iexact=event_slug).first()
            if not event:
                return handler404(request)
            contact_message.event = event
            contact_message.save()
            messages.success(request, _("The message has been sent. You will receive a reply by email"))
            return HttpResponseRedirect('/event/' + event_slug)
        messages.error(request, _("There was a problem sending your message. Please try again in a few minutes."))

    return render(request, 'contact-message.html', update_event_info(event_slug, request, {'form': form}, event))
Beispiel #4
0
def contact(request, event_slug):
    event = Event.objects.filter(slug__iexact=event_slug).first()
    if not event:
        return handler404(request)
    contact_message = ContactMessage()
    form = ContactMessageForm(request.POST or None, instance=contact_message)
    if request.POST:
        if form.is_valid():
            contact_message = form.save()
            info = _("Message received from ") + contact_message.name + "\n"
            info += _("User email: ") + contact_message.email + "\n"
            contact_message.message = info + contact_message.message

            email = EmailMessage()
            email.subject = _("eventoL Contact Message from " + contact_message.name)
            email.body = contact_message.message
            email.from_email = contact_message.email
            email.to = [event.email]
            email.extra_headers = {'Reply-To': contact_message.email}
            email.send(fail_silently=False)
            event = Event.objects.filter(slug__iexact=event_slug).first()
            if not event:
                return handler404(request)
            contact_message.event = event
            contact_message.save()
            messages.success(request, _("The message has been sent. You will receive a reply by email"))
            return HttpResponseRedirect('/event/' + event_slug)
        messages.error(request, _("There was a problem sending your message. Please try again in a few minutes."))

    return render(request, 'contact-message.html', update_event_info(event_slug, request, {'form': form}, event))
Beispiel #5
0
 def form_valid(self, form):
     form.instance.user = self.request.user
     form.instance.verified = None
     form.instance.updated = timezone.now()
     form.instance.save()
     new_resume = form.instance
     if new_resume.critique:
         responsible_committee = OfficerPosition.objects.get(
             short_name=settings.RESUMEQ_OFFICER_POSITION)
         officers = Officer.objects.filter(
             term=Term.objects.get_current_term(),
             position=responsible_committee)
         if officers.exists():
             assignee = officers[new_resume.id % officers.count()].user
             assignee_name = assignee.userprofile.get_verbose_full_name()
             requestee = self.request.user
             requestee_name = requestee.userprofile.get_verbose_full_name()
             subject = 'Resume critique requested by {}'.format(
                 requestee_name)
             assigning_body = render_to_string(
                 'resumes/resume_assignment_email.html', {
                     'assignee': assignee_name,
                     'requestee': requestee_name,
                     'committee': responsible_committee.short_name,
                     'user': requestee
                 })
             assigning_message = EmailMessage(
                 subject=subject,
                 body=assigning_body,
                 from_email=settings.RESUMEQ_ADDRESS,
                 to=[assignee.email],
                 cc=[settings.RESUMEQ_ADDRESS])
             assigning_message.send(fail_silently=True)
             confirmation_body = render_to_string(
                 'resumes/resume_confirmation_email.html', {
                     'requestee': requestee_name,
                     'committee': responsible_committee.long_name
                 })
             confirmation_message = EmailMessage(
                 subject=subject,
                 body=confirmation_body,
                 from_email=settings.RESUMEQ_ADDRESS,
                 to=[requestee.email],
                 cc=[settings.RESUMEQ_ADDRESS])
             m_id = assigning_message.extra_headers.get('Message-Id', None)
             confirmation_message.extra_headers = {
                 'References': m_id,
                 'In-Reply-To': m_id
             }
             confirmation_message.send(fail_silently=True)
         messages.success(self.request,
                          'Your resume critique request has been sent!')
     else:
         messages.success(self.request, 'Changes saved!')
     return super(ResumeEditView, self).form_valid(form)
Beispiel #6
0
 def form_valid(self, form):
     form.instance.user = self.request.user
     form.instance.verified = None
     form.instance.updated = timezone.now()
     form.instance.save()
     new_resume = form.instance
     if new_resume.critique:
         responsible_committee = OfficerPosition.objects.get(
             short_name=settings.RESUMEQ_OFFICER_POSITION)
         officers = Officer.objects.filter(
             term=Term.objects.get_current_term(),
             position=responsible_committee)
         if officers.exists():
             assignee = officers[new_resume.id %
                                 officers.count()].user
             assignee_name = assignee.userprofile.get_verbose_full_name()
             requestee = self.request.user
             requestee_name = requestee.userprofile.get_verbose_full_name()
             subject = 'Resume critique requested by {}'.format(
                 requestee_name)
             assigning_body = render_to_string(
                 'resumes/resume_assignment_email.html',
                 {'assignee': assignee_name,
                  'requestee': requestee_name,
                  'committee': responsible_committee.short_name,
                  'user': requestee})
             assigning_message = EmailMessage(
                 subject=subject,
                 body=assigning_body,
                 from_email=settings.RESUMEQ_ADDRESS,
                 to=[assignee.email],
                 cc=[settings.RESUMEQ_ADDRESS])
             assigning_message.send(fail_silently=True)
             confirmation_body = render_to_string(
                 'resumes/resume_confirmation_email.html',
                 {'requestee': requestee_name,
                  'committee': responsible_committee.long_name}
                 )
             confirmation_message = EmailMessage(
                 subject=subject,
                 body=confirmation_body,
                 from_email=settings.RESUMEQ_ADDRESS,
                 to=[requestee.email],
                 cc=[settings.RESUMEQ_ADDRESS])
             m_id = assigning_message.extra_headers.get('Message-Id', None)
             confirmation_message.extra_headers = {'References': m_id,
                                                   'In-Reply-To': m_id}
             confirmation_message.send(fail_silently=True)
         messages.success(self.request,
                          'Your resume critique request has been sent!')
     else:
         messages.success(self.request, 'Changes saved!')
     return super(ResumeEditView, self).form_valid(form)
Beispiel #7
0
 def test_build_sg_email_w_extra_headers(self):
     msg = EmailMessage()
     msg.extra_headers = {'EXTRA_HEADER': 'VALUE'}
     with self.settings(SENDGRID_API_KEY='test_key'):
         mail = SendGridBackend()._build_sg_mail(msg)
         self.assertEqual(
             mail,
             {'content': [{'type': 'text/plain', 'value': ''}],
              'from': {'email': 'webmaster@localhost'},
              'headers': {'EXTRA_HEADER': 'VALUE'},
              'personalizations': [{'subject': ''}],
              'subject': ''}
         )
Beispiel #8
0
 def send_email(self):
     # send email using the self.cleaned_data dictionary
     email = EmailMessage()
     name = self.cleaned_data["contact_name"]
     content = self.cleaned_data["content"]
     from_email = self.cleaned_data["contact_email"]
     subject = self.cleaned_data["subject"]
     email.body = content
     email.subject = subject
     email.from_email = f"{name} <{from_email}>"
     email.to = ["*****@*****.**"]
     email.extra_headers = {"labelIds": ["CATEGORY_SOCIAL"]}
     email.send()
Beispiel #9
0
def attendee_registration(request, event_slug):
    event = get_object_or_404(Event, slug__iexact=event_slug)

    if not event.registration_is_open:
        return render(request, 'registration/closed-registration.html',
                      update_event_info(event_slug, request, event=event))

    attendee_form = AttendeeRegistrationForm(request.POST or None,
                                             initial={'event': event})
    if request.POST:
        if attendee_form.is_valid():
            try:
                attendee = attendee_form.save(commit=False)
                attendee.event = event
                attendee.registration_date = datetime.datetime.now()
                attendee.email_token = uuid.uuid4().hex
                attendee.save()

                body = _(u"Hi! You're receiving this message because you've registered to attend to " +
                         u"FLISoL %(event_name)s.\n\nPlease follow this link to confirm your email address and we'll " +
                         u"send you your ticket.\n\n%(confirm_url)s") % {'event_name': event.name,
                                                                         'confirm_url': get_email_confirmation_url(
                                                                             request,
                                                                             event_slug,
                                                                             attendee.id,
                                                                             attendee.email_token)}

                email = EmailMessage()
                email.subject = unicode(_(u"[FLISoL] Please confirm your email"))
                email.body = unicode(body)
                email.from_email = settings.EMAIL_FROM
                email.to = [attendee.email]
                email.extra_headers = {'Reply-To': settings.EMAIL_FROM}
                email.send(fail_silently=False)
                return HttpResponseRedirect(reverse("attendee_email_sent", args=[event_slug]))
            except Exception as e:
                logger.error(e)
                if attendee is not None:
                    attendee.delete()

        messages.error(request, _("There is a problem with the registration (check form errors)"))

    return render(request, 'registration/attendee-registration.html', update_event_info(event_slug, request,
                                                                                        {'form': attendee_form,
                                                                                         'errors': get_forms_errors(
                                                                                             [attendee_form]),
                                                                                         'multipart': False},
                                                                                        event=event))
Beispiel #10
0
 def get(self, request, *args, **kwargs):
     action = request.GET.get('action')
     if action == 'invite_school':  # Send a request to see his children online to the school
         service = get_service_instance()
         member = request.user
         school_id = request.GET['school_id']
         kids_details = request.GET['kids_details']
         school = Service.objects.get(pk=school_id)
         db = school.database
         add_database(db)
         event_type, change = EventType.objects.using(db) \
             .get_or_create(codename=PARENT_REQUEST_KID, renderer='ikwen_foulassi.foulassi.events.render_parent_request_kid')
         kid_request = KidRequest.objects.using(db).create(parent=member, kids_details=kids_details)
         Event.objects.using(db).create(type=event_type, object_id_list=[kid_request.id])
         try:
             if member.gender == FEMALE:
                 parent_name = _("Mrs %s" % member.full_name)
             elif member.gender == MALE:
                 parent_name = _("Mr %s" % member.full_name)
             else:  # Unknown gender
                 parent_name = _("The parent %s" % member.full_name)
             subject = _("I would like to follow my kids in your school on Foulassi.")
             cta_url = school.url + reverse('foulassi:event_list')
             html_content = get_mail_content(subject, template_name='foulassi/mails/invite_school.html',
                                             extra_context={'parent': member, 'kids_details': kids_details,
                                                            'IKWEN_MEDIA_URL': MEDIA_URL, 'MEMBER_AVATAR': MEMBER_AVATAR,
                                                            'cta_url': cta_url})
             sender = '%s via ikwen Foulassi <no-reply@%s>' % (parent_name, service.domain)
             msg = EmailMessage(subject, html_content, sender, [school.config.contact_email.strip()])
             msg.content_subtype = "html"
             msg.cc = ["*****@*****.**"]
             if member.email:
                 msg.extra_headers = {'Reply-To': member.email}
             Thread(target=lambda m: m.send(), args=(msg,)).start()
             sms_text = _("%(parent_name)s would like to follow his kid(s) below on ikwen Foulassi:\n"
                          "%(kids_details)s" % {'parent_name': parent_name, 'kids_details': kids_details})
             if member.phone:
                 if len(member.phone) == 9:
                     member.phone = '237' + member.phone
                 send_sms(member.phone, sms_text)
         except:
             pass
         return HttpResponse(json.dumps({'success': True}, 'content-type: text/json'))
     return super(SearchSchool, self).get(request, *args, **kwargs)
Beispiel #11
0
 def test_build_w_reply_to_sg_email(self):
     # Test setting a Reply-To header.
     msg = EmailMessage()
     msg.extra_headers = {'Reply-To': '*****@*****.**'}
     with self.settings(SENDGRID_API_KEY='test_key'):
         mail = SendGridBackend()._build_sg_mail(msg)
         self.assertEqual(
             mail,
             {'content': [{'value': '', 'type': 'text/plain'}],
              'personalizations': [{'subject': ''}],
              'reply_to': {'email': '*****@*****.**'},
              'from': {'email': 'webmaster@localhost'}, 'subject': ''}
         )
     # Test using the reply_to attribute.
     msg = EmailMessage(reply_to=('*****@*****.**',))
     with self.settings(SENDGRID_API_KEY='test_key'):
         mail = SendGridBackend()._build_sg_mail(msg)
         self.assertEqual(
             mail,
             {'content': [{'value': '', 'type': 'text/plain'}],
              'personalizations': [{'subject': ''}],
              'reply_to': {'email': '*****@*****.**'},
              'from': {'email': 'webmaster@localhost'}, 'subject': ''}
         )
     # Test using "name <email>" format.
     msg = EmailMessage(
         reply_to=('Andrii Soldatenko <*****@*****.**>',))
     with self.settings(SENDGRID_API_KEY='test_key'):
         mail = SendGridBackend()._build_sg_mail(msg)
         self.assertEqual(
             mail,
             {'content': [{'value': '', 'type': 'text/plain'}],
              'personalizations': [{'subject': ''}],
              'reply_to': {
                 'name': 'Andrii Soldatenko',
                 'email': '*****@*****.**'},
              'from': {'email': 'webmaster@localhost'}, 'subject': ''}
         )