Files
tripwithbonus/BaseModels/search_optimization/ld_json/ld_vacancy.py
SDE b2bd830b6e 0.0.3
GeneralApp add
2023-06-19 17:19:18 +03:00

141 lines
6.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import datetime
import project_sets
def get_ld_vacancies(data_Dict):
# Разметку JobPosting можно размещать только на страницах, которые содержат одно объявление о вакансии.
# Не разрешается добавлять разметку JobPosting на какие-либо другие страницы, в том числе те, на которых нет информации ни об одной вакансии.
vacancies_list = []
for item in data_Dict:
data = {
"@context": "https://schema.org/",
"@type": "JobPosting",
"title": item['title'],
"description": item['description'],
"datePosted": datetime.datetime.now().strftime('%Y-%m-%d'),
"validThrough": item['validThrough'].strftime('%Y-%m-%dT%H:%M'), #"2017-03-18T00:00", # окончание срока действия
"identifier": {
"@type": "PropertyValue",
"name": project_sets.company_name,
"value": str(item['id'])
},
"hiringOrganization": {
"@type": "Organization",
"name": project_sets.company_name,
"sameAs": project_sets.domain,
"logo": project_sets.logo
},
}
if 'office' in item:
# используется для указания места, в котором сотрудник будет выполнять работу. Если определенного места (например, офиса или производственной площадки) нет, использовать это свойство не обязательно.
job_place_Dict = {
"jobLocation": {
"@type": "Place",
"address": {
"@type": "PostalAddress",
"streetAddress": item['office'].address,
"addressLocality": item['office'].city,
"addressCountry": "BY"
},
},
}
else:
job_place_Dict = {
"jobLocationType": "TELECOMMUTE" # только удаленка
}
data.update(job_place_Dict)
if 'required_country_of_residence' in item:
# используется для указания территории, на которой может проживать кандидат на должность. Необходимо, чтобы была задана по меньшей мере одна страна
required_country_of_residence = {
"applicantLocationRequirements": {
"@type": "Country",
"name": item['required_country_of_residence']['country']
},
}
data.update(required_country_of_residence)
if 'salary' in item:
salary_Dict = {
"baseSalary": {
"@type": "MonetaryAmount",
"currency": item['salary']['currency'],
"value": {
"@type": "QuantitativeValue",
"unitText": item['salary']['time_unit']
# HOUR
# DAY
# WEEK
# MONTH
# YEAR
}
}
}
if 'price' in item['salary']:
salary_Dict['baseSalary']['value']['value'] = item['salary']['price']
elif 'price_from' in item['salary']:
salary_Dict['baseSalary']['value']['minValue'] = item['salary']['price_from']
if 'price_to' in item['salary']:
salary_Dict['baseSalary']['value']['maxValue'] = item['salary']['price_to']
data.update(salary_Dict)
# Указание на то, поддерживается ли на странице с объявлением о вакансии отправка резюме напрямую.
data.update({
'directApply': item['directApply']
})
# Вид занятости Укажите одно или несколько значений
if 'employmentType' in item:
# FULL_TIME
# PART_TIME
# CONTRACTOR
# TEMPORARY
# INTERN
# VOLUNTEER
# PER_DIEM
# OTHER
data.update({
'employmentType': item['employmentType']
})
if 'educationRequirements' in item:
e_Dict = {
"educationRequirements": {
"@type": "EducationalOccupationalCredential",
"credentialCategory": item['educationRequirements']
# high school
# associate degree
# bachelor degree
# professional certificate
# postgraduate degree
},
}
data.update(e_Dict)
if 'experienceRequirements' in item:
e_Dict = {
"experienceRequirements": {
"@type": "OccupationalExperienceRequirements",
"monthsOfExperience": item['experienceRequirements'] # опыт работы в месяцах
},
}
data.update(e_Dict)
# Со значением "истина" это свойство будет указывать на то, что кандидатам достаточно иметь опыт, если у них нет требуемого образования
if 'required_only_experience' in item:
if 'experienceRequirements' in item and 'educationRequirements' in item:
data.update({
'experienceInPlaceOfEducation': item['required_only_experience']
})
vacancies_list.append(data)
return vacancies_list