diff --git a/jasset/__init__.pyc b/jasset/__init__.pyc new file mode 100644 index 000000000..8640fe38d Binary files /dev/null and b/jasset/__init__.pyc differ diff --git a/jasset/admin.pyc b/jasset/admin.pyc new file mode 100644 index 000000000..9a4afc5d1 Binary files /dev/null and b/jasset/admin.pyc differ diff --git a/jasset/asset_api.pyc b/jasset/asset_api.pyc new file mode 100644 index 000000000..4e8434612 Binary files /dev/null and b/jasset/asset_api.pyc differ diff --git a/jasset/models.pyc b/jasset/models.pyc new file mode 100644 index 000000000..fb530951e Binary files /dev/null and b/jasset/models.pyc differ diff --git a/jasset/urls.pyc b/jasset/urls.pyc new file mode 100644 index 000000000..d12635a88 Binary files /dev/null and b/jasset/urls.pyc differ diff --git a/jasset/views.pyc b/jasset/views.pyc new file mode 100644 index 000000000..0bb65fb63 Binary files /dev/null and b/jasset/views.pyc differ diff --git a/jlog/__init__.pyc b/jlog/__init__.pyc new file mode 100644 index 000000000..73de35215 Binary files /dev/null and b/jlog/__init__.pyc differ diff --git a/jlog/admin.pyc b/jlog/admin.pyc new file mode 100644 index 000000000..8903548ba Binary files /dev/null and b/jlog/admin.pyc differ diff --git a/jlog/models.pyc b/jlog/models.pyc new file mode 100644 index 000000000..ffaf3b139 Binary files /dev/null and b/jlog/models.pyc differ diff --git a/jperm/__init__.pyc b/jperm/__init__.pyc new file mode 100644 index 000000000..b1179af6f Binary files /dev/null and b/jperm/__init__.pyc differ diff --git a/jperm/admin.pyc b/jperm/admin.pyc new file mode 100644 index 000000000..42bc5bfac Binary files /dev/null and b/jperm/admin.pyc differ diff --git a/jperm/models.py b/jperm/models.py index b86ddd433..e5c7c1774 100644 --- a/jperm/models.py +++ b/jperm/models.py @@ -1,8 +1,8 @@ import datetime from django.db import models -from juser.models import User, UserGroup from jasset.models import Asset, AssetGroup +from juser.models import User, UserGroup class PermLog(models.Model): @@ -19,3 +19,27 @@ class SysUser(models.Model): comment = models.CharField(max_length=100, null=True, blank=True, default='') +class PermRole(models.Model): + name = models.CharField(max_length=100) + comment = models.CharField(max_length=100) + + +class UserMapping(models.Model): + role = models.ForeignKey(PermRole, related_name='user_mapping') + user = models.ForeignKey(User, related_name='user_mapping') + asset = models.ForeignKey(Asset, related_name='user_mapping') + asset_group = models.ForeignKey(AssetGroup, related_name='user_mapping', null=True, blank=True) + + +class GroupMapping(models.Model): + role = models.ForeignKey(PermRole, related_name='group_mapping') + usergroup = models.ForeignKey(UserGroup, related_name='group_mapping', null=True, blank=True) + asset = models.ForeignKey(Asset, related_name='group_mapping') + asset_group = models.ForeignKey(AssetGroup, related_name='group_mapping', null=True, blank=True) + + + + + + + diff --git a/jperm/models.pyc b/jperm/models.pyc new file mode 100644 index 000000000..441355de3 Binary files /dev/null and b/jperm/models.pyc differ diff --git a/jperm/perm_api.pyc b/jperm/perm_api.pyc new file mode 100644 index 000000000..e23e89755 Binary files /dev/null and b/jperm/perm_api.pyc differ diff --git a/jperm/playbooks/add_init_users/add_users.yml b/jperm/playbooks/add_init_users/add_users.yml new file mode 100644 index 000000000..c4ff86d4f --- /dev/null +++ b/jperm/playbooks/add_init_users/add_users.yml @@ -0,0 +1,12 @@ +--- + +- hosts: 'add_users_group' + gather_facts: no + tasks: + - name: add SA user + command: uname -a + + + + + diff --git a/jperm/playbooks/test.yml b/jperm/playbooks/test.yml new file mode 100644 index 000000000..1e448e445 --- /dev/null +++ b/jperm/playbooks/test.yml @@ -0,0 +1,9 @@ +--- + +- hosts: test + gather_facts: no + tasks: + - name: just for test + command: uname -a + + diff --git a/jperm/urls.py b/jperm/urls.py index 3892407c1..6f8a32698 100644 --- a/jperm/urls.py +++ b/jperm/urls.py @@ -4,6 +4,7 @@ from jperm.views import * urlpatterns = patterns('jperm.views', (r'^user/$', perm_user_list), (r'^perm_user_edit/$', perm_user_edit), + (r'^perm_user_detail/$', perm_user_detail), (r'^group/$', perm_group_list), (r'^perm_group_edit/$', perm_group_edit), (r'^log/$', log), diff --git a/jperm/urls.pyc b/jperm/urls.pyc new file mode 100644 index 000000000..4ec44cc73 Binary files /dev/null and b/jperm/urls.pyc differ diff --git a/jperm/utils.py b/jperm/utils.py new file mode 100644 index 000000000..76a0a8489 --- /dev/null +++ b/jperm/utils.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- + +import random + +def get_rand_pass(): + """ + get a reandom password. + """ + lower = [chr(i) for i in range(97,123)] + upper = [chr(i).upper() for i in range(97,123)] + digit = [str(i) for i in range(10)] + password_pool = [] + password_pool.extend(lower) + password_pool.extend(upper) + password_pool.extend(digit) + pass_list = [random.choice(password_pool) for i in range(1,14)] + pass_list.insert(random.choice(range(1,14)), '@') + pass_list.insert(random.choice(range(1,14)), random.choice(digit)) + password = ''.join(pass_list) + return password + +def updates_dict(*args): + """ + surport update multi dict + """ + result = {} + for d in args: + result.update(d) + return result + + + +if __name__ == "__main__": + pass + + diff --git a/jperm/utils.pyc b/jperm/utils.pyc new file mode 100644 index 000000000..535aa3693 Binary files /dev/null and b/jperm/utils.pyc differ diff --git a/jperm/views.py b/jperm/views.py index bc0ea2d8e..675ed2858 100644 --- a/jperm/views.py +++ b/jperm/views.py @@ -9,7 +9,12 @@ from jperm.models import SysUser from juser.user_api import gen_ssh_key -from django.shortcuts import render_to_response +from juser.models import User +from jasset.models import Asset, AssetGroup + +from jperm.utils import updates_dict + +from jumpserver.api import my_render, get_object @require_role('admin') @@ -22,8 +27,8 @@ def perm_user_list(request): 2. include 部分:{% include 'nav_cat_bar.html' %} rander_nav 为渲染数据 """ - render_data = {} data_nav = {"header_title": "用户授权", "path1": "授权管理", "path2": "用户授权"} + # 获取所有用户 users_list = User.objects.all() @@ -32,39 +37,72 @@ def perm_user_list(request): if keyword: users_list = users_list.filter(Q(name=keyword) | Q(username=keyword)) users_list, p, users, page_range, current_page, show_first, show_end = pages(users_list, request) - data_content = {"users": users} - for data in [data_nav, data_content]: - render_data.update(data) - - return render_to_response('jperm/perm_user_list.html', render_data) + render_data = updates_dict(data_nav, data_content) + + return my_render('jperm/perm_user_list.html', render_data, request) + + +@require_role('admin') +def perm_user_detail(request): + """ + 用户详情视图: + 该视图的模板包含2部分: + 1. block 部分:{% block content %} + rander_content 为渲染数据 + 2. include 部分:{% include 'nav_cat_bar.html' %} + rander_nav 为渲染数据 + """ + data_nav = {"header_title": "用户授权", "path1": "授权管理", "path2": "用户详情"} + + # 待实现 + render_data = updates_dict(data_nav) + + return my_render('jperm/perm_user_detail.html', render_data, request) + @require_role('admin') def perm_user_edit(request): """ TODO: """ - header_title, path1, path2 = '用户授权', '授权管理', '授权更改' + data_nav = {"header_title": "用户授权", "path1": "授权管理", "path2": "授权更改"} + + # 获取user对象 user_id = request.GET.get('id', '') user = get_object(User, id=user_id) - asset_all = Asset.objects.all() # 获取所有资产 - asset_group_all = AssetGroup.objects.all() # 获取所有资产组 - asset_permed = user.asset.all() # 获取授权的资产对象列表 - asset_group_permed = user.asset_group.all() # 获取授权的资产组对象列表 + + # 获取所有 资产 和 资产组 + asset_all = Asset.objects.all() + asset_group_all = AssetGroup.objects.all() + + # 获取授权的 资产对象列表 和 资产组对象列表 + asset_permed = user.asset.all() + asset_group_permed = user.asset_group.all() + + # 获取未授权的 资产对象列表 和 资产组对象列表 if request.method == 'GET' and user: - assets = [asset for asset in asset_all if asset not in asset_permed] # 获取没有授权的资产对象列表 - asset_groups = [asset_group for asset_group in asset_group_all if asset_group not in asset_group_permed] # 同理 - return my_render('jperm/perm_user_edit.html', locals(), request) + assets = [asset for asset in asset_all if asset not in asset_permed] + asset_groups = [asset_group for asset_group in asset_group_all if asset_group not in asset_group_permed] + data_content = {"assets": assets, "asset_groups": asset_groups, "user": user} + + render_data = updates_dict(data_nav, data_content) + return my_render('jperm/perm_user_edit.html', render_data, request) + elif request.method == 'POST' and user: - asset_id_select = request.POST.getlist('asset_select', []) # 获取选择的资产id列表 - asset_group_id_select = request.POST.getlist('asset_groups_select', []) # 获取选择的资产组id列表 + # 获取选择的资产列表 和 资产组列表 + asset_id_select = request.POST.getlist('asset_select', []) + asset_group_id_select = request.POST.getlist('asset_groups_select', []) asset_select = get_object_list(Asset, asset_id_select) asset_group_select = get_object_list(AssetGroup, asset_group_id_select) - asset_new = list(set(asset_select) - set(asset_permed)) # 计算的得到新授权的资产对象列表 - asset_del = list(set(asset_permed) - set(asset_select)) # 计算得到回收权限的资产对象列表 - asset_group_new = list(set(asset_group_select) - set(asset_group_permed)) # 新授权的资产组对象列表 - asset_group_del = list(set(asset_group_permed) - set(asset_group_select)) # 回收的资产组对象列表 + + # 新授权的资产对象列表, 回收权限的资产对象列表, 新授权的资产组对象列表, 回收的资产组对象列表 + asset_new = list(set(asset_select) - set(asset_permed)) + asset_del = list(set(asset_permed) - set(asset_select)) + asset_group_new = list(set(asset_group_select) - set(asset_group_permed)) + asset_group_del = list(set(asset_group_permed) - set(asset_group_select)) + for asset_group in asset_group_new: asset_new.extend(asset_group.asset_set.all()) for asset_group in asset_group_del: diff --git a/jperm/views.pyc b/jperm/views.pyc new file mode 100644 index 000000000..b7e90e653 Binary files /dev/null and b/jperm/views.pyc differ diff --git a/jumpserver/__init__.pyc b/jumpserver/__init__.pyc new file mode 100644 index 000000000..842493219 Binary files /dev/null and b/jumpserver/__init__.pyc differ diff --git a/jumpserver/api.pyc b/jumpserver/api.pyc new file mode 100644 index 000000000..aa257d58d Binary files /dev/null and b/jumpserver/api.pyc differ diff --git a/jumpserver/context_processors.pyc b/jumpserver/context_processors.pyc new file mode 100644 index 000000000..1d869b71a Binary files /dev/null and b/jumpserver/context_processors.pyc differ diff --git a/jumpserver/models.pyc b/jumpserver/models.pyc new file mode 100644 index 000000000..54dd68161 Binary files /dev/null and b/jumpserver/models.pyc differ diff --git a/jumpserver/settings.pyc b/jumpserver/settings.pyc new file mode 100644 index 000000000..1c0a9757b Binary files /dev/null and b/jumpserver/settings.pyc differ diff --git a/jumpserver/tasks.py b/jumpserver/tasks.py index 22fd514ef..41bad7316 100644 --- a/jumpserver/tasks.py +++ b/jumpserver/tasks.py @@ -1,4 +1,4 @@ -# coding: utf-8 +# -*- coding: utf-8 -*- from ansible.playbook import PlayBook from ansible import callbacks, utils @@ -44,4 +44,5 @@ def playbook_run(inventory, playbook, default_user=None, default_port=None, defa else: results_r['success'].append(hostname) print "%s >>> Success" % hostname - return results_r \ No newline at end of file + return results_r + diff --git a/jumpserver/tasks.pyc b/jumpserver/tasks.pyc new file mode 100644 index 000000000..492bcb390 Binary files /dev/null and b/jumpserver/tasks.pyc differ diff --git a/jumpserver/templatetags/__init__.pyc b/jumpserver/templatetags/__init__.pyc new file mode 100644 index 000000000..1e92dc2cb Binary files /dev/null and b/jumpserver/templatetags/__init__.pyc differ diff --git a/jumpserver/templatetags/mytags.pyc b/jumpserver/templatetags/mytags.pyc new file mode 100644 index 000000000..db94f7a78 Binary files /dev/null and b/jumpserver/templatetags/mytags.pyc differ diff --git a/jumpserver/urls.pyc b/jumpserver/urls.pyc new file mode 100644 index 000000000..806161a27 Binary files /dev/null and b/jumpserver/urls.pyc differ diff --git a/jumpserver/views.pyc b/jumpserver/views.pyc new file mode 100644 index 000000000..1cb894aa7 Binary files /dev/null and b/jumpserver/views.pyc differ diff --git a/jumpserver/wsgi.pyc b/jumpserver/wsgi.pyc new file mode 100644 index 000000000..90dfb9052 Binary files /dev/null and b/jumpserver/wsgi.pyc differ diff --git a/juser/__init__.pyc b/juser/__init__.pyc new file mode 100644 index 000000000..fac421385 Binary files /dev/null and b/juser/__init__.pyc differ diff --git a/juser/admin.pyc b/juser/admin.pyc new file mode 100644 index 000000000..02d73c687 Binary files /dev/null and b/juser/admin.pyc differ diff --git a/juser/models.py b/juser/models.py index 50835f63c..4872ae3dc 100644 --- a/juser/models.py +++ b/juser/models.py @@ -2,7 +2,6 @@ from django.db import models -from jasset.models import Asset, AssetGroup class UserGroup(models.Model): @@ -10,8 +9,8 @@ class UserGroup(models.Model): # assets = models.TextField(max_length=1000, verbose_name="Assets", default='') # asset_groups = models.CharField(max_length=1000, verbose_name="Asset Groups", default='') comment = models.CharField(max_length=160, blank=True, null=True) - asset = models.ManyToManyField(Asset) - asset_group = models.ManyToManyField(AssetGroup) + #asset = models.ManyToManyField(Asset) + #asset_group = models.ManyToManyField(AssetGroup) def __unicode__(self): return self.name @@ -42,8 +41,7 @@ class User(models.Model): is_active = models.BooleanField(default=True) last_login = models.DateTimeField(null=True) date_joined = models.DateTimeField(null=True) - asset = models.ManyToManyField(Asset) - asset_group = models.ManyToManyField(AssetGroup) + def __unicode__(self): return self.username diff --git a/juser/models.pyc b/juser/models.pyc new file mode 100644 index 000000000..b6116520b Binary files /dev/null and b/juser/models.pyc differ diff --git a/juser/urls.pyc b/juser/urls.pyc new file mode 100644 index 000000000..6f7b7b688 Binary files /dev/null and b/juser/urls.pyc differ diff --git a/juser/user_api.pyc b/juser/user_api.pyc new file mode 100644 index 000000000..ba53cb153 Binary files /dev/null and b/juser/user_api.pyc differ diff --git a/juser/views.pyc b/juser/views.pyc new file mode 100644 index 000000000..803949f57 Binary files /dev/null and b/juser/views.pyc differ diff --git a/logs/jumpserver.log b/logs/jumpserver.log new file mode 100644 index 000000000..e69de29bb diff --git a/templates/jperm/perm_user_detail.html b/templates/jperm/perm_user_detail.html new file mode 100644 index 000000000..8fec3ba31 --- /dev/null +++ b/templates/jperm/perm_user_detail.html @@ -0,0 +1,30 @@ +{% extends 'base.html' %} +{% load mytags %} +{% block content %} +{% include 'nav_cat_bar.html' %} + +
+
+
+
+
+
还未实现...
+ +
+ +
+
+
+
+ +{% endblock %} diff --git a/templates/jperm/perm_user_list.html b/templates/jperm/perm_user_list.html index 84fdc5678..dc503fecc 100644 --- a/templates/jperm/perm_user_list.html +++ b/templates/jperm/perm_user_list.html @@ -78,4 +78,4 @@ -{% endblock %} \ No newline at end of file +{% endblock %}