예제 #1
0
def scraped_job(job_dict):
    company_name = job_dict['company'].strip()
    company, created_company = Company.objects.get_or_create(
        slug=slugify(company_name),
        name=company_name,
    )

    if created_company:
        if job_dict['logo'] is not None:
            download_and_save_image(company, job_dict['logo'])

    source_category = job_dict['source_category']
    job_dict.pop('source_category')
    job_dict.pop('logo')
    job_dict.update({'company': company})
    job, created_job = Job.objects.update_or_create(**job_dict)
    if created_job:
        tag, _ = Tag.objects.get_or_create(name=source_category)
        if not job.tags.filter(name=tag).exists():
            job.tags.add(tag)
            job.save()

    tags = []
    extracted_tags = extract_and_normalize_tags(job.role)
    for t in extracted_tags:
        t, _ = Tag.objects.get_or_create(name=t)
        tags.append(t)

    job.tags.add(*tags)
    job.save()
예제 #2
0
파일: api.py 프로젝트: roks0n/nomadboard
def _create_job(scraper, company, job_data):
    """
    Creates or updates a Job and it's Tags

    :param scraper: Scraper object
    :param company: Company object
    :param job_data: dictionary containing

    """

    try:
        job, created_job = Job.objects.update_or_create(
            company=company,
            link=job_data['link'],
            via_source=scraper,
            defaults={
                'role': job_data['role'],
                'date_published': job_data['date_published'],
                'description': job_data['description'],
            }
        )
    except:
        # TODO: add logging here to see what sort of errors we get
        return None

    if created_job:
        tag, _ = Tag.objects.get_or_create(name=job_data['source_category'])
        if not job.tags.filter(name=tag).exists():
            job.tags.add(tag)

    tags = []
    extracted_tags = extract_and_normalize_tags(job.role)
    for tag_name in extracted_tags:
        tag, _ = Tag.objects.get_or_create(name=tag_name)
        tags.append(tag)

    job.tags.add(*tags)
    job.save()
    return job