diff --git a/employee/forms.py b/employee/forms.py index 154375c00..ee8b0cbb7 100644 --- a/employee/forms.py +++ b/employee/forms.py @@ -41,6 +41,7 @@ from employee.models import ( DisciplinaryAction, Employee, EmployeeBankDetails, + EmployeeGeneralSetting, EmployeeNote, EmployeeTag, EmployeeWorkInformation, @@ -701,3 +702,15 @@ class EmployeeTagForm(ModelForm): fields = "__all__" exclude = ["is_active"] widgets = {"color": TextInput(attrs={"type": "color", "style": "height:50px"})} + + +class EmployeeGeneralSettingPrefixForm(forms.ModelForm): + + class Meta: + + model = EmployeeGeneralSetting + exclude = ["objects"] + widgets = { + "badge_id_prefix": forms.TextInput(attrs={"class": "oh-input w-100"}), + "company_id": forms.Select(attrs={"class": "oh-select oh-select-2 w-100"}), + } diff --git a/employee/models.py b/employee/models.py index 0ed489147..e3a55730f 100644 --- a/employee/models.py +++ b/employee/models.py @@ -906,8 +906,8 @@ class EmployeeGeneralSetting(HorillaModel): """ badge_id_prefix = models.CharField(max_length=5, default="PEP") - objects = models.Manager() company_id = models.ForeignKey(Company, null=True, on_delete=models.CASCADE) + objects = HorillaCompanyManager("company_id") from accessibility.accessibility import ACCESSBILITY_FEATURE diff --git a/employee/templates/settings/settings.html b/employee/templates/settings/settings.html index cd7df960e..e4ba0bb92 100644 --- a/employee/templates/settings/settings.html +++ b/employee/templates/settings/settings.html @@ -1,18 +1,54 @@ {% load i18n %} -{% csrf_token %}

{% trans 'Badge Prefix' %}

-
- {% csrf_token %} -
- - - + + {% csrf_token %} +
+
+ +
+
+
+ + + +
+ {{ prefix_form.badge_id_prefix }} + {% if prefix_form.badge_id_prefix.errors %} +
+ {{ prefix_form.badge_id_prefix.errors|join:", " }} +
+ {% endif %} +
+
+ +
+
+
+ + +
+ +
+
+ +
+ +
+
- - diff --git a/employee/views.py b/employee/views.py index d308fa414..7f7008168 100755 --- a/employee/views.py +++ b/employee/views.py @@ -71,6 +71,7 @@ from employee.forms import ( EmployeeBankDetailsUpdateForm, EmployeeExportExcelForm, EmployeeForm, + EmployeeGeneralSettingPrefixForm, EmployeeNoteForm, EmployeeTagForm, EmployeeWorkInformationForm, @@ -3426,14 +3427,24 @@ def encashment_condition_create(request): @permission_required("employee.add_employeegeneralsetting") def initial_prefix(request): """ - This method is used to set initial prefix + This method is used to set the initial prefix using a form. """ - instance = EmployeeGeneralSetting.objects.first() - instance = instance if instance else EmployeeGeneralSetting() - instance.badge_id_prefix = request.POST["initial_prefix"] - instance.save() - messages.success(request, "Initial prefix update") - return HttpResponseRedirect(request.META.get("HTTP_REFERER", "/")) + instance = EmployeeGeneralSetting.objects.first() # Get the first instance or None + if not instance: + instance = EmployeeGeneralSetting() # Create a new instance if none exists + + if request.method == "POST": + form = EmployeeGeneralSettingPrefixForm(request.POST, instance=instance) + if form.is_valid(): + form.save() + messages.success(request, "Initial prefix updated successfully.") + return HttpResponseRedirect(request.META.get("HTTP_REFERER", "/")) + else: + messages.error(request, "There was an error updating the prefix.") + else: + form = EmployeeGeneralSettingPrefixForm(instance=instance) + + return render(request, "settings/settings.html", {"prefix_form": form}) @login_required