diff --git a/employee/not_in_out_dashboard.py b/employee/not_in_out_dashboard.py index 14de9734d..5fc115ed4 100644 --- a/employee/not_in_out_dashboard.py +++ b/employee/not_in_out_dashboard.py @@ -187,7 +187,11 @@ def get_mail_preview(request): if emp_id: employee = Employee.objects.get(id=emp_id) context = template.Context( - {"instance": employee, "self": request.user.employee_get} + { + "instance": employee, + "self": request.user.employee_get, + "request": request, + } ) body = template_bdy.render(context) or " " return JsonResponse({"body": body}) diff --git a/horilla_automations/methods/methods.py b/horilla_automations/methods/methods.py index 77a2716bf..90558ca2c 100644 --- a/horilla_automations/methods/methods.py +++ b/horilla_automations/methods/methods.py @@ -89,6 +89,9 @@ def generate_choices(model_path): ) ) mail_details_choice.append(("pk", "Employee")) + if model_class == Candidate: + mail_details_choice.append(("pk", "Candidate")) + if model_path == "employee.models.Employee": all_mail_to_field.append(("get_email", "Employee's mail")) elif model_path == "recruitment.models.Candidate": diff --git a/horilla_automations/signals.py b/horilla_automations/signals.py index da0778b19..39044fa8a 100644 --- a/horilla_automations/signals.py +++ b/horilla_automations/signals.py @@ -425,6 +425,7 @@ def send_mail(request, automation, instance): "instance": context_instance, "self": sender, "model_instance": instance, + "request": request, } ) render_bdy = template_bdy.render(context) @@ -442,12 +443,19 @@ def send_mail(request, automation, instance): else: template_bdy = template.Template(pk_or_text) context = template.Context( - {"instance": context_instance, "self": sender, "model_instance": instance} + { + "instance": context_instance, + "self": sender, + "model_instance": instance, + "request": request, + } ) render_bdy = template_bdy.render(context) title_template = template.Template(automation.title) - title_context = template.Context({"instance": instance, "self": sender}) + title_context = template.Context( + {"instance": instance, "self": sender, "request": request} + ) render_title = title_template.render(title_context) soup = BeautifulSoup(render_bdy, "html.parser") plain_text = soup.get_text(separator="\n") diff --git a/pms/forms.py b/pms/forms.py index 9bafb93d7..a8530db14 100644 --- a/pms/forms.py +++ b/pms/forms.py @@ -104,6 +104,7 @@ class ObjectiveForm(BaseForm): "assignees", "start_date", "archive", + "self_employee_progress_update", ] exclude = ["is_active"] diff --git a/pms/views.py b/pms/views.py index bc0d59e25..9a296196d 100644 --- a/pms/views.py +++ b/pms/views.py @@ -1201,10 +1201,15 @@ def change_employee_objective_status(request): emp_obj = request.GET.get("empObjId") emp_objective = EmployeeObjective.objects.filter(id=emp_obj).first() status = request.GET.get("status") - if ( - request.user.has_perm("pms.change_employeeobjective") - or emp_objective.employee_id == request.user.employee_get + if not ( + request.user.has_perm("pms.change_objective") + or request.user.has_perm("pms.change_employeeobjective") + or request.user.has_perm("pms.change_employeekeyresult") or request.user.employee_get in emp_objective.objective_id.managers.all() + or ( + emp_objective.objective_id.self_employee_progress_update + and (emp_objective.employee_id == request.user.employee_get) + ) ): if emp_objective.status != status: emp_objective.status = status @@ -3325,11 +3330,26 @@ def key_result_current_value_update(request): current_value = eval_validate(request.POST.get("current_value")) emp_kr_id = eval_validate(request.POST.get("emp_key_result_id")) emp_kr = EmployeeKeyResult.objects.get(id=emp_kr_id) - if current_value <= emp_kr.target_value: + if ( + request.user.has_perm("pms.change_objective") + or request.user.has_perm("pms.change_employeeobjective") + or request.user.has_perm("pms.change_employeekeyresult") + or request.user.employee_get + in emp_kr.employee_objective_id.objective_id.managers.all() + or ( + emp_kr.employee_objective_id.objective_id.self_employee_progress_update + and ( + emp_kr.employee_objective_id.employee_id + == request.user.employee_get + ) + ) + ): emp_kr.current_value = current_value emp_kr.save() emp_kr.employee_objective_id.update_objective_progress() return JsonResponse({"type": "sucess"}) + else: + messages.info(request, "You dont have permission") except: return JsonResponse({"type": "error"}) diff --git a/recruitment/views/actions.py b/recruitment/views/actions.py index ba21a2594..2bb9963d9 100644 --- a/recruitment/views/actions.py +++ b/recruitment/views/actions.py @@ -466,7 +466,11 @@ def get_mail_preview(request): if candidate_id: try: candidate_obj = Candidate.objects.get(id=candidate_id) - context = {"instance": candidate_obj, "self": request.user.employee_get} + context = { + "instance": candidate_obj, + "self": request.user.employee_get, + "request": request, + } except Candidate.DoesNotExist: return HttpResponse("Candidate not found", status=404)