from datetime import datetime, timedelta, time from rest_framework import serializers from rest_framework.serializers import ModelSerializer from dispatcher.core import convert_timedelta from dispatcher.models import Clocking, RealSageXHours class ClockingSerializer(ModelSerializer): total = serializers.SerializerMethodField() class Meta: model = Clocking fields = "__all__" def get_total(self, obj: Clocking): total = timedelta() if obj.in_am is not None and obj.out_am is not None: in_am = datetime.combine(obj.date, obj.in_am) out_am = datetime.combine(obj.date, obj.out_am) total += out_am - in_am if obj.in_pm is not None and obj.out_pm is not None: in_pm = datetime.combine(obj.date, obj.in_pm) out_pm = datetime.combine(obj.date, obj.out_pm) total += out_pm - in_pm if obj.remote is not None: total += obj.remote seconds = total.seconds minutes = seconds // 60 return minutes class RealSageXHoursSerializer(ModelSerializer): hours = serializers.SerializerMethodField() class Meta: model = RealSageXHours fields = "__all__" def get_hours(self, obj: RealSageXHours): return convert_timedelta(obj.hours)