|
|
@ -5,9 +5,10 @@ from typing import Callable
|
|
|
|
import yaml
|
|
|
|
import yaml
|
|
|
|
import os.path
|
|
|
|
import os.path
|
|
|
|
|
|
|
|
|
|
|
|
from django.core.files.storage import default_storage
|
|
|
|
|
|
|
|
from rest_framework import viewsets
|
|
|
|
from rest_framework import viewsets
|
|
|
|
from django.http import HttpResponse
|
|
|
|
from django.http import HttpResponse
|
|
|
|
|
|
|
|
from django.core.files.storage import default_storage
|
|
|
|
|
|
|
|
from django.db.models import Prefetch
|
|
|
|
from rest_framework.decorators import action
|
|
|
|
from rest_framework.decorators import action
|
|
|
|
from rest_framework.request import Request
|
|
|
|
from rest_framework.request import Request
|
|
|
|
from rest_framework.response import Response
|
|
|
|
from rest_framework.response import Response
|
|
|
@ -97,16 +98,15 @@ class AppletViewSet(DownloadUploadMixin, viewsets.ModelViewSet):
|
|
|
|
'download': 'terminal.view_applet',
|
|
|
|
'download': 'terminal.view_applet',
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
def filter_queryset(self, queryset):
|
|
|
|
def get_queryset(self):
|
|
|
|
queryset = list(super().filter_queryset(queryset))
|
|
|
|
queryset = super().get_queryset()
|
|
|
|
host = self.request.query_params.get('host')
|
|
|
|
host = self.request.query_params.get('host')
|
|
|
|
if not host:
|
|
|
|
|
|
|
|
return queryset
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
publication_mapper = {p.applet: p for p in AppletPublication.objects.filter(host_id=host)}
|
|
|
|
if not host:
|
|
|
|
for applet in queryset:
|
|
|
|
return queryset.prefetch_related('publications')
|
|
|
|
applet.publication = publication_mapper.get(applet)
|
|
|
|
else:
|
|
|
|
return queryset
|
|
|
|
publications = AppletPublication.objects.filter(host_id=host)
|
|
|
|
|
|
|
|
return queryset.prefetch_related(Prefetch('publications', queryset=publications))
|
|
|
|
|
|
|
|
|
|
|
|
def perform_destroy(self, instance):
|
|
|
|
def perform_destroy(self, instance):
|
|
|
|
if not instance.name:
|
|
|
|
if not instance.name:
|
|
|
|