from django.utils.html import format_html from django.conf import settings from django.utils.timesince import timesince from . import models from django_tables2.utils import A from django import forms import django_tables2 as tables from django.utils.translation import gettext_lazy as _ from .models import Car, CarFinance, ExteriorColors, InteriorColors, CarColors from .utils import get_local_name class ImageColumn(tables.Column): def render(self, value): return format_html('', settings.MEDIA_URL, value) class CarTable(tables.Table): stock_type = tables.Column(verbose_name=_("Stock Type")) vin = tables.LinkColumn("car_detail", args=[tables.A("pk")], verbose_name=_("VIN"), attrs={"td": {"class": "fw-bold"}, "span": {"class": "fas fa-bars"}}) id_car_make = tables.Column(verbose_name=_("Make")) id_car_model = tables.Column(verbose_name=_("Model")) year = tables.Column(verbose_name=_("Year")) id_car_serie = tables.Column(verbose_name=_("Series")) id_car_trim = tables.Column(verbose_name=_("Trim")) mileage = tables.Column(verbose_name=_("Mileage")) selling_price = tables.Column(accessor="finances.selling_price", verbose_name=_("Price")) exterior_color = tables.Column(accessor="colors.exterior.name", verbose_name=_("Exterior Color")) interior_color = tables.Column(accessor="colors.interior.name", verbose_name=_("Interior Color")) receiving_date = tables.Column(verbose_name=_("Age")) status = tables.Column(verbose_name=_("Status")) class Meta: model = Car template_name = settings.DJANGO_TABLES2_TEMPLATE export_formats = ["xlsx", ] fields = ( "stock_type", "vin", "id_car_make", "id_car_model", "year", "id_car_serie", "id_car_trim", "mileage", "selling_price", "exterior_color", "interior_color", "receiving_date", "status", ) attrs = {"class": "table table-hover fs-9 mb-0"} def render_id_car_make(self, value): return get_local_name(value) def render_id_car_model(self, value): return get_local_name(value) def render_id_car_serie(self, value): return get_local_name(value) def render_id_car_trim(self, value): return str(value) def render_exterior_color(self, value): return str(value) def render_interior_color(self, value): return str(value) def render_receiving_date(self, value): return timesince(value) if value else "-"