31 lines
1010 B
Python
31 lines
1010 B
Python
from django.db import models
|
|
from .district import District
|
|
from django.utils import timezone
|
|
|
|
class Device(models.Model):
|
|
address = models.CharField(max_length=100, unique=True)
|
|
district = models.ForeignKey(District, on_delete=models.PROTECT)
|
|
due_date = models.DateField(null=True, blank=True)
|
|
amount = models.IntegerField(null=True, blank=True)
|
|
is_paid = models.BooleanField(default=False)
|
|
created_at = models.DateTimeField(auto_now_add=True)
|
|
|
|
def __str__(self):
|
|
return self.address
|
|
|
|
@property
|
|
def days_until_due(self):
|
|
"""Calculate days remaining until payment is due"""
|
|
if not self.due_date:
|
|
return None
|
|
today = timezone.now().date()
|
|
delta = self.due_date - today
|
|
return delta.days
|
|
|
|
@property
|
|
def is_overdue(self):
|
|
"""Check if payment is overdue"""
|
|
if not self.due_date or self.is_paid:
|
|
return False
|
|
today = timezone.now().date()
|
|
return self.due_date < today |