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