diff --git a/employee/templates/documents/document_nav.html b/employee/templates/documents/document_nav.html
index b4850c3d1..1227aac2f 100644
--- a/employee/templates/documents/document_nav.html
+++ b/employee/templates/documents/document_nav.html
@@ -27,6 +27,7 @@
hx-target="#view-container"
hx-select="#view-container"
hx-swap="outerHTML"
+ hx-disinherit="*"
id="filterForm"
class="d-flex"
onsubmit = "event.preventDefault()"
diff --git a/employee/templates/tabs/htmx/document_form.html b/employee/templates/tabs/htmx/document_form.html
index 0e1918b0c..74d16d9d6 100644
--- a/employee/templates/tabs/htmx/document_form.html
+++ b/employee/templates/tabs/htmx/document_form.html
@@ -15,10 +15,6 @@
{% elif form.candidate_id %}
{% endif %}
-
-
-
-
{{ form.non_field_errors }}
diff --git a/horilla_api/api_methods/employee/methods.py b/horilla_api/api_methods/employee/methods.py
index 5c0400873..e69de29bb 100644
--- a/horilla_api/api_methods/employee/methods.py
+++ b/horilla_api/api_methods/employee/methods.py
@@ -1,54 +0,0 @@
-import re
-
-from base.methods import eval_validate
-from base.models import *
-from employee.models import *
-
-
-def get_next_badge_id():
- """
- This method is used to generate badge id
- """
- from base.context_processors import get_initial_prefix
- from employee.methods.methods import get_ordered_badge_ids
-
- prefix = get_initial_prefix(None)["get_initial_prefix"]
- data = get_ordered_badge_ids()
- result = []
- try:
- for sublist in data:
- for item in sublist:
- if isinstance(item, str) and item.lower().startswith(prefix.lower()):
- # Find the index of the item in the sublist
- index = sublist.index(item)
- # Check if there is a next item in the sublist
- if index + 1 < len(sublist):
- result = sublist[index + 1]
- result = re.findall(r"[a-zA-Z]+|\d+|[^a-zA-Z\d\s]", result)
-
- if result:
- prefix = []
- incremented = False
- for item in reversed(result):
- total_letters = len(item)
- total_zero_leads = 0
- for letter in item:
- if letter == "0":
- total_zero_leads = total_zero_leads + 1
- continue
- break
-
- if total_zero_leads:
- item = item[total_zero_leads:]
- if isinstance(item, list):
- item = item[-1]
- if not incremented and isinstance(eval_validate(str(item)), int):
- item = int(item) + 1
- incremented = True
- if isinstance(item, int):
- item = "{:0{}d}".format(item, total_letters)
- prefix.insert(0, str(item))
- prefix = "".join(prefix)
- except Exception as e:
- prefix = get_initial_prefix(None)["get_initial_prefix"]
- return prefix
diff --git a/horilla_api/api_views/attendance/views.py b/horilla_api/api_views/attendance/views.py
index c2df6d2c7..9b4164fa9 100644
--- a/horilla_api/api_views/attendance/views.py
+++ b/horilla_api/api_views/attendance/views.py
@@ -89,7 +89,6 @@ class ClockInAPIView(APIView):
if request.__dict__.get("date"):
date_today = request.date
attendance_date = date_today
-
day = date_today.strftime("%A").lower()
day = EmployeeShiftDay.objects.get(day=day)
now = datetime.now().strftime("%H:%M")
@@ -437,33 +436,44 @@ class AttendanceRequestView(APIView):
return pagenation.get_paginated_response(serializer.data)
def post(self, request):
- serializer = AttendanceRequestSerializer(data=request.data)
- if serializer.is_valid():
- serializer.save()
- return Response(serializer.data, status=200)
+ from attendance.forms import NewRequestForm
+
+ form = NewRequestForm(data=request.data)
+ if form.is_valid():
+ work_type = form.cleaned_data.get("work_type_id")
+
+ if not WorkType.objects.filter(pk=getattr(work_type, "pk", None)).exists():
+ form.cleaned_data["work_type_id"] = None
+
+ if form.new_instance is not None:
+ form.new_instance.save()
+
+ return Response(form.data, status=200)
employee_id = request.data.get("employee_id")
attendance_date = request.data.get("attendance_date", date.today())
if Attendance.objects.filter(
employee_id=employee_id, attendance_date=attendance_date
).exists():
return Response(
- {
- "error": [
- "Attendance for this employee on the current date already exists."
- ]
- },
+ {error: list(message) for error, message in form.errors.items()},
status=400,
)
- return Response(serializer.errors, status=404)
+ return Response(form.errors, status=404)
- @manager_permission_required("attendance.update_attendance")
def put(self, request, pk):
+ from attendance.forms import AttendanceRequestForm
+
attendance = Attendance.objects.get(id=pk)
- serializer = AttendanceRequestSerializer(instance=attendance, data=request.data)
- if serializer.is_valid():
- instance = serializer.save()
+ form = AttendanceRequestForm(data=request.data, instance=attendance)
+ if form.is_valid():
+ attendance = Attendance.objects.get(id=form.instance.pk)
+ instance = form.save()
instance.employee_id = attendance.employee_id
instance.id = attendance.id
+ work_type = form.cleaned_data.get("work_type_id")
+
+ if not WorkType.objects.filter(pk=getattr(work_type, "pk", None)).exists():
+ form.cleaned_data["work_type_id"] = None
if attendance.request_type != "create_request":
attendance.requested_data = json.dumps(instance.serialize())
attendance.request_description = instance.request_description
@@ -474,8 +484,8 @@ class AttendanceRequestView(APIView):
instance.is_validate_request_approved = False
instance.is_validate_request = True
instance.save()
- return Response(serializer.data, status=200)
- return Response(serializer.errors, status=404)
+ return Response(form.data, status=200)
+ return Response(form.errors, status=404)
class AttendanceRequestApproveView(APIView):