52 lines
1.6 KiB
Python
52 lines
1.6 KiB
Python
from django.db.models.signals import m2m_changed, post_save
|
|
from django.dispatch import receiver
|
|
|
|
from recruitment.models import (
|
|
CandidateDocument,
|
|
CandidateDocumentRequest,
|
|
Recruitment,
|
|
Stage,
|
|
)
|
|
|
|
|
|
@receiver(post_save, sender=Recruitment)
|
|
def create_initial_stage(sender, instance, created, **kwargs):
|
|
"""
|
|
This is post save method, used to create initial stage for the recruitment
|
|
"""
|
|
if created:
|
|
applied_stage = Stage()
|
|
applied_stage.sequence = 0
|
|
applied_stage.recruitment_id = instance
|
|
applied_stage.stage = "Applied"
|
|
applied_stage.stage_type = "applied"
|
|
applied_stage.save()
|
|
|
|
initial_stage = Stage()
|
|
initial_stage.sequence = 1
|
|
initial_stage.recruitment_id = instance
|
|
initial_stage.stage = "Initial"
|
|
initial_stage.stage_type = "initial"
|
|
initial_stage.save()
|
|
|
|
|
|
@receiver(m2m_changed, sender=CandidateDocumentRequest.candidate_id.through)
|
|
def document_request_m2m_changed(sender, instance, action, **kwargs):
|
|
if action == "post_add":
|
|
candidate_document_create(instance)
|
|
|
|
elif action == "post_remove":
|
|
candidate_document_create(instance)
|
|
|
|
|
|
def candidate_document_create(instance):
|
|
candidates = instance.candidate_id.all()
|
|
for candidate in candidates:
|
|
document, created = CandidateDocument.objects.get_or_create(
|
|
candidate_id=candidate,
|
|
document_request_id=instance,
|
|
defaults={"title": f"Upload {instance.title}"},
|
|
)
|
|
document.title = f"Upload {instance.title}"
|
|
document.save()
|