from django.db import models from django.utils import timezone class Employee(models.Model): first_name = models.CharField(max_length=64) last_name = models.CharField(max_length=64) hire_date = models.DateField() title = models.CharField(max_length=64, blank=True, null=True) department = models.CharField(max_length=64, blank=True, null=True) manager = models.CharField(max_length=64, blank=True, null=True) initial_comments = models.TextField(blank=True, null=True) archived = models.BooleanField(default=False) @property def full_name(self): return f"{self.first_name} {self.last_name}" def __str__(self): return self.full_name class LogEntry(models.Model): employee = models.ForeignKey(Employee, on_delete=models.CASCADE) notes = models.CharField(max_length=500) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) def __str__(self): return f"{self.employee}: {self.notes}" class Todo(models.Model): employee = models.ForeignKey(Employee, on_delete=models.CASCADE) description = models.CharField(max_length=64) completed = models.BooleanField(default=False) completed_at = models.DateTimeField(blank=True, null=True) def complete(self): LogEntry.objects.create( employee=self.checklist.employee, notes=f'Completed To-do: "{self.description}"' ) self.object.completed = True self.object.completed_at = timezone.now() self.object.save() def __str__(self): return f"{self.employee}: {self.description}"