# -*- coding: utf-8 -*-
|
"""
|
@File : debugtalk.py
|
@Time : 2023/2/22 15:07
|
@Author : geekbing
|
@LastEditTime : -
|
@LastEditors : -
|
@Description : 驱动代码视图
|
"""
|
|
from django.core.exceptions import ObjectDoesNotExist
|
from django.utils.decorators import method_decorator
|
from django.utils import timezone
|
from rest_framework.response import Response
|
from rest_framework.viewsets import GenericViewSet
|
|
from lunarlink import models
|
from lunarlink import serializers
|
from lunarlink.utils import response
|
from lunarlink.utils.decorator import request_log
|
from lunarlink.utils.runner import DebugCode
|
|
|
class DebugTalkView(GenericViewSet):
|
"""
|
DebugTalk update
|
"""
|
|
serializer_class = serializers.DebugTalkSerializer
|
queryset = models.Debugtalk.objects
|
|
@method_decorator(request_log(level="INFO"))
|
def debugtalk(self, request, pk):
|
"""
|
获取debugtalk code
|
"""
|
try:
|
queryset = models.Debugtalk.objects.get(project__id=pk)
|
except ObjectDoesNotExist:
|
return Response(response.DEBUGTALK_NOT_EXISTS)
|
|
serializer = self.get_serializer(queryset, many=False)
|
|
return Response(serializer.data)
|
|
@method_decorator(request_log(level="INFO"))
|
def update(self, request):
|
"""
|
编辑debugtalk.py代码并保存
|
{
|
id: int # debugtalk id
|
code: str
|
}
|
"""
|
|
try:
|
debugtalk_id = request.data["id"]
|
debugtalk_code = request.data["code"]
|
except KeyError:
|
return Response(response.KEY_MISS)
|
|
try:
|
models.Debugtalk.objects.get(id=debugtalk_id)
|
models.Debugtalk.objects.filter(id=debugtalk_id).update(
|
code=debugtalk_code,
|
updater=request.user.id,
|
update_time=timezone.now(),
|
)
|
except ObjectDoesNotExist:
|
return Response(response.DEBUGTALK_NOT_EXISTS)
|
|
return Response(response.DEBUGTALK_UPDATE_SUCCESS)
|
|
@method_decorator(request_log(level="INFO"))
|
def run(self, request):
|
"""在线运行"""
|
try:
|
code = request.data["code"]
|
except KeyError:
|
return Response(response.KEY_MISS)
|
|
debug = DebugCode(code)
|
debug.run()
|
resp = {"msg": debug.resp, "success": True, "code": "0001"}
|
return Response(resp)
|