mirror of
https://github.com/jumpserver/jumpserver.git
synced 2026-01-29 21:51:31 +00:00
[Update] 修改一些bug, 增加执行task的按钮
This commit is contained in:
@@ -2,11 +2,13 @@
|
||||
|
||||
|
||||
from django.shortcuts import get_object_or_404
|
||||
from rest_framework import viewsets
|
||||
from rest_framework import viewsets, generics
|
||||
from rest_framework.views import Response
|
||||
|
||||
from .hands import IsSuperUser
|
||||
from .models import Task, AdHoc, AdHocRunHistory
|
||||
from .serializers import TaskSerializer, AdHocSerializer, AdHocRunHistorySerializer
|
||||
from .tasks import run_ansible_task
|
||||
|
||||
|
||||
class TaskViewSet(viewsets.ModelViewSet):
|
||||
@@ -15,6 +17,17 @@ class TaskViewSet(viewsets.ModelViewSet):
|
||||
permission_classes = (IsSuperUser,)
|
||||
|
||||
|
||||
class TaskRun(generics.RetrieveAPIView):
|
||||
queryset = Task.objects.all()
|
||||
serializer_class = TaskViewSet
|
||||
permission_classes = (IsSuperUser,)
|
||||
|
||||
def retrieve(self, request, *args, **kwargs):
|
||||
task = self.get_object()
|
||||
run_ansible_task.delay(str(task.id))
|
||||
return Response({"msg": "start"})
|
||||
|
||||
|
||||
class AdHocViewSet(viewsets.ModelViewSet):
|
||||
queryset = AdHoc.objects.all()
|
||||
serializer_class = AdHocSerializer
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
<td>
|
||||
<b>
|
||||
{% for task in object.latest_adhoc.tasks %}
|
||||
{{ forloop.counter }}. {{ task.name }} : {{ task.action.module }} <br/>
|
||||
{{ forloop.counter }}. {{ task.name }} ::: {{ task.action.module }} <br/>
|
||||
{% endfor %}
|
||||
</b>
|
||||
</td>
|
||||
|
||||
@@ -67,6 +67,7 @@
|
||||
{% endif %}
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<a data-uid="{{ object.id }}" class="btn btn-xs btn-primary btn-run">{% trans "Run" %}</a>
|
||||
<a data-uid="{{ object.id }}" class="btn btn-xs btn-danger btn-del">{% trans "Delete" %}</a>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -98,10 +99,32 @@ $(document).ready(function() {
|
||||
|
||||
}).on('click', '.btn-del', function () {
|
||||
var $this = $(this);
|
||||
var name = $(this).closest("tr").find(":nth-child(2)").children('a').html();
|
||||
var name = $this.closest("tr").find(":nth-child(2)").children('a').html();
|
||||
var uid = $this.data('uid');
|
||||
var the_url = '{% url "api-ops:task-detail" pk=DEFAULT_PK %}'.replace('{{ DEFAULT_PK }}', uid);
|
||||
objectDelete($this, name, the_url);
|
||||
}).on('click', '.btn-run', function () {
|
||||
var $this = $(this);
|
||||
var name = $this.closest("tr").find(":nth-child(2)").children('a').html();
|
||||
var uid = $this.data('uid');
|
||||
var the_url = '{% url "api-ops:task-run" pk=DEFAULT_PK %}'.replace('{{ DEFAULT_PK }}', uid);
|
||||
var error = function (data) {
|
||||
alert(data)
|
||||
};
|
||||
var success = function () {
|
||||
setTimeout(function () {
|
||||
console.log("ok")
|
||||
}, 1000);
|
||||
window.location = "{% url 'ops:task-detail' pk=DEFAULT_PK %}".replace('{{ DEFAULT_PK }}', uid);
|
||||
};
|
||||
APIUpdateAttr({
|
||||
url: the_url,
|
||||
error: error,
|
||||
method: 'GET',
|
||||
success: success,
|
||||
success_message: "{% trans 'Task start: ' %}" + " " + name
|
||||
});
|
||||
|
||||
})
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# ~*~ coding: utf-8 ~*~
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.conf.urls import url
|
||||
from rest_framework.routers import DefaultRouter
|
||||
from .. import api
|
||||
|
||||
@@ -12,6 +13,8 @@ router.register(r'v1/tasks', api.TaskViewSet, 'task')
|
||||
router.register(r'v1/adhoc', api.AdHocViewSet, 'adhoc')
|
||||
router.register(r'v1/history', api.AdHocRunHistorySet, 'history')
|
||||
|
||||
urlpatterns = []
|
||||
urlpatterns = [
|
||||
url(r'^v1/tasks/(?P<pk>[0-9a-zA-Z\-]{36})/run/$', api.TaskRun.as_view(), name='task-run'),
|
||||
]
|
||||
|
||||
urlpatterns += router.urls
|
||||
|
||||
Reference in New Issue
Block a user