diff --git a/apps/applications/api.py b/apps/applications/api.py
index 9cc75ca8a26a45263359ae81ceca30aed8f75e4a..75487bbba311bbf7024d111517341d430b481008 100644
--- a/apps/applications/api.py
+++ b/apps/applications/api.py
@@ -6,7 +6,7 @@ from django.core.cache import cache
from django.conf import settings
from django.utils import timezone
import copy
-from rest_framework.generics import ListCreateAPIView, RetrieveUpdateDestroyAPIView
+from rest_framework.generics import ListCreateAPIView
from rest_framework import viewsets
from rest_framework.views import APIView, Response
from rest_framework.permissions import AllowAny
@@ -15,7 +15,8 @@ from rest_framework.decorators import api_view
from .models import Terminal, TerminalHeatbeat
from .serializers import TerminalSerializer, TerminalHeatbeatSerializer
-from .hands import IsSuperUserOrAppUser, IsAppUser, User, ProxyLog
+from .hands import IsSuperUserOrAppUser, IsAppUser, ProxyLog, \
+ IsSuperUserOrAppUserOrUserReadonly
from common.utils import get_object_or_none
@@ -55,7 +56,7 @@ class TerminalRegisterView(ListCreateAPIView):
class TerminalViewSet(viewsets.ModelViewSet):
queryset = Terminal.objects.all()
serializer_class = TerminalSerializer
- permission_classes = (IsSuperUserOrAppUser,)
+ permission_classes = (IsSuperUserOrAppUserOrUserReadonly,)
def create(self, request, *args, **kwargs):
return Response({'msg': 'Use register view except that'}, status=404)
@@ -102,5 +103,4 @@ class TerminateConnectionView(APIView):
tasks[terminal_id] = [{'name': 'kill_proxy',
'proxy_log_id': proxy_log_id}]
- print(tasks)
return Response({'msg': 'get it'})
diff --git a/apps/applications/hands.py b/apps/applications/hands.py
index cf5b643dac558f376650bc52474d6e399d6015d4..23a93691d73a86acdd7377027fe8250c1fbb0858 100644
--- a/apps/applications/hands.py
+++ b/apps/applications/hands.py
@@ -2,5 +2,7 @@
#
from users.models import User
-from users.permissions import IsSuperUserOrAppUser, IsAppUser
-from audits.models import ProxyLog
\ No newline at end of file
+from users.permissions import IsSuperUserOrAppUser, IsAppUser, \
+ IsSuperUserOrAppUserOrUserReadonly
+from audits.models import ProxyLog
+from users.utils import AdminUserRequiredMixin
\ No newline at end of file
diff --git a/apps/applications/templates/applications/terminal_list.html b/apps/applications/templates/applications/terminal_list.html
index 9574d72d5a2f4ad492b06af2e20a629906c00d78..b6cb70635316e334f8958f1353f6bf20d20ac120 100644
--- a/apps/applications/templates/applications/terminal_list.html
+++ b/apps/applications/templates/applications/terminal_list.html
@@ -68,19 +68,20 @@ $(document).ready(function(){
}
}},
{targets: 7, createdCell: function (td, cellData, rowData) {
- console.log(rowData.name);
var update_btn = '{% trans "Update" %}'
.replace('99991937', cellData);
- var delete_btn = '{% trans "Delete" %}'
+ var delete_btn = '{% trans "Delete" %}'
.replace('99991937', cellData)
.replace('99991938', rowData.name);
var accept_btn = '{% trans "Accept" %} '
.replace('99991937', cellData);
- var reject_btn = '{% trans "Reject" %}'
+ var reject_btn = '{% trans "Reject" %}'
.replace('99991937', cellData)
.replace('99991938', rowData.name);
+ var connect_btn = '{% trans "Connect" %} '
+ .replace('99991937', cellData);
if (rowData.is_accepted) {
- $(td).html(update_btn + delete_btn)
+ $(td).html(connect_btn + update_btn + delete_btn)
} else {
$(td).html(accept_btn + reject_btn)
}
@@ -105,11 +106,11 @@ $(document).ready(function(){
$form.ajaxSubmit({success: success});
})
-}).on('click', '.btn_delete', function(){
+}).on('click', '.btn-del', function(){
var $this = $(this);
- var uid = $this.data('uid');
+ var id = $this.data('id');
var name = $(this).data('name');
- var the_url = '{% url "api-applications:terminal-detail" pk=99991937 %}'.replace('99991937', uid);
+ var the_url = '{% url "api-applications:terminal-detail" pk=99991937 %}'.replace('99991937', id);
objectDelete($this, name, the_url)
}).on('click', '.btn-accept', function () {
@@ -133,6 +134,10 @@ $(document).ready(function(){
$('#modal_terminal_accept').modal({
show: true
});
+}).on('click', '.btn-connect', function () {
+ var $this = $(this);
+ var id = $this.data('id');
+ console.log(id)
})
{% endblock %}
diff --git a/apps/applications/urls/views_urls.py b/apps/applications/urls/views_urls.py
index 717234aa30da0552deaafb7213e4d443930285f9..4f7dcdb910c182c8b0bebc003321d8d9b5838dae 100644
--- a/apps/applications/urls/views_urls.py
+++ b/apps/applications/urls/views_urls.py
@@ -9,9 +9,11 @@ from .. import views
app_name = 'applications'
urlpatterns = [
- url(r'^terminal$', views.TerminalListView.as_view(), name='terminal-list'),
+ url(r'^terminal/$', views.TerminalListView.as_view(), name='terminal-list'),
url(r'^terminal/(?P
'
+ '{}'.format(self.object.name, self.object.url)),
+ }
+
+ kwargs.update(context)
+ return super(TerminalConnectView, self).get_context_data(**kwargs)
diff --git a/apps/assets/hands.py b/apps/assets/hands.py
index 61d432db2591eae56ac7207084a27045d4a48e54..a504019e5458f1d52eab76c301dc388435eafed6 100644
--- a/apps/assets/hands.py
+++ b/apps/assets/hands.py
@@ -6,7 +6,7 @@
Other module of this app shouldn't connect with other app.
- :copyright: (c) 2014-2016 by Jumpserver Team.
+ :copyright: (c) 2014-2017 by Jumpserver Team.
:license: GPL v2, see LICENSE for more details.
"""
diff --git a/apps/assets/templates/assets/asset_detail.html b/apps/assets/templates/assets/asset_detail.html
index 9878e1f0dcd9b40d6b7229ac2ff878af0616ce41..ee75e3e986e9304b6ac7b81a9e4baf4287356bd8 100644
--- a/apps/assets/templates/assets/asset_detail.html
+++ b/apps/assets/templates/assets/asset_detail.html
@@ -16,11 +16,13 @@