This commit is contained in:
Horilla
2025-10-06 20:17:32 +05:30
4 changed files with 28 additions and 75 deletions

View File

@@ -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()"

View File

@@ -15,10 +15,6 @@
{% elif form.candidate_id %}
<input type="hidden" name="candidate_id" value="{{form.candidate_id.value}}" />
{% endif %}
<input type="hidden" name="status" value="requested" />
<input type="hidden" name="title" value="{{form.instance.title}}" />
<input type="hidden" name="rejection_reason" value="{{form.rejection_reason.value}}" />
<input type="hidden" name="document_request_id" value="{{form.document_request_id.value}}" />
{{ form.non_field_errors }}
<div class="row">

View File

@@ -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

View File

@@ -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):