Finish form ajax submmit

pull/530/head
ibuler 2016-12-30 22:21:50 +08:00
parent 301e02bcd8
commit 0907f5021e
13 changed files with 49 additions and 38 deletions

View File

View File

@ -38,14 +38,6 @@ class Terminal(models.Model):
self.save() self.save()
return user, access_key return user, access_key
@property
def is_superuser(self):
return False
@property
def is_terminal(self):
return True
def __unicode__(self): def __unicode__(self):
active = 'Active' if self.user and self.user.is_active else 'Disabled' active = 'Active' if self.user and self.user.is_active else 'Disabled'
return '%s: %s' % (self.name, active) return '%s: %s' % (self.name, active)

View File

@ -91,6 +91,18 @@ $(document).ready(function(){
}; };
jumpserver.initDataTable(options); jumpserver.initDataTable(options);
$('#btn_terminal_accept').click(function () {
var $form = $('#form_terminal_accept');
function success(data, textStatus, jqXHR) {
if (data.success === true) {
window.location.reload()
} else {
$('#modal-error').html(data.msg).css('display', 'block');
}
}
$form.ajaxSubmit({success: success});
})
}).on('click', '.btn_delete', function(){ }).on('click', '.btn_delete', function(){
var $this = $(this); var $this = $(this);
var uid = $this.data('uid'); var uid = $this.data('uid');
@ -119,16 +131,6 @@ $(document).ready(function(){
$('#modal_terminal_accept').modal({ $('#modal_terminal_accept').modal({
show: true show: true
}); });
}).on('click', '#btn_terminal_accept', function () {
var $form = $('#form_terminal_accept');
function success (data, textStatus, jqXHR) {
if (data.success === true) {
window.location.reload()
} else {
$('#modal-error').html(data.msg).css('display', 'block');
}
}
$form.ajaxSubmit({success: success});
}) })
</script> </script>
{% endblock %} {% endblock %}

View File

@ -5,7 +5,7 @@
{% block modal_title%}{% trans "Accept terminal registration" %}{% endblock %} {% block modal_title%}{% trans "Accept terminal registration" %}{% endblock %}
{% block modal_body %} {% block modal_body %}
{% load bootstrap %} {% load bootstrap %}
<form action="{% url 'applications:terminal-modal-accept' pk="99991937" %}" method="post" class="form-horizontal" id="form_terminal_accept"> <form action="{% url 'applications:terminal-modal-accept' pk="99991937" %}" method="post" class="form-horizontal" id="form_terminal_accept" enctype="multipart/form-data">
{% csrf_token %} {% csrf_token %}
<p class="alert alert-danger" id="modal-error" style="display: none"></p> <p class="alert alert-danger" id="modal-error" style="display: none"></p>
{{ form.name|bootstrap_horizontal }} {{ form.name|bootstrap_horizontal }}

View File

@ -0,0 +1,5 @@
<form action="" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit">
</form>

View File

@ -18,4 +18,4 @@ urlpatterns = [
# url(r'^v1/terminal/heatbeat/$', api.TestHeatbeat.as_view()) # url(r'^v1/terminal/heatbeat/$', api.TestHeatbeat.as_view())
] ]
urlpatterns += router.urls urlpatterns += router.urls

View File

@ -45,9 +45,10 @@ class TerminalDeleteView(DeleteView):
success_url = reverse_lazy('applications:applications-list') success_url = reverse_lazy('applications:applications-list')
class TerminalModelAccept(AdminUserRequiredMixin, JSONResponseMixin, BaseUpdateView): class TerminalModelAccept(AdminUserRequiredMixin, JSONResponseMixin, UpdateView):
model = Terminal model = Terminal
form_class = TerminalForm form_class = TerminalForm
template_name = 'applications/terminal_modal_test.html'
def post(self, request, *args, **kwargs): def post(self, request, *args, **kwargs):
print(request.POST) print(request.POST)

View File

@ -3,11 +3,22 @@
from __future__ import absolute_import, unicode_literals from __future__ import absolute_import, unicode_literals
from rest_framework import generics, viewsets from rest_framework import generics, viewsets
from rest_framework.views import APIView, Response from rest_framework.views import APIView, Response
from . import models, serializers from . import models, serializers
from .hands import IsSuperUserOrAppUser, Terminal from .hands import IsSuperUserOrAppUser, Terminal, IsAppUser
class ProxyLogReceiveView(generics.CreateAPIView):
queryset = models.ProxyLog.objects.all()
serializer_class = serializers.ProxyLogSerializer
permission_classes = (IsAppUser,)
def get_serializer(self, *args, **kwargs):
kwargs['data']['terminal'] = self.request.user.terminal.name
return super(ProxyLogReceiveView, self).get_serializer(*args, **kwargs)
class ProxyLogViewSet(viewsets.ModelViewSet): class ProxyLogViewSet(viewsets.ModelViewSet):
@ -18,7 +29,7 @@ class ProxyLogViewSet(viewsets.ModelViewSet):
"name": "", "name": "",
"hostname": "", "hostname": "",
"ip": "", "ip": "",
"applications", "", "terminal": "",
"login_type": "", "login_type": "",
"system_user": "", "system_user": "",
"was_failed": "", "was_failed": "",

View File

@ -4,5 +4,5 @@
from users.utils import AdminUserRequiredMixin from users.utils import AdminUserRequiredMixin
from users.models import User from users.models import User
from assets.models import Asset, SystemUser from assets.models import Asset, SystemUser
from users.permissions import IsSuperUserOrAppUser from users.permissions import IsSuperUserOrAppUser, IsAppUser
from applications.models import Terminal from applications.models import Terminal

View File

@ -45,7 +45,7 @@ class ProxyLog(models.Model):
log_file = models.CharField(max_length=1000, blank=True, null=True) log_file = models.CharField(max_length=1000, blank=True, null=True)
was_failed = models.BooleanField(default=False, verbose_name=_('Did connect failed')) was_failed = models.BooleanField(default=False, verbose_name=_('Did connect failed'))
is_finished = models.BooleanField(default=False, verbose_name=_('Is finished')) is_finished = models.BooleanField(default=False, verbose_name=_('Is finished'))
date_start = models.DateTimeField(verbose_name=_('Date start')) date_start = models.DateTimeField(auto_created=True, verbose_name=_('Date start'))
date_finished = models.DateTimeField(null=True, verbose_name=_('Date finished')) date_finished = models.DateTimeField(null=True, verbose_name=_('Date finished'))
def __unicode__(self): def __unicode__(self):
@ -54,16 +54,14 @@ class ProxyLog(models.Model):
@property @property
def commands_dict(self): def commands_dict(self):
commands = self.command_log.all() commands = self.command_log.all()
return [ return [{
{ "command_no": command.command_no,
"command_no": command.command_no, "command": command.command,
"command": command.command, "output": command.output_decode,
"output": command.output_decode, "datetime": command.datetime,
"datetime": command.datetime,
} for command in commands] } for command in commands]
class Meta: class Meta:
db_table = 'proxy_log'
ordering = ['-date_start', 'username'] ordering = ['-date_start', 'username']

View File

@ -13,7 +13,7 @@ class ProxyLogSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = models.ProxyLog model = models.ProxyLog
fields = ['id', 'name', 'username', 'hostname', 'ip', 'system_user', 'login_type', 'applications', fields = ['id', 'name', 'username', 'hostname', 'ip', 'system_user', 'login_type', 'terminal',
'log_file', 'was_failed', 'is_finished', 'date_start', 'date_finished', 'time', 'log_file', 'was_failed', 'is_finished', 'date_start', 'date_finished', 'time',
'command_length', "commands_dict"] 'command_length', "commands_dict"]

View File

@ -5,10 +5,12 @@ from .. import api
app_name = 'audits' app_name = 'audits'
router = routers.DefaultRouter() router = routers.DefaultRouter()
router.register(r'v1/proxy-log/', api.ProxyLogViewSet, 'proxy-log') router.register(r'v1/proxy-log', api.ProxyLogViewSet, 'proxy-log')
router.register(r'v1/command-log/', api.CommandLogViewSet, 'command-log') router.register(r'v1/command-log', api.CommandLogViewSet, 'command-log')
urlpatterns = router.urls urlpatterns = [
url(r'^v1/proxy-log/receive/$', api.ProxyLogReceiveView.as_view(), name='proxy-log-receive'),
]
urlpatterns += router.urls

View File

@ -2,7 +2,7 @@ Django==1.10
django-bootstrap-form==3.2.1 django-bootstrap-form==3.2.1
logging==0.4.9.6 logging==0.4.9.6
Pillow==3.3.1 Pillow==3.3.1
djangorestframework==3.4.5 djangorestframework==3.5.3
ForgeryPy==0.1 ForgeryPy==0.1
openpyxl==2.4.0 openpyxl==2.4.0
celery==3.1.23 celery==3.1.23