diff --git a/pms/forms.py b/pms/forms.py index f42f35da6..d3aaa36e9 100644 --- a/pms/forms.py +++ b/pms/forms.py @@ -650,6 +650,17 @@ class FeedbackForm(ModelForm): if instance: kwargs["initial"] = set_date_field_initial(instance) super().__init__(*args, **kwargs) + if self.instance.pk is None: + self.fields["subordinate_id"] = HorillaMultiSelectField( + queryset=Employee.objects.all(), + widget=HorillaMultiSelectWidget( + filter_route_name="employee-widget-filter", + filter_class=EmployeeFilter, + filter_instance_contex_name="f", + filter_template_path="employee_filters.html", + ), + label="Subordinates", + ) reload_queryset(self.fields) self.fields["period"].choices = list(self.fields["period"].choices) self.fields["period"].choices.append(("create_new_period", "Create new period")) @@ -677,6 +688,10 @@ class FeedbackForm(ModelForm): Cleans and validates the feedback form data. Ensures that the start date is before the end date and validates the start date. """ + super().clean() + emps = self.data.getlist("subordinate_id") + if emps: + self.errors.pop("subordinate_id", None) cleaned_data = super().clean() start_date = cleaned_data.get("start_date") end_date = cleaned_data.get("end_date") diff --git a/pms/views.py b/pms/views.py index 039bf863c..f3d3cbdf4 100644 --- a/pms/views.py +++ b/pms/views.py @@ -1444,6 +1444,7 @@ def feedback_creation(request): if request.method == "POST": form = FeedbackForm(request.POST) if form.is_valid(): + employees = form.data.getlist("subordinate_id") if key_result_ids := request.POST.getlist("employee_key_results_id"): for key_result_id in key_result_ids: key_result = EmployeeKeyResult.objects.filter( @@ -1452,6 +1453,8 @@ def feedback_creation(request): feedback_form = form.save() feedback_form.employee_key_results_id.add(key_result) instance = form.save() + instance.subordinate_id.set(employees) + messages.success(request, _("Feedback created successfully.")) send_feedback_notifications(request, form=instance) return redirect(feedback_list_view)