示例#1
0
def send_reminder(email_template, state_name, subject_function, email_type):
    """
    Sends a reminder to all users who have registered in between 25 to 1 hour ago
    Returns: send email like crazy
    """

    candidates = get_recently_created_new_state_candidates(state_name)

    for candidate in candidates:
        if candidate.campaign.pk != 5:
            #  Do not send if there are no tests or is on the 'WFI' and has no interviews.
            if not candidate.campaign.tests:
                continue

            # check that emails are not sent twice with respect to a candidate:
            if not CandidateEmailSent.objects.filter(an_object=candidate,
                                                     email_type=email_type):

                email_sender.send(objects=candidate,
                                  language_code=candidate.user.language_code,
                                  body_input=email_template,
                                  subject=subject_function(candidate))

                # Records sending email
                CandidateEmailSent(an_object=candidate,
                                   email_type=email_type).save()

    return
示例#2
0
def send_email_marketing():

    with open('business_email_marketing.csv',
              encoding='UTF-8') as business_file:

        lines = business_file.read().split('\n')

        for line in lines:

            line_list = line.split(',')

            if len(line_list) > 2:
                mail = line_list[1].strip()

                person_name = line_list[2].strip()

                business_user = BusinessUser(name=person_name, email=mail)

                subject = 'Correo para el gerente'

                email_sender.send(objects=business_user,
                                  language_code='es',
                                  body_input='business_email_marketing_body',
                                  subject=subject,
                                  attachment="brochure_peaku_2018.pdf")
示例#3
0
def create_user(campaign, user_params, request, is_mobile, signup_form=None):
    """
    Args:
        campaign: obj
        user_params: Dict with user params
        request: HTTP
        is_mobile: Boolean
        signup_form: the form with which it did sign up
    Returns: Creates a new user on the DB.
    """
    user = User(**user_params)
    user.save()  # Saves here to get an id

    if signup_form:
        add_auth_and_login(signup_form, user, request)

    update_resource(request, user, 'curriculum_url', 'resumes')
    user.save()

    # Starts on Backlog default state, when no evaluation has been done.
    candidate = Candidate(campaign=campaign, user=user)
    candidate.save()

    email_body_name = 'user_signup_email_body'
    if is_mobile:
        email_body_name += '_mobile'

    email_sender.send(objects=candidate,
                      language_code=request.LANGUAGE_CODE,
                      body_input=email_body_name,
                      subject=_('Welcome to PeakU'))

    return user
示例#4
0
def edit_campaign_candidates(request, campaign_id):
    """
    Args:
        request: HTTP
        campaign_id: campaign primary key
    Returns: This controls the candidates dashboard
    """
    campaign = Campaign.objects.get(pk=campaign_id)

    action = request.POST.get('action')
    candidate_id = request.POST.get('candidate_id')
    if candidate_id is not None:
        candidate = Candidate.objects.get(pk=int(candidate_id))

        if action == 'update':
            candidate_module.update_candidate_manually(request, candidate)
        elif action == 'add':
            candidate_module.add_candidate_to_campaign(request, candidate)
        elif action == 'remove':
            candidate_module.remove_candidate(candidate)
        elif action == 'move':
            if candidate_module.add_candidate_to_campaign(request, candidate):  # only erase if has add successfully
                candidate_module.remove_candidate(candidate)

    # TODO: can be done with JS in smarter way???
    # enters here when sending an email
    if request.POST.get('send_mail') is not None:

        candidates = candidate_module.get_checked_box_candidates(campaign_id, request)

        email_sender.send(objects=candidates,
                          language_code=request.LANGUAGE_CODE,
                          body_input=request.POST.get('email_body'),
                          subject=candidate_module.get_subject(request, campaign_id),
                          with_localization=False,
                          body_is_filename=False)

    if request.POST.get('send_message') is not None:
        candidates = candidate_module.get_checked_box_candidates(campaign_id, request)
        add_to_message_queue(candidates, request.POST.get('email_body'))

    update_candidate_forecast(campaign)

    params, states = candidate_module.get_rendering_data(campaign_id)

    # all campaigns except the current one.
    campaigns_to_move_to = Campaign.objects.exclude(pk=campaign_id)

    params['states'] = states
    params['campaign_id'] = campaign_id
    params['screenings'] = [s for s in Screening.objects.all()]
    params['campaigns'] = campaigns_to_move_to
    params['current_campaign'] = Campaign.objects.get(pk=campaign_id)

    return render(request, cts.EDIT_CANDIDATES, params)
示例#5
0
def send_email_from_dashboard(request, campaign):

    # enters here when sending an email
    if request.GET.get('send_mail') is not None:

        candidates = get_checked_box_candidates(campaign.id, request)

        email_sender.send(objects=candidates,
                          language_code='es',
                          body_input=request.GET.get('email_body'),
                          subject=request.GET.get('email_subject'),
                          with_localization=False,
                          body_is_filename=False)
示例#6
0
def send_one_email(email):
    """
    This email can have several recipients...
    :param email:
    :return:
    """
    for an_object in email.the_objects.all():

        if send_condition(an_object, email):

            if settings.DEBUG:
                if isinstance(an_object, Candidate):
                    an_object.user.email = TEST_EMAIL
                elif isinstance(an_object, BusinessUser):
                    an_object.email = TEST_EMAIL
                elif isinstance(an_object, Campaign):
                    business_user = common.get_business_user_with_campaign(
                        an_object)
                    business_user.email = TEST_EMAIL
                    business_user.save()  # heavy machete: no alternative here
                else:
                    raise NotImplementedError('Unimplemented class: {}'.format(
                        type(an_object)))

            email_sender.send(objects=an_object,
                              language_code=email.language_code,
                              body_input=email.body_input,
                              subject=email.subject,
                              override_dict=email.override_dict)

            email.sent = True
            email.save()
            print('sent email "{}" to {}'.format(email.subject,
                                                 get_email(an_object)))

            # Records sending email
            if isinstance(an_object, Candidate):
                CandidateEmailSent(an_object=an_object,
                                   email_type=email.email_type).save()
            elif isinstance(an_object, BusinessUser):
                BusinessUserEmailSent(an_object=an_object,
                                      email_type=email.email_type).save()
            elif isinstance(an_object, Campaign):
                CampaignEmailSent(an_object=an_object,
                                  email_type=email.email_type).save()
            else:
                raise NotImplementedError('Unimplemented class: {}'.format(
                    type(an_object)))

    email.processed = True
    email.save()
示例#7
0
def send_contact_emails(contact, language_code):

    try:
        email_sender.send(objects=contact,
                          language_code=language_code,
                          body_input='business_contact_email_body',
                          subject=_('Welcome to PeakU'))
        email_sender.send_internal(
            contact=contact,
            language_code=language_code,
            body_filename='contact_notification_email_body',
            subject='Business User acaba de llenar formulario de contacto!!!')
    except (smtplib.SMTPRecipientsRefused, smtplib.SMTPAuthenticationError,
            UnicodeEncodeError) as e:
        pass
示例#8
0
def send_demo_scheduled_notification(request, contact):

    try:
        email_sender.send(objects=contact,
                          language_code=request.LANGUAGE_CODE,
                          body_input='business_contact_email_body',
                          subject=_('Welcome to PeakU'))
        email_sender.send_internal(
            contact=contact,
            language_code=request.LANGUAGE_CODE,
            body_filename='demo_sheduled_notification_email_body',
            subject='Se ha programado un demo!!!!!')

    except (smtplib.SMTPRecipientsRefused, smtplib.SMTPAuthenticationError,
            UnicodeEncodeError) as e:
        pass
示例#9
0
def send_users_additional_info_reminder():

    candidates = (Candidate.objects.filter(
        ~Q(user=None), ~Q(user__email=None),
        user__gender_id=None).order_by('-user_id')
                  | Candidate.objects.filter(
                      ~Q(user=None), ~Q(user__email=None),
                      user__salary=None).order_by('-user_id'))

    candidates = [c for c in candidates]

    new_candidates = candidates_filter(candidates)

    print(len(candidates))
    print(len(new_candidates))
    # test_candidates = new_candidates[:2]

    email_sender.send(objects=new_candidates,
                      language_code='es',
                      body_input='candidates_form_reminder_email_body',
                      subject='Información adicional')
示例#10
0
def send_prospect_emails():

    candidates = Candidate.objects.filter(
        ~Q(user=None),
        ~Q(state__in=State.objects.filter(
            code__in=['STC', 'GTJ', 'ABC']).all()),
        ~Q(user__work_area__segment=None),
        removed=False)

    candidates = [c for c in candidates]

    new_candidates = not_repeated_filter(candidates)

    final_candidates = work_area_with_campaigns_filter(new_candidates)

    print(len(candidates))
    print(len(new_candidates))
    print(len(final_candidates))

    email_sender.send(objects=final_candidates,
                      language_code='es',
                      body_input='prospects_invitation_email_body',
                      subject='Ofertas')