update
This commit is contained in:
parent
d937f9f684
commit
7d93bfde9f
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,26 +1,15 @@
|
|||||||
from django.utils.html import format_html
|
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.utils.timesince import timesince
|
from django.utils.timesince import timesince
|
||||||
|
|
||||||
from . import models
|
|
||||||
from django_tables2.utils import A
|
|
||||||
from django import forms
|
|
||||||
import django_tables2 as tables
|
import django_tables2 as tables
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from .models import Car, CarFinance, ExteriorColors, InteriorColors, CarColors
|
from .models import Car, CarFinance, ExteriorColors, InteriorColors, CarColors
|
||||||
from .utils import get_local_name
|
from .utils import get_local_name
|
||||||
|
from django.utils.html import format_html
|
||||||
|
|
||||||
|
|
||||||
class ImageColumn(tables.Column):
|
|
||||||
def render(self, value):
|
|
||||||
return format_html('<img src="{}{}" width="100" height="50" />', settings.MEDIA_URL, value)
|
|
||||||
|
|
||||||
|
|
||||||
class CarTable(tables.Table):
|
class CarTable(tables.Table):
|
||||||
stock_type = tables.Column(verbose_name=_("Stock Type"))
|
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"}})
|
vin = tables.LinkColumn("car_detail", args=[tables.A("pk")], verbose_name=_("VIN"), attrs={"td": {"class": "fw-bold"}})
|
||||||
id_car_make = tables.Column(verbose_name=_("Make"))
|
id_car_make = tables.Column(verbose_name=_("Make"))
|
||||||
id_car_model = tables.Column(verbose_name=_("Model"))
|
id_car_model = tables.Column(verbose_name=_("Model"))
|
||||||
year = tables.Column(verbose_name=_("Year"))
|
year = tables.Column(verbose_name=_("Year"))
|
||||||
@ -36,7 +25,7 @@ class CarTable(tables.Table):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = Car
|
model = Car
|
||||||
template_name = settings.DJANGO_TABLES2_TEMPLATE
|
template_name = settings.DJANGO_TABLES2_TEMPLATE
|
||||||
export_formats = ["xlsx", ]
|
export_formats = ["xlsx"]
|
||||||
fields = (
|
fields = (
|
||||||
"stock_type",
|
"stock_type",
|
||||||
"vin",
|
"vin",
|
||||||
@ -52,7 +41,7 @@ class CarTable(tables.Table):
|
|||||||
"receiving_date",
|
"receiving_date",
|
||||||
"status",
|
"status",
|
||||||
)
|
)
|
||||||
attrs = {"class": "table table-hover fs-9 mb-0"}
|
attrs = {"class": "table table-hover fs-9 mb-0 p-1"}
|
||||||
|
|
||||||
def render_id_car_make(self, value):
|
def render_id_car_make(self, value):
|
||||||
return get_local_name(value)
|
return get_local_name(value)
|
||||||
@ -74,3 +63,21 @@ class CarTable(tables.Table):
|
|||||||
|
|
||||||
def render_receiving_date(self, value):
|
def render_receiving_date(self, value):
|
||||||
return timesince(value) if value else "-"
|
return timesince(value) if value else "-"
|
||||||
|
|
||||||
|
def render_status(self, value):
|
||||||
|
status_badges = {
|
||||||
|
"available": "badge-phoenix-success",
|
||||||
|
"reserved": "badge-phoenix-danger",
|
||||||
|
"sold": "badge-phoenix-info",
|
||||||
|
"transfer": "badge-phoenix-warning",
|
||||||
|
}
|
||||||
|
badge_class = status_badges.get(value.lower(), "badge-secondary")
|
||||||
|
return format_html('<span class="badge badge-phoenix fs-11 {}">{}</span>', badge_class, value)
|
||||||
|
|
||||||
|
def render_stock_type(self, value):
|
||||||
|
type_badges = {
|
||||||
|
"new": "badge-phoenix-success",
|
||||||
|
"used": "badge-phoenix-warning",
|
||||||
|
}
|
||||||
|
badge_class = type_badges.get(value.lower(), "badge-secondary")
|
||||||
|
return format_html('<span class="badge badge-phoenix fs-11 {}">{}</span>', badge_class, value)
|
||||||
@ -1,10 +1,11 @@
|
|||||||
{% extends 'base.html' %}
|
{% extends 'base.html' %}
|
||||||
|
|
||||||
{% load static i18n django_tables2 %}
|
{% load static i18n django_tables2 %}
|
||||||
{% load export_url from django_tables2 %}
|
{% load export_url from django_tables2 %}
|
||||||
|
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="container-fluid p-4 my-3">
|
<div class="container-fluid mx-n1 p-3">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-12 p-2 d-flex justify-content-end gap-3">
|
<div class="col-md-12 p-2 d-flex justify-content-end gap-3">
|
||||||
<a href="{% export_url 'xlsx' %}" class="btn btn-sm btn-phoenix-success">
|
<a href="{% export_url 'xlsx' %}" class="btn btn-sm btn-phoenix-success">
|
||||||
@ -13,10 +14,12 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-12">
|
<div class="col-md-12 p-1">
|
||||||
<div class="table-responsive scrollbar mx-n1 px-1 align-center">
|
<div class="table-responsive scrollbar mx-n1 p-1 align-center">
|
||||||
{% render_table table %}
|
{% render_table table %}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
87
templates/partials/tables.html
Normal file
87
templates/partials/tables.html
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
{% load django_tables2 %}
|
||||||
|
{% load i18n l10n %}
|
||||||
|
{% block table-wrapper %}
|
||||||
|
<div class="table-container">
|
||||||
|
{% block table %}
|
||||||
|
<table {% render_attrs table.attrs class="table" %}>
|
||||||
|
{% block table.thead %}
|
||||||
|
{% if table.show_header %}
|
||||||
|
<thead {{ table.attrs.thead.as_html }}>
|
||||||
|
<tr>
|
||||||
|
{% for column in table.columns %}
|
||||||
|
<th {{ column.attrs.th.as_html }} scope="col">
|
||||||
|
{% if column.orderable %}
|
||||||
|
<a href="{% querystring table.prefixed_order_by_field=column.order_by_alias.next %}">{{ column.header }}</a>
|
||||||
|
{% else %}
|
||||||
|
{{ column.header }}
|
||||||
|
{% endif %}
|
||||||
|
</th>
|
||||||
|
{% endfor %}
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
{% endif %}
|
||||||
|
{% endblock table.thead %}
|
||||||
|
{% block table.tbody %}
|
||||||
|
<tbody {{ table.attrs.tbody.as_html }}>
|
||||||
|
{% for row in table.paginated_rows %}
|
||||||
|
{% block table.tbody.row %}
|
||||||
|
<tr {{ row.attrs.as_html }}>
|
||||||
|
{% for column, cell in row.items %}
|
||||||
|
<td {{ column.attrs.td.as_html }}>{% if column.localize == None %}{{ cell }}{% else %}{% if column.localize %}{{ cell|localize }}{% else %}{{ cell|unlocalize }}{% endif %}{% endif %}</td>
|
||||||
|
{% endfor %}
|
||||||
|
</tr>
|
||||||
|
{% endblock table.tbody.row %}
|
||||||
|
{% empty %}
|
||||||
|
{% if table.empty_text %}
|
||||||
|
{% block table.tbody.empty_text %}
|
||||||
|
<tr><td colspan="{{ table.columns|length }}">{{ table.empty_text }}</td></tr>
|
||||||
|
{% endblock table.tbody.empty_text %}
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
{% endblock table.tbody %}
|
||||||
|
{% block table.tfoot %}
|
||||||
|
{% if table.has_footer %}
|
||||||
|
<tfoot {{ table.attrs.tfoot.as_html }}>
|
||||||
|
<tr>
|
||||||
|
{% for column in table.columns %}
|
||||||
|
<td {{ column.attrs.tf.as_html }}>{{ column.footer }}</td>
|
||||||
|
{% endfor %}
|
||||||
|
</tr>
|
||||||
|
</tfoot>
|
||||||
|
{% endif %}
|
||||||
|
{% endblock table.tfoot %}
|
||||||
|
</table>
|
||||||
|
{% endblock table %}
|
||||||
|
|
||||||
|
<div class="pagination-container">
|
||||||
|
{% block pagination %}
|
||||||
|
{% if table.page %}
|
||||||
|
<ul class="pagination justify-content-center">
|
||||||
|
{% if table.page.has_previous %}
|
||||||
|
|
||||||
|
<li class="page-item">
|
||||||
|
<a class="page-link" href="?page={{ table.page.previous_page_number }}">
|
||||||
|
<span class="fas fa-chevron-{% if LANGUAGE_CODE == 'ar' %}right{% else %}left{% endif %}"></span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<li class="page-item active">
|
||||||
|
<span class="page-link">{{ _("Page") }} {{ table.page.number }} {{ _("of") }} {{ table.paginator.num_pages }}</span>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
{% if table.page.has_next %}
|
||||||
|
<li class="page-item">
|
||||||
|
<a class="page-link" href="?page={{ table.page.next_page_number }}">
|
||||||
|
<span class="fas fa-chevron-{% if LANGUAGE_CODE == 'ar' %}left{% else %}right{% endif %}"></span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
</ul>
|
||||||
|
{% endif %}
|
||||||
|
{% endblock pagination %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endblock table-wrapper %}
|
||||||
Loading…
x
Reference in New Issue
Block a user