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
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")
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
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)
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)
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()
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
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
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')
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')