# 4.	License

class Driver(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    
class DrivingLicense(models.Model):
    license_number = models.CharField(max_length=10, unique=True)
    issue_date = models.DateField()
    driver = models.OneToOne("Driver", on_delete=models.CASCADE)
    
    def __str__(self):
        expiration_date = self.issue_date + timedelta(days=365)
        return f"License with id: {self.id} expires on {expiration_date}!
    

def calculate_licenses_expiration_dates():
    licenses = DrivingLicense.objects.order_by('-license_number')
    
    return "\n".join(str(l) for l in licenses)
    
def get_drivers_with_expired_licenses(due_date):
    expiration_cutoff_date = due_date - timedelta(days=365)
    
    expired_drivers = Driver.objects.filter(DrivingLicense__issue_date__gt=expiration_cutoff_date)
    
    return expired_drivers