Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion backend/grants/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -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__)

Expand Down Expand Up @@ -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",
Expand Down Expand Up @@ -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()
Expand All @@ -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"),
)
),
)
)

Expand Down
Loading