Files
ihrm/onboarding/models.py

100 lines
2.5 KiB
Python
Raw Normal View History

"""
models.py
This module is used to register models for onboarding app
"""
2023-05-10 15:06:57 +05:30
from django.db import models
from django.utils.translation import gettext_lazy as _
2023-05-10 15:06:57 +05:30
from recruitment.models import Recruitment, Candidate
from employee.models import Employee
2023-05-10 15:06:57 +05:30
class OnboardingStage(models.Model):
"""
OnboardingStage models
"""
2023-05-10 15:06:57 +05:30
stage_title = models.CharField(max_length=200)
recruitment_id = models.ManyToManyField(Recruitment)
employee_id = models.ManyToManyField(Employee)
sequence = models.IntegerField(null=True)
2023-05-10 15:06:57 +05:30
def __str__(self):
return f"{self.stage_title}"
2023-05-10 15:06:57 +05:30
class OnboardingTask(models.Model):
"""
OnboardingTask models
"""
2023-05-10 15:06:57 +05:30
task_title = models.CharField(max_length=200)
recruitment_id = models.ManyToManyField(Recruitment, related_name="onboarding_task")
2023-05-10 15:06:57 +05:30
employee_id = models.ManyToManyField(Employee)
def __str__(self):
return f"{self.task_title}"
2023-05-10 15:06:57 +05:30
class CandidateStage(models.Model):
"""
CandidateStage model
"""
candidate_id = models.OneToOneField(
Candidate, on_delete=models.CASCADE, related_name="onboarding_stage"
)
2023-05-10 15:06:57 +05:30
onboarding_stage_id = models.ForeignKey(
OnboardingStage, on_delete=models.CASCADE, related_name="candidate"
)
2023-05-10 15:06:57 +05:30
def __str__(self):
return f"{self.candidate_id} | {self.onboarding_stage_id}"
2023-05-10 15:06:57 +05:30
class CandidateTask(models.Model):
"""
CandidateTask model
"""
2023-05-10 15:06:57 +05:30
Choice = (
("", ""),
2023-08-21 17:28:32 +05:30
("todo", _("Todo")),
2023-08-22 13:54:46 +05:30
("scheduled", _("Scheduled")),
("ongoing", _("Ongoing")),
("stuck", _("Stuck")),
("done", _("Done")),
2023-05-10 15:06:57 +05:30
)
candidate_id = models.ForeignKey(
Candidate, on_delete=models.CASCADE, related_name="candidate_task"
)
status = models.CharField(max_length=50, choices=Choice, blank=True, null=True)
onboarding_task_id = models.ForeignKey(OnboardingTask, on_delete=models.CASCADE)
2023-05-10 15:06:57 +05:30
def __str__(self):
return f"{self.candidate_id} | {self.onboarding_task_id} | {self.status}"
2023-05-10 15:06:57 +05:30
class Meta:
"""
Meta class to add some additional options
"""
2023-05-10 15:06:57 +05:30
unique_together = ("candidate_id", "onboarding_task_id")
class OnboardingPortal(models.Model):
"""
OnboardingPortal model
"""
candidate_id = models.OneToOneField(
Candidate, on_delete=models.CASCADE, related_name="onboarding_portal"
)
2023-05-10 15:06:57 +05:30
token = models.CharField(max_length=200)
used = models.BooleanField(default=False)
2023-05-10 15:06:57 +05:30
count = models.IntegerField(default=0)
def __str__(self):
return f"{self.candidate_id} | {self.token}"