from django.db.models.signals import pre_save from django.dispatch import receiver from core.apps.evaluation.choices.request import RequestStatus from core.apps.evaluation.models import EvaluationrequestModel @receiver(pre_save, sender=EvaluationrequestModel) def create_evaluation_on_approve(sender, instance, **kwargs): if not instance.pk: return try: old = EvaluationrequestModel.objects.get(pk=instance.pk) except EvaluationrequestModel.DoesNotExist: return if old.status != RequestStatus.COMPLETED and instance.status == RequestStatus.COMPLETED: from core.apps.evaluation.models import AutoEvaluationModel if instance.rate_type == "auto" and not hasattr(instance, "_evaluation_created"): AutoEvaluationModel.objects.create( object_type=instance.object_type or "", tex_passport_serie_num=instance.tex_passport or "", rating_goal=instance.rate_goal or "", ) instance._evaluation_created = True