[UPDT] HORILLA_API: Work type name field in serializers

This commit is contained in:
Horilla
2025-10-06 20:27:55 +05:30
parent 39f4f1e545
commit 8f661b4de0
2 changed files with 30 additions and 12 deletions

View File

@@ -61,6 +61,9 @@ class AttendanceRequestSerializer(serializers.ModelSerializer):
source="employee_id.employee_last_name", read_only=True
)
shift_name = serializers.CharField(source="shift_id.employee_shift", read_only=True)
work_type_name = serializers.CharField(
source="work_type_id.work_type", read_only=True
)
badge_id = serializers.CharField(source="employee_id.badge_id", read_only=True)
employee_profile_url = serializers.SerializerMethodField(read_only=True)

View File

@@ -436,29 +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: list(message) for error, message in serializer.errors.items()},
{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
@@ -469,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):