33 lines
1.1 KiB
Python
33 lines
1.1 KiB
Python
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')
|