import django_tables2
from django.utils.safestring import mark_safe
from django_tables2 import Column

from financial.models import Transaction
from utils.table_fields import CounterColumn, PriceColumn, SimpleSeparatorColumn, LeadgeneratorDateColumn


class TransactionListViewTable(django_tables2.Table):
    counter = CounterColumn(verbose_name='ردیف')
    transaction_date = LeadgeneratorDateColumn(accessor='transaction_date', verbose_name='تاریخ', language='persian')
    description = Column(accessor='description', verbose_name='توضیحات', orderable=False)
    cashier = Column(accessor='cashier__name', verbose_name='صندوق', orderable=False)
    beneficiary = Column(accessor='beneficiary', verbose_name='ذینفع', orderable=False)
    payment = SimpleSeparatorColumn(accessor='payment', verbose_name='پرداخت', attrs={'td': {'class': 'fw-bold'}})
    receipt = SimpleSeparatorColumn(accessor='receipt', verbose_name='دریافت', attrs={'td': {'class': 'fw-bold'}})
    accounting_headings = Column(accessor='accounting_headings__name', verbose_name='سرفصل', orderable=False)
    cost_center = Column(accessor='cost_center__name', verbose_name='مرکز هزینه', orderable=False)
    factor_image = Column(accessor='factor_image', verbose_name='تصویر سند', orderable=False)

    class Meta:
        model = Transaction
        fields = ('counter', 'transaction_date', 'description', 'beneficiary', 'payment', 'receipt',
                  'cashier', 'accounting_headings', 'cost_center', 'factor_image')
        attrs = {'class': 'table table-striped table-hover'}

    def render_factor_image(self, value, record):
        if record.factor_image:
            return mark_safe(f"<a href='{record.factor_image.url}'><img src='{record.factor_image.url}' width='20' height='20'/></a>")
        else:
            return '--'
