0.0.1 init, main page prepare

This commit is contained in:
SDE
2023-11-16 14:38:44 +03:00
parent 894ee6d750
commit 74f7bbb24b
78 changed files with 6198 additions and 21 deletions

View 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