network_inventory/devices/tables.py

60 lines
1.9 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