Commit 0336bfa9 authored by guanghongwei's avatar guanghongwei

group_addʹajax

parent 7adbf52a
...@@ -259,6 +259,7 @@ def verify_connect(username, part_ip): ...@@ -259,6 +259,7 @@ def verify_connect(username, part_ip):
color_print('No Permission or No host.', 'red') color_print('No Permission or No host.', 'red')
else: else:
username, password, host, port = get_connect_item(username, ip_matched[0]) username, password, host, port = get_connect_item(username, ip_matched[0])
print username, password, host, port
connect(username, password, host, port, LOGIN_NAME) connect(username, password, host, port, LOGIN_NAME)
......
...@@ -33,7 +33,7 @@ def get_role(user_id): ...@@ -33,7 +33,7 @@ def get_role(user_id):
def groups_str(username): def groups_str(username):
groups = [] groups = []
user = User.objects.get(username=username) user = User.objects.get(username=username)
for group in user.user_group.filter(Q(type='A') | Q(type='M')): for group in user.user_group.filter(type='A'):
groups.append(group.name) groups.append(group.name)
if len(groups) < 4: if len(groups) < 4:
return ' '.join(groups) return ' '.join(groups)
...@@ -41,6 +41,16 @@ def groups_str(username): ...@@ -41,6 +41,16 @@ def groups_str(username):
return "%s ..." % ' '.join(groups[0:3]) return "%s ..." % ' '.join(groups[0:3])
@register.filter(name='group_manage_str')
def group_manage_str(username):
user = User.objects.get(username=username)
group = user.user_group.filter(type='M')
if group:
return group[0].name
else:
return ''
@register.filter(name='get_item') @register.filter(name='get_item')
def get_item(dictionary, key): def get_item(dictionary, key):
return dictionary.get(key) return dictionary.get(key)
...@@ -70,8 +80,8 @@ def perm_count(group_id): ...@@ -70,8 +80,8 @@ def perm_count(group_id):
def group_type_to_str(type_name): def group_type_to_str(type_name):
group_types = { group_types = {
'P': '私有组', 'P': '私有组',
'M': '管理组', 'M': '部门',
'A': '授权组', 'A': '用户组',
} }
return group_types.get(type_name) return group_types.get(type_name)
......
...@@ -14,4 +14,5 @@ urlpatterns = patterns('', ...@@ -14,4 +14,5 @@ urlpatterns = patterns('',
(r'^jasset/', include('jasset.urls')), (r'^jasset/', include('jasset.urls')),
(r'^jlog/', include('jlog.urls')), (r'^jlog/', include('jlog.urls')),
(r'^jperm/', include('jperm.urls')), (r'^jperm/', include('jperm.urls')),
) )
...@@ -9,6 +9,7 @@ urlpatterns = patterns('juser.views', ...@@ -9,6 +9,7 @@ urlpatterns = patterns('juser.views',
(r'^user_add/$', 'user_add'), (r'^user_add/$', 'user_add'),
(r'^user_list/$', 'user_list'), (r'^user_list/$', 'user_list'),
(r'^group_add/$', 'group_add'), (r'^group_add/$', 'group_add'),
(r'^group_add_ajax/$', 'group_add_ajax'),
(r'^group_list/$', 'group_list'), (r'^group_list/$', 'group_list'),
(r'^user_detail/$', 'user_detail'), (r'^user_detail/$', 'user_detail'),
(r'^user_del/$', 'user_del'), (r'^user_del/$', 'user_del'),
......
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
import time import time
import os import os
import hashlib
import random import random
import subprocess import subprocess
import ldap import ldap
...@@ -17,12 +16,14 @@ from django.shortcuts import render_to_response ...@@ -17,12 +16,14 @@ from django.shortcuts import render_to_response
from django.core.exceptions import ObjectDoesNotExist from django.core.exceptions import ObjectDoesNotExist
from django.db.models import Q from django.db.models import Q
from django.http import HttpResponse from django.http import HttpResponse
from django.core.paginator import Paginator, EmptyPage, InvalidPage
from juser.models import UserGroup, User from juser.models import UserGroup, User
from connect import PyCrypt, KEY from connect import PyCrypt, KEY
from connect import BASE_DIR from connect import BASE_DIR
from connect import CONF from connect import CONF
from django.core.paginator import Paginator, EmptyPage, InvalidPage from jumpserver.views import md5_crypt
CRYPTOR = PyCrypt(KEY) CRYPTOR = PyCrypt(KEY)
LDAP_ENABLE = CONF.getint('ldap', 'ldap_enable') LDAP_ENABLE = CONF.getint('ldap', 'ldap_enable')
...@@ -253,16 +254,22 @@ def ldap_del_user(username): ...@@ -253,16 +254,22 @@ def ldap_del_user(username):
ldap_conn.delete(sudo_dn) ldap_conn.delete(sudo_dn)
def group_add(request): def group_add(request, group_type_select='A'):
error = '' error = ''
msg = '' msg = ''
header_title, path1, path2 = '添加属组 | Add Group', 'juser', 'group_add' header_title, path1, path2 = '添加属组 | Add Group', 'juser', 'group_add'
group_types = { group_types = {
# 'P': '私有组', # 'P': '私有组',
'M': '管理组', 'M': '部门',
'A': '授权组', 'A': '用户组',
} }
users = User.objects.all()
users_all = User.objects.all()
if group_type_select == 'M':
users = [user for user in users_all if not user.user_group.filter(type='M')]
else:
users = users_all
if request.method == 'POST': if request.method == 'POST':
group_name = request.POST.get('group_name', '') group_name = request.POST.get('group_name', '')
group_type = request.POST.get('group_type', 'A') group_type = request.POST.get('group_type', 'A')
...@@ -287,9 +294,20 @@ def group_add(request): ...@@ -287,9 +294,20 @@ def group_add(request):
return render_to_response('juser/group_add.html', locals()) return render_to_response('juser/group_add.html', locals())
def group_add_ajax(request):
group_type = request.POST.get('type', 'A')
users_all = User.objects.all()
if group_type == 'A':
users = users_all
else:
users = [user for user in users_all if not user.user_group.filter(type='M')]
return render_to_response('juser/group_add_ajax.html', locals())
def group_list(request): def group_list(request):
header_title, path1, path2 = '查看属组 | Show Group', 'juser', 'group_list' header_title, path1, path2 = '查看属组 | Show Group', 'juser', 'group_list'
groups = contact_list = UserGroup.objects.filter(Q(type='M') | Q(type='A')).order_by('id') groups = contact_list = UserGroup.objects.filter(Q(type='M') | Q(type='A')).order_by('type')
p = paginator = Paginator(contact_list, 10) p = paginator = Paginator(contact_list, 10)
try: try:
...@@ -328,8 +346,8 @@ def group_edit(request): ...@@ -328,8 +346,8 @@ def group_edit(request):
header_title, path1, path2 = '修改属组 | Edit Group', 'juser', 'group_edit' header_title, path1, path2 = '修改属组 | Edit Group', 'juser', 'group_edit'
group_types = { group_types = {
# 'P': '私有组', # 'P': '私有组',
'M': '管理组', 'M': '部门',
'A': '授权组', 'A': '用户组',
} }
if request.method == 'GET': if request.method == 'GET':
group_id = request.GET.get('id', None) group_id = request.GET.get('id', None)
...@@ -341,7 +359,7 @@ def group_edit(request): ...@@ -341,7 +359,7 @@ def group_edit(request):
users_selected = group.user_set.all() users_selected = group.user_set.all()
users = [user for user in users_all if user not in users_selected] users = [user for user in users_all if user not in users_selected]
return render_to_response('juser/group_add.html', locals()) return render_to_response('juser/group_edit.html', locals())
else: else:
group_id = request.POST.get('group_id', None) group_id = request.POST.get('group_id', None)
group_name = request.POST.get('group_name', None) group_name = request.POST.get('group_name', None)
...@@ -407,9 +425,10 @@ def user_edit(request): ...@@ -407,9 +425,10 @@ def user_edit(request):
password = user.password password = user.password
ssh_key_pwd = user.ssh_key_pwd ssh_key_pwd = user.ssh_key_pwd
name = user.name name = user.name
all_group = UserGroup.objects.filter(Q(type='M') | Q(type='A')) manage_groups = UserGroup.objects.filter(type='M')
groups = user.user_group.filter(Q(type='M') | Q(type='A')) auth_groups = UserGroup.objects.filter(type='A')
groups_str = ' '.join([str(group.id) for group in groups]) manage_group_id = user.user_group.get(type='M').id
groups_str = ' '.join([str(group.id) for group in auth_groups])
user_role = {'SU': u'超级管理员', 'GA': u'组管理员', 'CU': u'普通用户'} user_role = {'SU': u'超级管理员', 'GA': u'组管理员', 'CU': u'普通用户'}
role_post = user.role role_post = user.role
ssh_pwd = user.ssh_pwd ssh_pwd = user.ssh_pwd
...@@ -420,8 +439,11 @@ def user_edit(request): ...@@ -420,8 +439,11 @@ def user_edit(request):
password = request.POST.get('password', None) password = request.POST.get('password', None)
name = request.POST.get('name', None) name = request.POST.get('name', None)
email = request.POST.get('email', '') email = request.POST.get('email', '')
groups = request.POST.getlist('groups', None) manage_group_id = request.POST.get('manage_group', '')
groups_str = ' '.join(groups) auth_groups = request.POST.getlist('groups', None)
groups = auth_groups
groups.append(manage_group_id)
groups_str = ' '.join(auth_groups)
role_post = request.POST.get('role', None) role_post = request.POST.get('role', None)
ssh_pwd = request.POST.get('ssh_pwd', None) ssh_pwd = request.POST.get('ssh_pwd', None)
ssh_key_pwd = request.POST.get('ssh_key_pwd', None) ssh_key_pwd = request.POST.get('ssh_key_pwd', None)
...@@ -464,14 +486,18 @@ def user_add(request): ...@@ -464,14 +486,18 @@ def user_add(request):
msg = '' msg = ''
header_title, path1, path2 = '添加用户 | Add User', 'juser', 'user_add' header_title, path1, path2 = '添加用户 | Add User', 'juser', 'user_add'
user_role = {'SU': u'超级管理员', 'GA': u'组管理员', 'CU': u'普通用户'} user_role = {'SU': u'超级管理员', 'GA': u'组管理员', 'CU': u'普通用户'}
all_group = UserGroup.objects.filter(Q(type='M') | Q(type='A')).order_by('-type') manage_groups = UserGroup.objects.filter(type='M')
auth_groups = UserGroup.objects.filter(type='A')
if request.method == 'POST': if request.method == 'POST':
username = request.POST.get('username', None) username = request.POST.get('username', None)
password = request.POST.get('password', '') password = request.POST.get('password', '')
name = request.POST.get('name', None) name = request.POST.get('name', None)
email = request.POST.get('email', '') email = request.POST.get('email', '')
groups = request.POST.getlist('groups', None) manage_group_id = request.POST.get('manage_group')
groups_str = ' '.join(groups) auth_groups = request.POST.getlist('groups', None)
groups = auth_groups
groups.append(manage_group_id)
groups_str = ' '.join(auth_groups)
role_post = request.POST.get('role', 'CU') role_post = request.POST.get('role', 'CU')
ssh_pwd = request.POST.get('ssh_pwd', '') ssh_pwd = request.POST.get('ssh_pwd', '')
ssh_key_pwd = request.POST.get('ssh_key_pwd', '') ssh_key_pwd = request.POST.get('ssh_key_pwd', '')
......
<!-- Mainly scripts --> <!-- Mainly scripts -->
<script src="/static/js/jquery-2.1.1.js"></script>
<script src="/static/js/bootstrap.min.js"></script>
<script src="/static/js/plugins/metisMenu/jquery.metisMenu.js"></script> <script src="/static/js/plugins/metisMenu/jquery.metisMenu.js"></script>
<script src="/static/js/plugins/slimscroll/jquery.slimscroll.min.js"></script> <script src="/static/js/plugins/slimscroll/jquery.slimscroll.min.js"></script>
<script src="/static/js/bootstrap-dialog.js"></script> <script src="/static/js/bootstrap-dialog.js"></script>
...@@ -18,6 +19,10 @@ ...@@ -18,6 +19,10 @@
<!-- Peity --> <!-- Peity -->
<script src="/static/js/demo/peity-demo.js"></script> <script src="/static/js/demo/peity-demo.js"></script>
<script src="/static/js/base.js"></script>
<!-- active menu --> <!-- active menu -->
<script> <script>
var str = document.location.pathname.split("/")[1]; var str = document.location.pathname.split("/")[1];
......
<script src="/static/js/jquery-2.1.1.js"></script> <script src="/static/js/jquery-2.1.1.js"></script>
<script src="/static/js/bootstrap.min.js"></script> <script src="/static/js/bootstrap.min.js"></script>
<script src="/static/js/base.js"></script>
<script> <script>
$(document).ready(function(){
$('.i-checks').iCheck({
checkboxClass: 'icheckbox_square-green',
radioClass: 'iradio_square-green'
});
});
function selectAll(){ function selectAll(){
var checklist = document.getElementsByName ("selected"); var checklist = document.getElementsByName ("selected");
...@@ -43,12 +37,12 @@ ...@@ -43,12 +37,12 @@
</script> </script>
<!-- validator js -->
<script src="/static/js/validator/jquery.validator.js"></script>
<script src="/static/js/validator/zh_CN.js"></script>
<!-- pop windows --> <!-- pop windows -->
<script src="/static/js/jquery.colorbox.js"></script> <script src="/static/js/jquery.colorbox.js"></script>
<!-- validator js -->
<script src="/static/js/validator/jquery.validator.js"></script>
<script src="/static/js/validator/zh_CN.js"></script>
...@@ -34,12 +34,6 @@ ...@@ -34,12 +34,6 @@
{% if msg %} {% if msg %}
<div class="alert alert-success text-center">{{ msg }}</div> <div class="alert alert-success text-center">{{ msg }}</div>
{% endif %} {% endif %}
<div class="form-group hidden">
<label for="group_id" class="col-sm-2 control-label">ID<span class="red-fonts">*</span></label>
<div class="col-sm-8">
<input id="group_id" name="group_id" placeholder="Group name" type="text" class="form-control" value="{{ group_id }}">
</div>
</div>
<div class="form-group"> <div class="form-group">
<label for="group_name" class="col-sm-2 control-label">组名<span class="red-fonts">*</span></label> <label for="group_name" class="col-sm-2 control-label">组名<span class="red-fonts">*</span></label>
<div class="col-sm-8"> <div class="col-sm-8">
...@@ -50,9 +44,9 @@ ...@@ -50,9 +44,9 @@
<div class="form-group"> <div class="form-group">
<label for="group_type" class="col-sm-2 control-label">类型<span class="red-fonts">*</span></label> <label for="group_type" class="col-sm-2 control-label">类型<span class="red-fonts">*</span></label>
<div class="col-sm-8"> <div class="col-sm-8">
<select id="group_type" name="group_type" class="form-control m-b"> <select id="group_type" name="group_type" class="form-control m-b" onchange="change_type(this.value)">
{% for t, type_name in group_types.items %} {% for t, type_name in group_types.items %}
{% ifequal t group_type %} {% ifequal t group_type_select %}
<option value="{{ t }}" selected>{{ type_name }}</option> <option value="{{ t }}" selected>{{ type_name }}</option>
{% else %} {% else %}
<option value="{{ t }}">{{ type_name }}</option> <option value="{{ t }}">{{ type_name }}</option>
...@@ -63,7 +57,7 @@ ...@@ -63,7 +57,7 @@
</div> </div>
<div class="hr-line-dashed"></div> <div class="hr-line-dashed"></div>
<div class="form-group"> <div class="form-group">
<label for="groups" class="col-lg-2 control-label">用户</label> <label for="users" class="col-lg-2 control-label">用户</label>
<div class="col-sm-3"> <div class="col-sm-3">
<select id="users" name="users" size="12" class="form-control m-b" multiple> <select id="users" name="users" size="12" class="form-control m-b" multiple>
{% for user in users %} {% for user in users %}
...@@ -80,9 +74,6 @@ ...@@ -80,9 +74,6 @@
<div class="col-sm-3"> <div class="col-sm-3">
<div> <div>
<select id="users_selected" name="users_selected" class="form-control m-b" size="12" multiple> <select id="users_selected" name="users_selected" class="form-control m-b" size="12" multiple>
{% for user in users_selected %}
<option value="{{ user.id }}">{{ user.name }}</option>
{% endfor %}
</select> </select>
</div> </div>
</div> </div>
...@@ -98,8 +89,8 @@ ...@@ -98,8 +89,8 @@
<div class="hr-line-dashed"></div> <div class="hr-line-dashed"></div>
<div class="form-group"> <div class="form-group">
<div class="col-sm-4 col-sm-offset-2"> <div class="col-sm-4 col-sm-offset-2">
<button class="btn btn-white" type="submit">取消</button> <button class="btn btn-white" type="reset">取消</button>
<button class="btn btn-primary" type="submit" onclick="javascript: (function(){$('#users_selected option').each(function(){$(this).prop('selected', true)})})()">确认保存</button> <button id="submit_button" class="btn btn-primary" type="submit">确认保存</button>
</div> </div>
</div> </div>
</form> </form>
...@@ -131,5 +122,23 @@ $('#groupForm').validator({ ...@@ -131,5 +122,23 @@ $('#groupForm').validator({
form.submit(); form.submit();
} }
}); });
function change_type(type){
$.post('/juser/group_add_ajax/',
{'type': type},
function(data){
$('#users').html(data)
})
}
$(document).ready(function(){
$("#submit_button").click(function(){
$('#users_selected option').each(function(){
$(this).prop('selected', true)
})
})
})
</script> </script>
{% endblock %} {% endblock %}
\ No newline at end of file
{% for user in users %}
<option value="{{ user.id }}">{{ user.name }}</option>
{% endfor %}
{% extends 'base.html' %}
{% load mytags %}
{% block content %}
{% include 'nav_cat_bar.html' %}
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-lg-10">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5>填写基本信息 <small> Fill group info.</small></h5>
<div class="ibox-tools">
<a class="collapse-link">
<i class="fa fa-chevron-up"></i>
</a>
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
<i class="fa fa-wrench"></i>
</a>
<ul class="dropdown-menu dropdown-user">
<li><a href="#">未启用 1</a>
</li>
<li><a href="#">未启用 2</a>
</li>
</ul>
<a class="close-link">
<i class="fa fa-times"></i>
</a>
</div>
</div>
<div class="ibox-content">
<form id="groupForm" method="post" class="form-horizontal" action="">
{% if error %}
<div class="alert alert-warning text-center">{{ error }}</div>
{% endif %}
{% if msg %}
<div class="alert alert-success text-center">{{ msg }}</div>
{% endif %}
<div class="form-group">
<label for="group_name" class="col-sm-2 control-label">组名<span class="red-fonts">*</span></label>
<div class="col-sm-8">
<input id="group_name" name="group_name" placeholder="Group name" type="text" class="form-control" value="{{ group_name }}">
<input id="group_id" name="group_id" type="text" class="form-control" value="{{ group.id }}" style="display: none">
</div>
</div>
<div class="hr-line-dashed"></div>
<div class="form-group">
<label for="group_type" class="col-sm-2 control-label">类型<span class="red-fonts">*</span></label>
<div class="col-sm-8">
<input class="form-control" value="{{ group_type|group_type_to_str }}" readonly>
<input name="group_type" class="form-control" id="group_type" value="{{ group_type }}" style="display: none">
</div>
</div>
<div class="hr-line-dashed"></div>
<div class="form-group">
<label for="users" class="col-lg-2 control-label">用户</label>
<div class="col-sm-3">
<select id="users" name="users" size="12" class="form-control m-b" multiple>
{% for user in users %}
<option value="{{ user.id }}">{{ user.name }}</option>
{% endfor %}
</select>
</div>
<div class="col-sm-1">
<div class="btn-group" style="margin-top: 50px;">
<button type="button" class="btn btn-white" onclick="move('users', 'users_selected')"><i class="fa fa-chevron-right"></i></button>
<button type="button" class="btn btn-white" onclick="move('users_selected', 'users')"><i class="fa fa-chevron-left"></i> </button>
</div>
</div>
<div class="col-sm-3">
<div>
<select id="users_selected" name="users_selected" class="form-control m-b" size="12" multiple>
{% for user in users_selected %}
<option value="{{ user.id }}">{{ user.name }}</option>
{% endfor %}
</select>
</div>
</div>
</div>
<div class="hr-line-dashed"></div>
<div class="form-group">
<label for="comment" class="col-sm-2 control-label">备注</label>
<div class="col-sm-8">
<input id="comment" name="comment" placeholder="Comment" type="text" class="form-control" value="{{ comment }}">
</div>
</div>
<div class="hr-line-dashed"></div>
<div class="form-group">
<div class="col-sm-4 col-sm-offset-2">
<button class="btn btn-white" type="reset">取消</button>
<button id="submit_button" class="btn btn-primary" type="submit">确认保存</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<script>
$('#groupForm').validator({
timely: 2,
theme: "yellow_right_effect",
fields: {
"group_name": {
rule: "required",
tip: "输入组名",
ok: "",
msg: {required: "必须填写!"}
},
"group_type": {
rule: "checked",
tip: "选择组类型",
ok: "",
msg: {required: "至少选择一个组!"}
}
},
valid: function(form) {
form.submit();
}
});
$(document).ready(function(){
$("#submit_button").click(function(){
$('#users_selected option').each(function(){
$(this).prop('selected', true)
})
})
})
</script>
{% endblock %}
\ No newline at end of file
...@@ -71,21 +71,36 @@ ...@@ -71,21 +71,36 @@
</div> </div>
<div class="hr-line-dashed"></div> <div class="hr-line-dashed"></div>
<div class="form-group"> <div class="form-group">
<label for="groups" class="col-lg-2 control-label">属组<span class="red-fonts">*</span></label> <label for="manage_group" class="col-lg-2 control-label">部门<span class="red-fonts">*</span></label>
<div class="col-sm-8"> <div class="col-sm-8">
<select id="groups" name="groups" class="form-control m-b" multiple size="10"> <select id="manage_group" name="manage_group" class="form-control m-b">
{% for group in all_group %} {% for group in manage_groups %}
{% ifequal group.id manage_group_id %}
<option value="{{ group.id }}" selected>{{ group.name }}</option>
{% else %}
<option value="{{ group.id }}">{{ group.name }}</option>
{% endifequal %}
{% endfor %}
</select>
</div>
</div>
<div class="hr-line-dashed"></div>
<div class="form-group">
<label for="groups" class="col-lg-2 control-label">用户组</label>
<div class="col-sm-8">
<select id="groups" name="groups" class="form-control m-b" multiple size="12">
{% for group in auth_groups %}
{% if groups_str %} {% if groups_str %}
{% if group.id|int2str in groups_str %} {% if group.id|int2str in groups_str %}
<option value="{{ group.id }}" selected>{{ group.name }} --- {{ group.type|group_type_to_str }}</option> <option value="{{ group.id }}" selected>{{ group.name }}</option>
{% else %} {% else %}
<option value="{{ group.id }}">{{ group.name }} --- {{ group.type|group_type_to_str }}</option> <option value="{{ group.id }}">{{ group.name }}</option>
{% endif %} {% endif %}
{% else %} {% else %}
{% if forloop.first %} {% if forloop.first %}
<option value="{{ group.id }}" selected>{{ group.name }} --- {{ group.type|group_type_to_str }}</option> <option value="{{ group.id }}" selected>{{ group.name }}</option>
{% else %} {% else %}
<option value="{{ group.id }}">{{ group.name }} --- {{ group.type|group_type_to_str }}</option> <option value="{{ group.id }}">{{ group.name }}</option>
{% endif %} {% endif %}
{% endif %} {% endif %}
{% endfor %} {% endfor %}
...@@ -179,11 +194,11 @@ $('#userForm').validator({ ...@@ -179,11 +194,11 @@ $('#userForm').validator({
ok: "", ok: "",
msg: {required: "必须填写"} msg: {required: "必须填写"}
}, },
"groups": { "manage_group": {
rule: "checked", rule: "checked",
tip: "选择用户组", tip: "选择部门",
ok: "", ok: "",
msg: {checked: "至少选择一个"} msg: {checked: "至少选择一个部门"}
}, },
"name": { "name": {
rule: "required", rule: "required",
......
...@@ -42,7 +42,8 @@ ...@@ -42,7 +42,8 @@
<th class="text-center">ID</th> <th class="text-center">ID</th>
<th class="text-center">用户名</th> <th class="text-center">用户名</th>
<th class="text-center">姓名</th> <th class="text-center">姓名</th>
<th class="text-center">属组</th> <th class="text-center">部门</th>
<th class="text-center">用户组</th>
<th class="text-center">角色</th> <th class="text-center">角色</th>
<th class="text-center">激活</th> <th class="text-center">激活</th>
<th class="text-center">操作</th> <th class="text-center">操作</th>
...@@ -57,6 +58,7 @@ ...@@ -57,6 +58,7 @@
<td class="text-center"> {{ user.id }} </td> <td class="text-center"> {{ user.id }} </td>
<td class="text-center"> {{ user.username }} </td> <td class="text-center"> {{ user.username }} </td>
<td class="text-center"> {{ user.name }} </td> <td class="text-center"> {{ user.name }} </td>
<td class="text-center"> {{ user.username|group_manage_str }} </td>
<td class="text-center"> {{ user.username|groups_str }}</td> <td class="text-center"> {{ user.username|groups_str }}</td>
<td class="text-center">{{ user.id|get_role }}</td> <td class="text-center">{{ user.id|get_role }}</td>
<td class="text-center">{{ user.is_active|bool2str }}</td> <td class="text-center">{{ user.is_active|bool2str }}</td>
......
<html>
<head>
<meta charset='utf8'>
<script src="http://cdn.bootcss.com/jquery/1.11.2/jquery.min.js"></script>
<style type="text/css">
.blue
{
color: blue;
}
</style>
{#<script>#}
{#$('html').ajaxSend(function(event, xhr, settings) {#}
{# function getCookie(name) {#}
{# var cookieValue = null;#}
{# if (document.cookie && document.cookie != '') {#}
{# var cookies = document.cookie.split(';');#}
{# for (var i = 0; i < cookies.length; i++) {#}
{# var cookie = jQuery.trim(cookies[i]);#}
{# // Does this cookie string begin with the name we want?#}
{# if (cookie.substring(0, name.length + 1) == (name + '=')) {#}
{# cookieValue = decodeURIComponent(cookie.substring(name.length + 1));#}
{# break;#}
{# }#}
{# }#}
{# }#}
{# return cookieValue;#}
{# }#}
{# if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) {#}
{# // Only send the token to relative URLs i.e. locally.#}
{# xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));#}
{# }#}
{#});#}
{#</script>#}
<script>
$(document).ready(function(){
$("#btn1").click(function(){
$("#test").text(function(i,origText){
return "Old text: " + origText + "New text: Hllo" + i
})
});
$("#btn2").click(function(){
$.post('/test_ajax/',
{'name': 'join', 'age': 10},
function(data, status){
$('#btn1').text(data)
})
});
$("#btn3").click(function(){
$("p").toggleClass('blue')
// $("p").addClass('blue')
// $("p").before("Some thine")
});
})
</script>
</head>
<body>
<p id="test" class="blue">
这是段落中的<b>粗体</b>文本。
<p><span>hello</span></p>
</p>
<!-- <input type="text" id="test2" name="nameaaaaaaaaaa" value="米老鼠"> -->
<button id="btn1">显示文本</button>
<button id="btn2">显示 HTML</button>
<button id="btn3">显示 value</button>
</body>
</html>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment