from django.utils.translation import gettext_lazy
from django.views.generic import ListView

from judge.models import Language
from judge.utils.views import TitleMixin


class LanguageList(TitleMixin, ListView):
    model = Language
    context_object_name = "languages"
    template_name = "status/language-list.html"
    title = gettext_lazy("Runtimes")

    def get_queryset(self):
        queryset = super().get_queryset().prefetch_related("runtimeversion_set")
        if not self.request.user.is_superuser and not self.request.user.is_staff:
            queryset = queryset.filter(judges__online=True).distinct()
        return queryset