vision-career/vacancies/main/models.py
estromenko b224ef29d3
All checks were successful
release / docker (push) Successful in 38s
Improve vacancy rendering in messages
2025-11-09 23:41:52 +03:00

90 lines
2.9 KiB
Python
Raw Permalink 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.

from django.db import models
class Customer(models.Model):
telegram_id = models.IntegerField()
chat_id = models.IntegerField()
username = models.CharField(max_length=64)
created_at = models.DateTimeField(auto_now_add=True)
objects = models.Manager()
def __str__(self):
return self.username
class Meta:
db_table = "customers"
class JobTitle(models.Model):
title = models.CharField(max_length=255, unique=True)
def __str__(self):
return self.title
class CustomerCV(models.Model):
customer = models.OneToOneField(Customer, on_delete=models.CASCADE)
job_titles = models.ManyToManyField(JobTitle, related_name="vacancies")
min_salary_rub = models.PositiveIntegerField(null=True, blank=True, default=None)
max_salary_rub = models.PositiveIntegerField(null=True, blank=True, default=None)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
objects = models.Manager()
def __str__(self):
return self.customer.username
class Meta:
db_table = "customer_vcs"
class Vacancy(models.Model):
job_title = models.ForeignKey(JobTitle, on_delete=models.CASCADE)
external_id = models.CharField(max_length=255, unique=True)
min_salary_rub = models.PositiveIntegerField(null=True, blank=True, default=None)
max_salary_rub = models.PositiveIntegerField(null=True, blank=True, default=None)
company_name = models.CharField(max_length=255)
requirements = models.TextField()
content = models.TextField()
timestamp = models.DateTimeField()
link = models.URLField()
def __str__(self):
return self.job_title.title
def get_formatted_response(self):
response = f"""
💼 **Вакансия**: {self.job_title}
\n🏢 **Компания**: {self.company_name}
\n📝 **Требования**: {self.requirements}
"""
if self.min_salary_rub:
if self.max_salary_rub:
response += f"\n💸 **ЗП**: от {self.min_salary_rub} т.р."
else:
response += f"\n💸 **ЗП**: {self.min_salary_rub} т.р. - {self.max_salary_rub} т.р."
elif self.max_salary_rub:
response += f"\n💸 **ЗП**: до {self.max_salary_rub} т.р."
return response
class Meta:
verbose_name_plural = 'Vacancies'
class RecommendedVacancy(models.Model):
customer = models.ForeignKey(Customer, on_delete=models.CASCADE, related_name="recommended_vacancies")
vacancy = models.ForeignKey(Vacancy, on_delete=models.CASCADE, related_name="recommended_vacancies")
created_at = models.DateTimeField(auto_now_add=True)
objects = models.Manager()
def __str__(self):
return f'{self.customer.username} -> {self.vacancy_id}'
class Meta:
verbose_name_plural = 'Recommended Vacancies'
db_table = "recommended_vacancies"