コード例 #1
0
    def __init__(
            self,
            cookie_predicate=None,  # Used to filter cookies before setting href
            resets_ip=True,  # Whether or not to reset IP before setting href
            uses_tor=True):
        super().__init__()

        self.identifier = uuid4().hex
        self.logger = LoggerFactory.create("BROWSER_{}".format(
            self.identifier))

        self.uses_tor = uses_tor
        self.resets_ip = resets_ip
        self.cookie_predicate = cookie_predicate  # Predicate to filter cookies
        self._last_wakes = {}
        self.driver = None
        self.tor_process = None
        self.port = None
        self.control_port = None
        self.open()
コード例 #2
0
 def __init__(self):
     self.logger = LoggerFactory.create(self.service_name)
     self.queue_connection = QueueConnection()
コード例 #3
0
 def __init__(self, username=None, password=None, host=None, port=None):
     self.username = username
     self.password = password
     self.mail = imaplib.IMAP4_SSL(host=host, port=port)
     self.logger = LoggerFactory.create("MAILBOX ({})".format(
         self.username))
コード例 #4
0
 def __init__(self):
     self.logger = LoggerFactory.create("QueueConnection_{}".format(
         id(self)))
     self.threads = []
     self.thread_queue = queue.Queue()
     self.active_connections = []
コード例 #5
0
from django.template.loader import render_to_string
from django.utils import timezone

from bakround_applicant.all_models.db import Profile, EmployerUser, EmployerJob, EmployerCandidate, \
                                             EmployerJobUser, EmployerCandidateResponse, Notification, \
                                             Job, JobFamily, ProfileReverseLookup, ProfileEmail, \
                                             EmployerCandidateStatus, Employer, ProfileResume, \
                                             NotificationRecipient
from bakround_applicant.utilities.functions import get_website_root_url, is_production, is_dev
from bakround_applicant.utilities.logger import LoggerFactory
from bakround_applicant.services.verifyingservice.util import collect_contact_info_for_profile, add_contact

from ..queue import QueueConnection, QueueNames
from .exceptions import UnspecifiedRecipientException, EmailNotFoundException, UnverifiedNameException

logger = LoggerFactory.create("NOTIFICATION_UTIL")

### Generic utilities


def queue_notification(_id, resend=None):
    message = {"notification_id": _id}
    if resend is not None:
        message['resend'] = resend
    QueueConnection.quick_publish(QueueNames.notification_service,
                                  json.dumps(message))


def get_bcc_address():
    if is_production():
        return '*****@*****.**'
コード例 #6
0
import re
import json

from .email import Mailbox, EmailMessage, IMAPError
from .models import ExternalResponse

from bakround_applicant.utilities.logger import LoggerFactory
from bakround_applicant.employer.utils import handle_candidate_accept
from bakround_applicant.all_models.db import EmployerCandidate

# Right now, this only watches Gmail for new emails and saves them.
#
# Indeed will send us an email with X-Indeed-Content-Type: contacted-decline from `[email protected]` when a candidate rejects.
# Indeed will send us an email to *@indeedemail.com when a candidate accepts.

logger = LoggerFactory.create("watch_for_indeed_emails()")

GUID_REGEX = re.compile(
    r'[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}')


def find_guid(s):
    if not s:
        return None

    global GUID_REGEX
    employer_candidate_id = list(GUID_REGEX.findall(s)) or None
    if employer_candidate_id:
        employer_candidate_id = employer_candidate_id[-1] or None

    return employer_candidate_id
コード例 #7
0
from ..profile.profile_search import make_queryset_of_search_profiles, get_location_for_city
from ..all_models.db import LookupState, EmployerCandidateQueue, EmployerSavedSearch, \
                            Profile, EmployerJob, Employer, EmployerCandidate, \
                            EmployerSearchResult, EmployerRestrictedProfile, EmployerJobUser
from ..utilities.functions import take_n_at_a_time

from django.utils import timezone
from datetime import timedelta

import uuid

from bakround_applicant.notifications import emails
from ..services.notificationservice.util import send_email_to_candidate

from bakround_applicant.utilities.logger import LoggerFactory
logger = LoggerFactory.create('CANDIDATE_QUEUE')

from django.db import transaction


def get_search_profiles_to_insert_into_queue(employer_job, saved_search,
                                             profile_update_cutoff_date):
    params = saved_search.search_parameters

    location = get_location_for_city(employer_job.city, employer_job.state)

    minimum_score = params.get('score')
    if minimum_score is None or minimum_score < 550:
        minimum_score = 550

    search_profile_queryset = make_queryset_of_search_profiles(
コード例 #8
0
 def __init__(self):
     self.logger = LoggerFactory.create("WEEKLY_STATS")
コード例 #9
0
__author__ = "tplick"

import json
from bakround_applicant.services.queue import QueueConnection, QueueNames


from bakround_applicant.utilities.logger import LoggerFactory
logger = LoggerFactory.create('EVENT_SERVICE')


class EventActions:
    resume_upload = 'resume_upload'
    profile_edit = 'profile_edit'
    profile_printview_generate = 'profile_printview_generate'
    profile_external_viewer_add = 'profile_external_viewer_add'
    profile_external_viewer_remove = 'profile_external_viewer_remove'
    score_regeneration_request = 'score_regeneration_request'
    score_analysis_view = 'score_analysis_view'
    employer_job_create = 'employer_job_create'
    employer_job_update = 'employer_job_update'
    employer_job_export = 'employer_job_export'
    employer_job_candidate_add = 'employer_job_candidate_add'
    employer_job_candidate_contact = 'employer_job_candidate_contact'
    employer_job_candidate_remove = 'employer_job_candidate_remove'
    employer_job_closed = 'employer_job_closed'
    employer_job_reopened = 'employer_job_reopened'
    employer_job_search = 'employer_job_search'
    employer_profile_view = 'employer_profile_view'
    employer_user_create = 'employer_user_create'
    employer_user_delete = 'employer_user_delete'
コード例 #10
0
 def __init__(self, *args, **kwargs):
     self.logger = LoggerFactory.create(type(self).__name__)
     for k, v in kwargs.items():
         setattr(self, k, v)
コード例 #11
0
 def __init__(self, level=logging.DEBUG):
     super().__init__(level)
     self.logger = LoggerFactory.create('')
     self.level = level
コード例 #12
0
from django.db.models.aggregates import Count, Sum
from django.utils import timezone
from django.core.exceptions import EmptyResultSet

from ..all_models.db import Profile, ProfileExperience, Score, \
                            LookupCountry, LookupState, LookupDegreeType, \
                            ProfileEducation, LookupPhysicalLocation, Skill, Job, \
                            EmployerUser, EmployerJob, EmployerCandidate, EmployerSavedSearch, \
                            EmployerSearchResult, EmployerRestrictedProfile, EmployerProfileView, \
                            EmployerCandidateFeedback, IcimsJobData, IcimsProfileJobMapping
from ..all_models.dto import ProfileSearchQuerySchema, IcimsProfileSearchQuerySchema
from ..event import record_event, EventActions
from ..utilities.functions import take_n_at_a_time, get_website_root_url, is_production, is_dev

from bakround_applicant.utilities.logger import LoggerFactory
logger = LoggerFactory.create('PROFILE_SEARCH')

MAX_RESULTS = 2000
INTERNAL_PAGE_SIZE = 10
assert MAX_RESULTS % INTERNAL_PAGE_SIZE == 0
INTERNAL_MAX_PAGES = MAX_RESULTS // INTERNAL_PAGE_SIZE

MULTI_MATCH_FIELDS = [
    "summary",
    "experience.company_name",
    "experience.position_title",
    "experience.position_description",
    "skills.skill_name",
    "certifications.certification_name",
]