44 lines
1.3 KiB
Python
44 lines
1.3 KiB
Python
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)
|