from django.db import models from django.contrib.auth.models import User from datetime import datetime, date class TimeEntry(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='time_entries') date = models.DateField() start_time = models.TimeField() end_time = models.TimeField() created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) class Meta: ordering = ['-date', '-start_time'] unique_together = ['user', 'date', 'start_time'] def __str__(self): return f"{self.user.username} - {self.date} ({self.start_time} to {self.end_time})" @property def duration(self): """Calculate duration in hours""" if self.start_time and self.end_time: start = datetime.combine(self.date, self.start_time) end = datetime.combine(self.date, self.end_time) return (end - start).total_seconds() / 3600 return 0 @property def day_of_week(self): """Get day of week as string""" return self.date.strftime('%A')