mirror of
https://github.com/j3ssie/osmedeus.git
synced 2026-08-20 22:52:32 +02:00
77 lines
2.2 KiB
Python
77 lines
2.2 KiB
Python
from rest_framework import generics, mixins
|
|
from rest_framework.response import Response
|
|
from rest_framework.views import APIView
|
|
from rest_framework.permissions import IsAuthenticated, IsAdminUser
|
|
from rest_framework import serializers
|
|
|
|
from api.models import Logs, Workspaces
|
|
|
|
from core import utils
|
|
from core import dbutils
|
|
from core import common
|
|
|
|
|
|
class LogsSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = Logs
|
|
fields = [
|
|
'cmd',
|
|
'output_path',
|
|
'std_path',
|
|
'module',
|
|
'workspace',
|
|
'cmd_type',
|
|
'chunk',
|
|
'delay',
|
|
'resources',
|
|
'checksum',
|
|
]
|
|
|
|
|
|
class LogsView(
|
|
generics.ListAPIView,
|
|
APIView):
|
|
|
|
serializer_class = LogsSerializer
|
|
permission_classes = (IsAuthenticated, IsAdminUser)
|
|
|
|
def get_queryset(self):
|
|
queryset = Logs.objects.all()
|
|
module = self.request.query_params.get('module', None)
|
|
workspace = self.request.query_params.get('workspace', None)
|
|
cmd = self.request.query_params.get('cmd', None)
|
|
raw = self.request.query_params.get('raw', None)
|
|
|
|
if workspace is not None:
|
|
queryset = queryset.filter(workspace=workspace)
|
|
|
|
if module is not None:
|
|
queryset = queryset.filter(module=module)
|
|
|
|
if cmd is not None:
|
|
queryset = queryset.filter(cmd__contains=cmd)
|
|
if raw:
|
|
return queryset
|
|
|
|
real_queryset = []
|
|
for item in queryset:
|
|
if utils.not_empty_file(item.output_path):
|
|
real_queryset.append(item)
|
|
return real_queryset
|
|
|
|
def get(self, request, *args, **kwargs):
|
|
workspace = self.request.query_params.get('workspace', None)
|
|
obj = Workspaces.objects.get(workspace=workspace)
|
|
wss = obj.workspaces
|
|
|
|
content = self.list(request, *args, **kwargs).data
|
|
response = []
|
|
for log in content:
|
|
item = dict(log)
|
|
item['output_path'] = item['output_path'].replace(wss, '').strip('/')
|
|
item['std_path'] = item['std_path'].replace(wss, '').strip('/')
|
|
response.append(item)
|
|
|
|
return Response({'logs': response})
|
|
|