继续测试任务管理器

This commit is contained in:
ngfchl
2022-09-17 15:03:24 +08:00
parent ed3d560e1b
commit b0fb8455d4
4 changed files with 127 additions and 3 deletions

View File

@@ -12,5 +12,7 @@ urlpatterns = [
path(r'do_restart', views.do_restart, name='do_restart'),
path(r'do_update', views.do_update, name='do_update'),
path(r'import_from_ptpp', views.import_from_ptpp, name='import_from_ptpp'),
path(r'page_downloading', views.page_downloading, name='page_downloading'),
path(r'downloading', views.get_downloading, name='downloading'),
path(r'do_sql', views.do_sql, name='do_sql'),
]

View File

@@ -5,11 +5,12 @@ from datetime import datetime
import docker
import git
import qbittorrentapi
from django.http import JsonResponse
from django.shortcuts import render
from pt_site import views as tasks
from pt_site.models import SiteStatus, MySite, Site
from pt_site.models import SiteStatus, MySite, Site, Downloader
from pt_site.views import scheduler, pt_spider
from ptools.base import CommonResponse, StatusCodeEnum
@@ -81,6 +82,41 @@ def do_sql(request):
return JsonResponse('ok', safe=False)
def page_downloading(request):
return render(request, 'auto_pt/downloading.html')
def get_downloading(request):
downloader_list = Downloader.objects.all()
tasks = []
for downloader in downloader_list:
qb_client = qbittorrentapi.Client(host=downloader.host,
port=downloader.port,
username=downloader.username,
password=downloader.password)
try:
qb_client.auth_log_in()
t_list = qb_client.torrents_info()
print(len(t_list))
torrents = []
for torrent in t_list:
# torrent.to_dict()
torrents.append(dict(torrent))
tasks.append({
'downloader': {
'name': downloader.name,
'host': 'http://{}:{}'.format(downloader.host, downloader.port)
},
'torrents': torrents,
# 'torrents': t_list,
})
except Exception as e:
print(e)
continue
print(tasks)
return JsonResponse(CommonResponse.success(data=json.dumps(tasks)).to_dict(), safe=False)
def import_from_ptpp(request):
if request.method == 'GET':
return render(request, 'auto_pt/import_ptpp.html')
@@ -116,7 +152,7 @@ def import_from_ptpp(request):
'msg': message,
'tag': 'warning'
})
raise
# raise
return JsonResponse(CommonResponse.success(data={
'messages': message_list
}).to_dict(), safe=False)

View File

@@ -201,7 +201,7 @@ SIMPLEUI_CONFIG = {
'models': [{
'name': '任务管理',
'icon': 'fa fa-user',
'url': '/downloader/downloading/index'
'url': '/tasks/page_downloading'
}, {
'name': '查询种子',
'icon': 'fa fa-user',

View File

@@ -0,0 +1,86 @@
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>任务管理</title>
{% include 'admin/includes/css-part.html' %}
</head>
<body>
<div id="app">
<el-tabs type="border-card" style="height: 200px;" v-for="task in tasks">
<el-tab-pane label="task.downloader.name" id="task.downloader.id">
<el-table
:data="task.torrents"
height="250"
border
style="width: 100%">
<el-table-column
prop="date"
label="日期"
width="180">
</el-table-column>
<el-table-column prop="name"
label="种子名称" width="180"></el-table-column>
<el-table-column prop="name"
label="大小" width="180"></el-table-column>
<el-table-column prop="name"
label="已下载"></el-table-column>
<el-table-column prop="name"
label="已上传"></el-table-column>
<el-table-column prop="name"
label="下载速度"></el-table-column>
<el-table-column prop="name"
label="上传速度"></el-table-column>
<el-table-column prop="name"
label="下载进度"></el-table-column>
<el-table-column prop="name"
label="保存路径"></el-table-column>
<el-table-column prop="name"
label="分享率"></el-table-column>
<el-table-column prop="name"
label="做种时间"></el-table-column>
<el-table-column prop="name"
label="当前状态"></el-table-column>
<el-table-column prop="name"
label="最后活动"></el-table-column>
<el-table-column prop="name"
label="分类"></el-table-column>
<el-table-column prop="name"
label="服务器"></el-table-column>
</el-table>
</el-tab-pane>
</el-tabs>
</div>
{% include 'admin/includes/js-part.html' %}
<script src="{% static 'admin/simpleui-x/js/axios.min.js' %}"></script>
<script>
const vm = new Vue({
// 配置选项(option)
// element: 指定用vue来管理页面中的哪个标签区域
el: '#app',
data: {
tasks: ''
},
created() {
this.get_downloading()
},
watch: {},
methods: {
get_downloading() {
axios.get(
"{% url "downloading" %}"
).then(res => {
console.log(res.data)
})
}
}
});
</script>
</body>
</html>