43 lines
1.5 KiB
Python
43 lines
1.5 KiB
Python
from rest_framework import serializers
|
|
from django.contrib.auth.models import User
|
|
from .models import TimeEntry
|
|
|
|
class TimeEntrySerializer(serializers.ModelSerializer):
|
|
user = serializers.StringRelatedField(read_only=True)
|
|
username = serializers.CharField(source='user.username', read_only=True)
|
|
|
|
class Meta:
|
|
model = TimeEntry
|
|
fields = ['id', 'user', 'username', 'date', 'start_time', 'end_time', 'duration', 'created_at']
|
|
read_only_fields = ['user', 'duration', 'created_at']
|
|
|
|
class TimeEntryCreateSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = TimeEntry
|
|
fields = ['date', 'start_time', 'end_time']
|
|
|
|
class TimeEntryUpdateSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = TimeEntry
|
|
fields = ['start_time', 'end_time']
|
|
|
|
class WeeklySummarySerializer(serializers.Serializer):
|
|
user = serializers.StringRelatedField()
|
|
username = serializers.CharField()
|
|
total_hours = serializers.FloatField()
|
|
days = serializers.ListField()
|
|
|
|
def to_representation(self, instance):
|
|
data = super().to_representation(instance)
|
|
# Format the days data for frontend consumption
|
|
formatted_days = []
|
|
for day in data['days']:
|
|
formatted_days.append({
|
|
'date': day['date'],
|
|
'day': day['day'],
|
|
'start_time': day['start_time'],
|
|
'end_time': day['end_time'],
|
|
'duration': day['duration']
|
|
})
|
|
data['days'] = formatted_days
|
|
return data |