55 lines
1.8 KiB
Python
55 lines
1.8 KiB
Python
|
|
from django.shortcuts import render, redirect, get_object_or_404
|
||
|
|
from django.contrib import messages
|
||
|
|
from .models import Task, Client, TaskResult
|
||
|
|
|
||
|
|
# Home view
|
||
|
|
def index(request):
|
||
|
|
return render(request, 'tasks/index.html')
|
||
|
|
|
||
|
|
# Task views
|
||
|
|
def task_list(request):
|
||
|
|
tasks = Task.objects.all()
|
||
|
|
return render(request, 'tasks/task_list.html', {'tasks': tasks})
|
||
|
|
|
||
|
|
def task_create(request):
|
||
|
|
if request.method == 'POST':
|
||
|
|
name = request.POST['name']
|
||
|
|
client_name = request.POST.get('client_name', '')
|
||
|
|
script = request.POST.get('script', '')
|
||
|
|
timeout_seconds = int(request.POST.get('timeout_seconds', 259200))
|
||
|
|
|
||
|
|
Task.objects.create(
|
||
|
|
name=name,
|
||
|
|
client_name=client_name if client_name else None,
|
||
|
|
script=script if script else None,
|
||
|
|
timeout_seconds=timeout_seconds
|
||
|
|
)
|
||
|
|
messages.success(request, '任务创建成功!')
|
||
|
|
return redirect('task_list')
|
||
|
|
return render(request, 'tasks/task_create.html')
|
||
|
|
|
||
|
|
def task_detail(request, task_id):
|
||
|
|
task = get_object_or_404(Task, id=task_id)
|
||
|
|
results = task.results.all()
|
||
|
|
return render(request, 'tasks/task_detail.html', {'task': task, 'results': results})
|
||
|
|
|
||
|
|
# Client views
|
||
|
|
def client_list(request):
|
||
|
|
clients = Client.objects.all()
|
||
|
|
return render(request, 'tasks/client_list.html', {'clients': clients})
|
||
|
|
|
||
|
|
def client_create(request):
|
||
|
|
if request.method == 'POST':
|
||
|
|
name = request.POST['name']
|
||
|
|
# Generate a simple token for demo purposes
|
||
|
|
import secrets
|
||
|
|
token = secrets.token_urlsafe(32)
|
||
|
|
|
||
|
|
Client.objects.create(
|
||
|
|
name=name,
|
||
|
|
token=token
|
||
|
|
)
|
||
|
|
messages.success(request, '客户端创建成功!')
|
||
|
|
return redirect('client_list')
|
||
|
|
return render(request, 'tasks/client_create.html')
|