0.0.1 init, main page prepare
This commit is contained in:
140
BaseModels/search_optimization/ld_json/ld_vacancy.py
Normal file
140
BaseModels/search_optimization/ld_json/ld_vacancy.py
Normal file
@@ -0,0 +1,140 @@
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user