from django.db import models from django.conf import settings from datetime import datetime class TimeEntry(models.Model): user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='time_entries') date = models.DateField() start_time = models.TimeField(null=True, blank=True) end_time = models.TimeField(null=True, blank=True) 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 None @property def day_of_week(self): """Get day of week as string""" return self.date.strftime('%A')