diff --git a/backend/grants/admin.py b/backend/grants/admin.py index bca135cd9e..139e569b8b 100644 --- a/backend/grants/admin.py +++ b/backend/grants/admin.py @@ -31,13 +31,14 @@ from schedule.models import ScheduleItem from submissions.models import Submission from .models import Grant, GrantConfirmPendingStatusProxy -from django.db.models import Exists, OuterRef, F +from django.db.models import Exists, OuterRef from pretix import user_has_admission_ticket from django.contrib.admin import SimpleListFilter from participants.models import Participant from django.urls import reverse from django.utils.safestring import mark_safe +from visa.models import InvitationLetterRequest logger = logging.getLogger(__name__) @@ -402,6 +403,7 @@ class GrantAdmin(ExportMixin, ConferencePermissionMixin, admin.ModelAdmin): "country", "is_proposed_speaker", "is_confirmed_speaker", + "has_sent_invitation_letter_request", "emoji_gender", "conference", "status", @@ -584,6 +586,12 @@ def user_has_ticket(self, obj: Grant) -> bool: def has_voucher(self, obj: Grant) -> bool: return obj.has_voucher + @admin.display(description="📧") + def has_sent_invitation_letter_request(self, obj: Grant) -> bool: + if obj.has_invitation_letter_request: + return "📧" + return "" + def get_queryset(self, request): qs = ( super() @@ -608,6 +616,12 @@ def get_queryset(self, request): user_id=OuterRef("user_id"), ) ), + has_invitation_letter_request=Exists( + InvitationLetterRequest.objects.filter( + conference_id=OuterRef("conference_id"), + requester_id=OuterRef("user_id"), + ) + ), ) )