"""File containing member application django tables.""" import django_tables2 as tables from django.utils.translation import ugettext as _ from django.core.exceptions import ObjectDoesNotExist from django.db.models import F, OuterRef, Subquery from django.utils import timezone from members.models import Member, Payment, Request class MemberTable(tables.Table): """Table for member.""" last_paid = tables.DateTimeColumn(verbose_name=_("Last paid")) options = tables.TemplateColumn( ( '' ) + _("Edit") + "", verbose_name="", ) class Meta: """Meta for member table.""" model = Member def render_last_paid(self, record): try: return timezone.localtime( record.payments.filter(member=record).latest("date").date ).strftime("%-d.%-m.%Y %H:%M") except ObjectDoesNotExist: return timezone.localtime(record.created).strftime("%-d.%-m.%Y %H:%M") + _( " (not paid)" ) def order_last_paid(self, queryset, is_descending): queryset = Member.get_members_with_latest_payment(queryset).order_by( ("-" if is_descending else "") + "last_paid" ) return (queryset, True) class PaymentTable(tables.Table): """Table for payments.""" member = tables.Column(accessor="member", verbose_name=_("Member")) options = tables.TemplateColumn( ( '' ) + _("Edit") + "", verbose_name="", ) class Meta: """Meta for payment table.""" model = Payment class RequestTable(tables.Table): """Table for member applications.""" options = tables.TemplateColumn( ( '' ) + _("Edit") + "", verbose_name="", ) class Meta: """Meta for request table.""" model = Request