"""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