import django_tables2 as tables from django_tables2.utils import A from django.utils.html import format_html from easy_thumbnails.files import get_thumbnailer from easy_thumbnails.exceptions import InvalidImageFormatError from generic.models import CidUser class ImageColumn(tables.Column): def render(self, value): try: thumbnailer = get_thumbnailer(value) return format_html('', thumbnailer["exam-list"]) except InvalidImageFormatError: return format_html('Invalid image url', value) class CidUserTable(tables.Table): # edit = tables.LinkColumn( # "anatomy:anatomy_question_update", text="Edit", args=[A("pk")], orderable=False # ) cid = tables.LinkColumn( "cid_scores", args=[A("cid"), A("passcode")], orderable=True ) #physics_exams = tables.ManyToManyColumn(verbose_name="Physics Exams") #rapid_exams = tables.ManyToManyColumn(verbose_name="Rapid Exams") #sba_exams = tables.ManyToManyColumn(verbose_name="SBA Exams") #longs_exams = tables.ManyToManyColumn(verbose_name="Long Exams") #anatomy_exams = tables.ManyToManyColumn(verbose_name="Anatomy Exams") selection = tables.CheckBoxColumn(accessor="pk", orderable=False) emails = tables.Column(empty_values=(), orderable=False) edit = tables.LinkColumn( "generic:update_cid", text="Edit", args=[A("pk")], orderable=True ) class Meta: model = CidUser template_name = "django_tables2/bootstrap4.html" fields = ( # "cid", "passcode", "active", "group", "internal_candidate", # "email", ) sequence = ("cid", "passcode", "active", "internal_candidate", "emails") def __init__(self, data=None, *args, **kwargs): super().__init__( data.prefetch_related( "group" ), *args, **kwargs, ) def render_emails(self, value, record): print(self) return format_html("""{}\n[{}]""", record.email, record.supervisor_email) class CidUserExamTable(tables.Table): # edit = tables.LinkColumn( # "anatomy:anatomy_question_update", text="Edit", args=[A("pk")], orderable=False # ) cid = tables.LinkColumn( "cid_scores", args=[A("cid"), A("passcode")], orderable=True ) physics_exams = tables.ManyToManyColumn(verbose_name="Physics Exams") rapid_exams = tables.ManyToManyColumn(verbose_name="Rapid Exams") sba_exams = tables.ManyToManyColumn(verbose_name="SBA Exams") longs_exams = tables.ManyToManyColumn(verbose_name="Long Exams") anatomy_exams = tables.ManyToManyColumn(verbose_name="Anatomy Exams") selection = tables.CheckBoxColumn(accessor="pk", orderable=False) emails = tables.Column(empty_values=(), orderable=False) edit = tables.LinkColumn( "generic:update_cid", text="Edit", args=[A("pk")], orderable=True ) class Meta: model = CidUser template_name = "django_tables2/bootstrap4.html" fields = ( # "cid", "passcode", "active", "group", "internal_candidate", # "email", ) sequence = ("cid", "passcode", "active", "internal_candidate", "emails") def __init__(self, data=None, *args, **kwargs): super().__init__( data.prefetch_related( #"physics_exams", "rapid_exams", "sba_exams", "anatomy_exams", "longs_exams", ), *args, **kwargs, ) def render_emails(self, value, record): return format_html("""{}\n[{}]""", record.email, record.supervisor_email) # def render_cid(self, value, record): # return format_html("""Popup""", record.pk)