from django.utils.safestring import mark_safe import django_tables2 as tables from django_tables2.utils import A from .models import Question, UserAnswer from django.utils.html import format_html # from easy_thumbnails.files import get_thumbnailer # from easy_thumbnails.exceptions import InvalidImageFormatError # from generic.tables import UserAnswerTable # 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 QuestionTable(tables.Table): # edit = tables.LinkColumn( # "physics:physics_question_update", text="Edit", args=[A("pk")], orderable=False # ) view = tables.LinkColumn( "physics:question_detail", text="View", args=[A("pk")], orderable=False ) # delete = tables.LinkColumn( # "physics:question_delete", text="Delete", args=[A("pk")], orderable=False # ) exams = tables.ManyToManyColumn(verbose_name="Exams") selection = tables.CheckBoxColumn(accessor="pk", orderable=False) stem = tables.Column() answers = tables.TemplateColumn( "
  1. {{ record.a|safe}} : {{ record.a_answer|safe}}
  2. {{ record.b|safe}} : {{ record.b_answer|safe}}
  3. {{ record.c|safe}} : {{ record.c_answer|safe}}
  4. {{ record.d|safe}} : {{ record.d_answer|safe}}
  5. {{ record.e|safe}} : {{ record.e_answer|safe}}
" ) feedback = tables.TemplateColumn( "
  1. {{ record.a_feedback|safe}}
  2. {{ record.b_feedback|safe}}
  3. {{ record.c_feedback|safe}}
  4. {{ record.d_feedback|safe}}
  5. {{ record.e_feedback|safe}}
" ) class Meta: model = Question template_name = "django_tables2/bootstrap4.html" fields = ( # "stem", # "a_answer", # "b_answer", # "c_answer", # "d_answer", # "e_answer", # "best_answer", # "feedback", "created_date", "category", "author", ) sequence = ("view", "stem", "answers", "exams") def __init__(self, data=None, *args, **kwargs): super().__init__( data.prefetch_related( "category", "author", "exams" ), *args, **kwargs, ) def render_stem(self, value): return mark_safe(value) class UserAnswerTable(tables.Table): select = tables.CheckBoxColumn(accessor=("pk")) # delete = tables.LinkColumn( # "physics:user_answer_delete", text="Delete", args=[A("pk")], orderable=False # ) view = tables.LinkColumn( "physics:user_answer_view", text="View", args=[A("pk")], orderable=False ) class Meta: model = UserAnswer template_name = "django_tables2/bootstrap4.html" fields = ( "cid", "question", "answer", # "answer_compare", "exam", "created", "updated", )