network_inventory/src/devices/tables.py

67 lines
1.7 KiB
Python

from datetime import datetime, timedelta
import django_tables2 as tables
from django_tables2.utils import A
from core.tables import CoreTable
from .models import Device
class DevicesTable(CoreTable):
id = tables.Column(visible=False)
name = tables.Column("Device", linkify=True)
description = tables.Column(
attrs={"td": {"class": "text-truncate", "style": "max-width: 150px;"}}
)
delete = tables.LinkColumn(
"device_delete",
text="delete",
args=[A("pk")],
attrs={
"a": {
"class": "delete material-icons",
}
},
orderable=False,
)
class Meta(CoreTable.Meta):
model = Device
class WarrantiesTable(CoreTable):
customer = tables.Column(linkify=True, orderable=False)
device = tables.Column(linkify=True)
valid_from = tables.Column()
valid_until = tables.Column()
warranty_type = tables.Column()
delete = tables.LinkColumn(
"warranty_delete",
text="delete",
args=[A("pk")],
attrs={
"a": {
"class": "delete material-icons",
}
},
orderable=False,
)
class Meta(CoreTable.Meta):
pass
def render_valid_until(self, value, column):
today = datetime.date(datetime.today())
one_year_from_today = datetime.date(datetime.today() + timedelta(365))
if value > one_year_from_today:
column.attrs = {"td": {}}
return value
if value <= today:
column.attrs = {"td": {"bgcolor": "red"}}
return value
if value <= one_year_from_today:
column.attrs = {"td": {"bgcolor": "orange"}}
return value