import django_tables2 as tables from .models import ( InstructorOrVendor, Waiver, ) class WarnEmptyColumn(tables.Column): attrs = { "td": { "class": lambda value, bound_column: ( "table-danger" if value == bound_column.default else "" ) } } class WaiverReportTable(tables.Table): emergency_contact_name = WarnEmptyColumn() emergency_contact_number = WarnEmptyColumn() class Meta: model = Waiver fields = [ "name", "date", "emergency_contact_name", "emergency_contact_number", "waiver_version", "guardian_name", "guardian_relation", "guardian_date", ] class InstructorOrVendorTable(tables.Table): instructor_agreement_date = WarnEmptyColumn( "Instructor Agreement Date(s)", default="Missing" ) w9_date = WarnEmptyColumn(default="Missing") class Meta: model = InstructorOrVendor fields = [ "name", "instructor_agreement_date", "w9_date", "phone", "email_address", ] class ShopAccessErrorColumn(tables.Column): def td_class(value): if value.startswith("Has access but"): return "table-danger" elif value.startswith("Has cert but"): return "table-warning" else: return "" attrs = {"td": {"class": td_class}} class AccessVerificationTable(tables.Table): account_name = tables.Column() access_card = tables.Column() billing_method = tables.Column() join_date = tables.DateColumn() renewal_date = tables.DateColumn() access_front_door = tables.BooleanColumn(verbose_name="Front Door") access_studio_space = tables.BooleanColumn(verbose_name="Studio Space") wood_shop_error = ShopAccessErrorColumn() metal_shop_error = ShopAccessErrorColumn() extended_hours_error = ShopAccessErrorColumn() extended_hours_shops_error = ShopAccessErrorColumn() storage_closet_error = ShopAccessErrorColumn() class CertifiersTable(tables.Table): certified_by = tables.Column() certification_version__definition__name = tables.Column("Certification") certification_version__definition__department__name = tables.Column("Department") number_issued_on_this_tool = tables.Column() last_issued_certification_date = tables.Column() class CertificationCountTable(tables.Table): certification_version__definition__name = tables.Column("Certification") certification_version__definition__department__name = tables.Column("Department") total_issued = tables.Column()