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) original_title = models.CharField(max_length=255, null=True, blank=True) 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"