Commit fc007e96 authored by guanghongwei's avatar guanghongwei

޸ĺܶ

parent ad2a4d2d
...@@ -2,14 +2,17 @@ ...@@ -2,14 +2,17 @@
import django import django
import os import os
import sys import sys
import random
import datetime
sys.path.append('../') sys.path.append('../')
os.environ['DJANGO_SETTINGS_MODULE'] = 'jumpserver.settings' os.environ['DJANGO_SETTINGS_MODULE'] = 'jumpserver.settings'
django.setup() django.setup()
from juser.views import db_add_user, md5_crypt, CRYPTOR
from juser.views import db_add_user, md5_crypt, CRYPTOR, db_add_group
from jasset.models import Asset, IDC, BisGroup from jasset.models import Asset, IDC, BisGroup
from juser.models import UserGroup from juser.models import UserGroup, DEPT
from jasset.views import jasset_group_add from jasset.views import jasset_group_add
from jperm.models import CmdGroup from jperm.models import CmdGroup
...@@ -29,15 +32,18 @@ def test_add_asset_group(): ...@@ -29,15 +32,18 @@ def test_add_asset_group():
print 'Add: %s' % name print 'Add: %s' % name
def test_add_user_group(): def test_add_dept():
for i in range(1, 20): for i in range(1, 100):
name = 'DepartGroup' + str(i) name = 'DEPT' + str(i)
UserGroup.objects.create(name=name, type='M', comment=name) print "Add: %s" % name
print 'Add: %s' % name DEPT.objects.create(name=name, comment=name)
for i in range(1, 20):
def test_add_group():
dept_all = DEPT.objects.all()
for i in range(1, 100):
name = 'UserGroup' + str(i) name = 'UserGroup' + str(i)
UserGroup.objects.create(name=name, type='A', comment=name) UserGroup.objects.create(name=name, dept=random.choice(dept_all), comment=name)
print 'Add: %s' % name print 'Add: %s' % name
...@@ -52,15 +58,18 @@ def test_add_cmd_group(): ...@@ -52,15 +58,18 @@ def test_add_cmd_group():
def test_add_user(): def test_add_user():
for i in range(1, 500): for i in range(1, 500):
username = "test" + str(i) username = "test" + str(i)
dept_all = DEPT.objects.all()
group_all = UserGroup.objects.all()
group_all_id = [group.id for group in group_all]
db_add_user(username=username, db_add_user(username=username,
password=md5_crypt(username), password=md5_crypt(username),
dept=random.choice(dept_all),
name=username, email='%s@jumpserver.org' % username, name=username, email='%s@jumpserver.org' % username,
groups=[1,3], role='CU', groups=[random.choice(group_all_id) for i in range(1, 4)], role='CU',
ssh_pwd=CRYPTOR.encrypt(username),
ssh_key_pwd=CRYPTOR.encrypt(username), ssh_key_pwd=CRYPTOR.encrypt(username),
ldap_pwd=CRYPTOR.encrypt(username), ldap_pwd=CRYPTOR.encrypt(username),
is_active=True, is_active=True,
date_joined=0) date_joined=datetime.datetime.now())
print "Add: %s" % username print "Add: %s" % username
...@@ -73,11 +82,8 @@ def test_add_asset(): ...@@ -73,11 +82,8 @@ def test_add_asset():
if __name__ == '__main__': if __name__ == '__main__':
test_add_idc() #test_add_dept()
test_add_asset_group() #test_add_group()
test_add_user_group()
test_add_cmd_group()
test_add_asset()
test_add_user() test_add_user()
......
...@@ -4,7 +4,7 @@ import re ...@@ -4,7 +4,7 @@ import re
import time import time
from django import template from django import template
from juser.models import User, UserGroup from juser.models import User, UserGroup, DEPT
from jasset.models import BisGroup from jasset.models import BisGroup
from jumpserver.views import perm_user_asset from jumpserver.views import perm_user_asset
...@@ -26,16 +26,16 @@ def int2str(value): ...@@ -26,16 +26,16 @@ def int2str(value):
@register.filter(name='get_role') @register.filter(name='get_role')
def get_role(user_id): def get_role(user_id):
user_role = {'SU': u'超级管理员', 'GA': u'组管理员', 'CU': u'普通用户'} user_role = {'SU': u'超级管理员', 'DA': u'部门管理员', 'CU': u'普通用户'}
user = User.objects.get(id=user_id) user = User.objects.get(id=user_id)
return user_role.get(str(user.role)) return user_role.get(str(user.role))
@register.filter(name='groups_str') @register.filter(name='groups_str')
def groups_str(username): def groups_str(user_id):
groups = [] groups = []
user = User.objects.get(username=username) user = User.objects.get(id=user_id)
for group in user.user_group.filter(type='A'): for group in user.group.all():
groups.append(group.name) groups.append(group.name)
if len(groups) < 4: if len(groups) < 4:
return ' '.join(groups) return ' '.join(groups)
...@@ -71,6 +71,15 @@ def member_count(group_id): ...@@ -71,6 +71,15 @@ def member_count(group_id):
group = UserGroup.objects.get(id=group_id) group = UserGroup.objects.get(id=group_id)
return group.user_set.count() return group.user_set.count()
@register.filter(name='dept_member')
def dept_member(dept_id):
dept = DEPT.objects.filter(id=dept_id)
if dept:
dept = dept[0]
return dept.user_set.count()
else:
return 0
@register.filter(name='perm_count') @register.filter(name='perm_count')
def perm_count(group_id): def perm_count(group_id):
......
...@@ -13,6 +13,8 @@ urlpatterns = patterns('juser.views', ...@@ -13,6 +13,8 @@ urlpatterns = patterns('juser.views',
(r'^group_list/$', 'group_list'), (r'^group_list/$', 'group_list'),
(r'^dept_list/$', 'dept_list'), (r'^dept_list/$', 'dept_list'),
(r'^dept_add/$', 'dept_add'), (r'^dept_add/$', 'dept_add'),
(r'^dept_del/$', 'dept_del'),
(r'^dept_detail/$', 'dept_detail'),
(r'^user_detail/$', 'user_detail'), (r'^user_detail/$', 'user_detail'),
(r'^user_del/$', 'user_del'), (r'^user_del/$', 'user_del'),
(r'^user_edit/$', 'user_edit'), (r'^user_edit/$', 'user_edit'),
......
This diff is collapsed.
{% load mytags %}
<html>
<head>
{% include 'link_css.html' %}
<style type="text/css">
body
{
background: #FFFFFF;
}
</style>
</head>
<body>
<div class="row">
<div class="contact-box">
<h2 class="text-center"><b>{{ dept.name }}</b> 部门成员</h2>
<div class="ibox-content">
<table class="table table-striped table-bordered table-hover " id="editable" >
<thead>
<tr>
<th class="text-center">用户名</th>
<th class="text-center">姓名</th>
<th class="text-center">角色</th>
</tr>
</thead>
<tbody>
{% for user in users %}
<tr class="gradeX">
<td class="text-center">{{ user.username }}</td>
<td class="text-center">{{ user.name }}</td>
<td class="text-center">{{ user.id|get_role }}</td>
</tr>
{% endfor %}
</tbody>
</tbody>
</table>
</div>
</div>
</body>
</html>
\ No newline at end of file
...@@ -31,11 +31,25 @@ ...@@ -31,11 +31,25 @@
<div class="ibox-content"> <div class="ibox-content">
<div class=""> <div class="">
<a target="_blank" href="/juser/dept_add/" class="btn btn-sm btn-primary "> 添加 </a> <a target="_blank" href="/juser/dept_add/" class="btn btn-sm btn-primary "> 添加 </a>
<a target="_blank" href="/juser/group_add/" class="btn btn-sm btn-danger "> 删除所选 </a>
<form id="search_form" method="get" action="" class="pull-right mail-search">
<div class="input-group">
<input type="text" class="form-control input-sm" id="search_input" name="search" placeholder="Search">
<div class="input-group-btn">
<button id='search_btn' type="submit" class="btn btn-sm btn-primary">
Search
</button>
</div>
</div>
</form>
</div> </div>
<table class="table table-striped table-bordered table-hover " id="editable" > <table class="table table-striped table-bordered table-hover " id="editable" >
<thead> <thead>
<tr> <tr>
<th class="text-center">
<input type="checkbox" id="select_all" onclick="selectAll()" name="select_all">
</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>
...@@ -45,13 +59,16 @@ ...@@ -45,13 +59,16 @@
<tbody> <tbody>
{% for dept in contacts.object_list %} {% for dept in contacts.object_list %}
<tr class="gradeX"> <tr class="gradeX">
<td class="text-center">
<input type="checkbox" name="selected" value="{{ dept.id }}">
</td>
<td class="text-center"> {{ dept.name }} </td> <td class="text-center"> {{ dept.name }} </td>
<td class="text-center"> {{ dept.name }} </td> <td class="text-center"> {{ dept.id | dept_member }} </td>
<td class="text-center"> {{ dept.comment }} </td> <td class="text-center"> {{ dept.comment }} </td>
<td class="text-center"> <td class="text-center">
<a title="[ {{ dept.name }} ] 成员信息" href="../dept_detail/?id={{ group.id }}" class="iframe btn btn-xs btn-primary">成员</a> <a title="[ {{ dept.name }} ] 成员信息" href="../dept_detail/?id={{ dept.id }}" class="iframe btn btn-xs btn-primary">成员</a>
<a href="../dept_edit/?id={{ group.id }}" class="btn btn-xs btn-info">编辑</a> <a href="../dept_edit/?id={{ dept.id }}" class="btn btn-xs btn-info">编辑</a>
<a href="../dept_del/?id={{ group.id }}" class="btn btn-xs btn-danger">删除</a> <a href="../dept_del/?id={{ dept.id }}" class="btn btn-xs btn-danger">删除</a>
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}
...@@ -75,8 +92,8 @@ ...@@ -75,8 +92,8 @@
<a href="#">Previous</a> <a href="#">Previous</a>
</li> </li>
{% endif %} {% endif %}
{% for page in p.page_range %} {% for page in page_range %}
{% ifequal offset1 page %} {% ifequal current_page page %}
<li class="paginate_button active" aria-controls="editable" tabindex="0"><a href="?page={{ page }}" title="第{{ page }}页">{{ page }}</a></li> <li class="paginate_button active" aria-controls="editable" tabindex="0"><a href="?page={{ page }}" title="第{{ page }}页">{{ page }}</a></li>
{% else %} {% else %}
<li class="paginate_button" aria-controls="editable" tabindex="0"><a href="?page={{ page }}" title="第{{ page }}页">{{ page }}</a></li> <li class="paginate_button" aria-controls="editable" tabindex="0"><a href="?page={{ page }}" title="第{{ page }}页">{{ page }}</a></li>
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
<body> <body>
<div class="row"> <div class="row">
<div class="contact-box"> <div class="contact-box">
<h2 class="text-center">{{ group.name }} 属组详情</h2> <h2 class="text-center"><b>{{ group.name }}</b> 组中成员</h2>
<div class="ibox-content"> <div class="ibox-content">
<table class="table table-striped table-bordered table-hover " id="editable" > <table class="table table-striped table-bordered table-hover " id="editable" >
......
...@@ -31,11 +31,26 @@ ...@@ -31,11 +31,26 @@
<div class="ibox-content"> <div class="ibox-content">
<div class=""> <div class="">
<a target="_blank" href="/juser/group_add/" class="btn btn-sm btn-primary "> 添加 </a> <a target="_blank" href="/juser/group_add/" class="btn btn-sm btn-primary "> 添加 </a>
<a target="_blank" href="/juser/group_add/" class="btn btn-sm btn-danger "> 删除所选 </a>
<form id="search_form" method="get" action="" class="pull-right mail-search">
<div class="input-group">
<input type="text" class="form-control input-sm" id="search_input" name="search" placeholder="Search">
<div class="input-group-btn">
<button id='search_btn' type="submit" class="btn btn-sm btn-primary">
Search
</button>
</div>
</div>
</form>
</div> </div>
<table class="table table-striped table-bordered table-hover " id="editable" > <table class="table table-striped table-bordered table-hover " id="editable" >
<thead> <thead>
<tr> <tr>
<th class="text-center">
<input type="checkbox" id="select_all" onclick="selectAll()" name="select_all">
</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>
...@@ -46,9 +61,12 @@ ...@@ -46,9 +61,12 @@
<tbody> <tbody>
{% for group in contacts.object_list %} {% for group in contacts.object_list %}
<tr class="gradeX"> <tr class="gradeX">
<td class="text-center">
<input type="checkbox" name="selected" value="{{ group.id }}">
</td>
<td class="text-center"> {{ group.name }} </td> <td class="text-center"> {{ group.name }} </td>
<td class="text-center"> {{ group.dept.name }} </td> <td class="text-center"> {{ group.dept.name }} </td>
<td class="text-center"> {{ group.name }} </td> <td class="text-center"> {{ group.id | member_count }} </td>
<td class="text-center"> {{ group.comment }} </td> <td class="text-center"> {{ group.comment }} </td>
<td class="text-center"> <td class="text-center">
<a title="[ {{ group.name }} ] 成员信息" href="../group_detail/?id={{ group.id }}" class="iframe btn btn-xs btn-primary">成员</a> <a title="[ {{ group.name }} ] 成员信息" href="../group_detail/?id={{ group.id }}" class="iframe btn btn-xs btn-primary">成员</a>
...@@ -77,8 +95,8 @@ ...@@ -77,8 +95,8 @@
<a href="#">Previous</a> <a href="#">Previous</a>
</li> </li>
{% endif %} {% endif %}
{% for page in p.page_range %} {% for page in page_range %}
{% ifequal offset1 page %} {% ifequal current_page page %}
<li class="paginate_button active" aria-controls="editable" tabindex="0"><a href="?page={{ page }}" title="第{{ page }}页">{{ page }}</a></li> <li class="paginate_button active" aria-controls="editable" tabindex="0"><a href="?page={{ page }}" title="第{{ page }}页">{{ page }}</a></li>
{% else %} {% else %}
<li class="paginate_button" aria-controls="editable" tabindex="0"><a href="?page={{ page }}" title="第{{ page }}页">{{ page }}</a></li> <li class="paginate_button" aria-controls="editable" tabindex="0"><a href="?page={{ page }}" title="第{{ page }}页">{{ page }}</a></li>
...@@ -107,6 +125,17 @@ ...@@ -107,6 +125,17 @@
$(document).ready(function(){ $(document).ready(function(){
$(".iframe").colorbox({iframe:true, width:"70%", height:"70%"}); $(".iframe").colorbox({iframe:true, width:"70%", height:"70%"});
}); });
{# function user_group_search(){#}
{# $.ajax({#}
{# type: "GET",#}
{# url: "/juser/group_search/",#}
{# data: $("#search_form").serialize(),#}
{# success: function (data) {#}
{# $("#contents_form").html(data);#}
{# }#}
{# });#}
{# }#}
</script> </script>
{% endblock %} {% endblock %}
\ No newline at end of file
...@@ -31,6 +31,17 @@ ...@@ -31,6 +31,17 @@
<div class="ibox-content"> <div class="ibox-content">
<div class=""> <div class="">
<a target="_blank" href="/juser/user_add/" class="btn btn-sm btn-primary "> 添加 </a> <a target="_blank" href="/juser/user_add/" class="btn btn-sm btn-primary "> 添加 </a>
<a target="_blank" href="/juser/group_add/" class="btn btn-sm btn-danger "> 删除所选 </a>
<form id="search_form" method="get" action="" class="pull-right mail-search">
<div class="input-group">
<input type="text" class="form-control input-sm" id="search_input" name="search" placeholder="Search">
<div class="input-group-btn">
<button id='search_btn' type="submit" class="btn btn-sm btn-primary">
Search
</button>
</div>
</div>
</form>
</div> </div>
<table class="table table-striped table-bordered table-hover " id="editable" > <table class="table table-striped table-bordered table-hover " id="editable" >
...@@ -39,11 +50,10 @@ ...@@ -39,11 +50,10 @@
<th class="text-center"> <th class="text-center">
<input type="checkbox" id="select_all" onclick="selectAll()" name="select_all"> <input type="checkbox" id="select_all" onclick="selectAll()" name="select_all">
</th> </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> <th class="text-center">操作</th>
...@@ -55,12 +65,11 @@ ...@@ -55,12 +65,11 @@
<td class="text-center"> <td class="text-center">
<input type="checkbox" name="selected" value="{{ user.id }}"> <input type="checkbox" name="selected" value="{{ user.id }}">
</td> </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.dept.name }} </td>
<td class="text-center"> {{ user.username|groups_str }}</td> <td class="text-center"> {{ user.id | 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>
<td class="text-center"> <td class="text-center">
<a title="[ {{ user.name }} ] 详情" href="../user_detail/?id={{ user.id }}" class="iframe btn btn-xs btn-primary">详情</a> <a title="[ {{ user.name }} ] 详情" href="../user_detail/?id={{ user.id }}" class="iframe btn btn-xs btn-primary">详情</a>
......
<nav class="navbar navbar-static-top" role="navigation" style="margin-bottom: 0"> <nav class="navbar navbar-static-top" role="navigation" style="margin-bottom: 0">
<div class="navbar-header"> <div class="navbar-header">
<a class="navbar-minimalize minimalize-styl-2 btn btn-primary " href="#"><i class="fa fa-bars"></i> </a> <a class="navbar-minimalize minimalize-styl-2 btn btn-primary " href="#"><i class="fa fa-bars"></i> </a>
<form role="search" class="navbar-form-custom" method="post" action="search_results.html"> <form role="search" class="navbar-form-custom" method="get" action="">
<div class="form-group"> <div class="form-group">
<input type="text" placeholder="输入搜索..." class="form-control" name="top-search" id="top-search"> <input type="text" placeholder="输入搜索..." class="form-control" name="search" id="top-search">
</div> </div>
</form> </form>
</div> </div>
......
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