You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kompass/jdav_web/material/models.py

38 lines
1.2 KiB
Python

from datetime import datetime
from django.db import models
from django.utils import timezone
# maximum time in years of a material part until being replaced
MAX_TIME_MATERIAL = 5
# Create your models here.
class MaterialPart(models.Model):
name = models.CharField(max_length=30)
buy_date = models.DateField('purchase date')
# owner = models.ForeignKey(Leiter) to be added later when there are user
def __repr__(self):
return self.name
def should_be_replaced(self):
buy_time = timezone.make_aware(datetime.combine(self.buy_date,
datetime.min.time()))
return yearsago(MAX_TIME_MATERIAL) >= buy_time
should_be_replaced.admin_order_field = 'buy_date'
should_be_replaced.boolean = True
should_be_replaced.short_description = 'Should be replaced?'
def yearsago(years, from_date=None):
if from_date is None:
from_date = timezone.now()
try:
return from_date.replace(year=from_date.year - years)
except ValueError:
# 29.02 -> use 28.02
assert from_date.month == 2 and from_date.day == 29
return from_date.replace(month=2, day=28, year=from_date.year - years)