From 61eadf6891ededcc3cebbc4e826b1c907d62b996 Mon Sep 17 00:00:00 2001 From: ibuler Date: Thu, 3 Nov 2016 00:09:38 +0800 Subject: [PATCH] Modify asset detail --- apps/assets/forms.py | 1 + .../assets/templates/assets/asset_create.html | 1 + .../assets/templates/assets/asset_detail.html | 53 ++++++++++++++++++- .../assets/templates/assets/asset_update.html | 1 + apps/assets/views.py | 6 ++- apps/perms/forms.py | 10 ++++ apps/perms/hands.py | 8 ++- 7 files changed, 77 insertions(+), 3 deletions(-) diff --git a/apps/assets/forms.py b/apps/assets/forms.py index 35c8a1258..5ec97d042 100644 --- a/apps/assets/forms.py +++ b/apps/assets/forms.py @@ -58,6 +58,7 @@ class AssetCreateForm(forms.ModelForm): help_texts = { 'hostname': '* required', 'ip': '* required', + 'system_users': _('System user will be granted for user to login assets (using ansible create automatic)'), 'admin_user': _('Admin user should be exist on asset already, And have sudo ALL permission'), 'tags': '最多5个标签,单个标签最长8个汉字,按回车确认' } diff --git a/apps/assets/templates/assets/asset_create.html b/apps/assets/templates/assets/asset_create.html index b00f9c8df..e49540738 100644 --- a/apps/assets/templates/assets/asset_create.html +++ b/apps/assets/templates/assets/asset_create.html @@ -20,6 +20,7 @@

{% trans 'Asset user' %}

{{ form.admin_user|bootstrap_horizontal }} + {{ form.system_users|bootstrap_horizontal }}

{% trans 'Other' %}

diff --git a/apps/assets/templates/assets/asset_detail.html b/apps/assets/templates/assets/asset_detail.html index fcb04d049..29597c0a9 100644 --- a/apps/assets/templates/assets/asset_detail.html +++ b/apps/assets/templates/assets/asset_detail.html @@ -54,6 +54,14 @@ {% trans 'IP' %}: {{ asset.ip }} + + {% trans 'Admin user' %}: + {% if asset.admin_user %} + {{ asset.admin_user.name }} + {% else %} + None + {% endbif %} + {% trans 'Other IP' %}: {{ asset.other_ip }} @@ -173,7 +181,15 @@ - + + {% trans 'Repush system users' %}: + + + + + + + @@ -215,6 +231,41 @@ +
+
+ {% trans 'Asset groups' %} +
+
+ + + + + + + + + + + {% for system_user in system_users %} + + + + + {% endfor %} + +
+ +
+ +
{{ system_user.name }} + +
+
+
diff --git a/apps/assets/templates/assets/asset_update.html b/apps/assets/templates/assets/asset_update.html index bd9f7bde8..fb46c79d0 100644 --- a/apps/assets/templates/assets/asset_update.html +++ b/apps/assets/templates/assets/asset_update.html @@ -25,6 +25,7 @@

{% trans 'Asset user' %}

{{ form.admin_user|bootstrap_horizontal }} + {{ form.system_users|bootstrap_horizontal }}

{% trans 'Hardware' %}

diff --git a/apps/assets/views.py b/apps/assets/views.py index f146e0e5a..518741648 100644 --- a/apps/assets/views.py +++ b/apps/assets/views.py @@ -135,12 +135,16 @@ class AssetDetailView(DetailView): def get_context_data(self, **kwargs): asset_groups = self.object.groups.all() + system_users = self.object.system_users.all() context = { 'app': 'Assets', 'action': 'Asset detail', 'asset_groups_remain': [asset_group for asset_group in AssetGroup.objects.all() - if asset_group not in asset_groups], + if asset_group not in asset_groups], 'asset_groups': asset_groups, + 'system_users_remain': [system_user for system_user in SystemUser.objects.all() + if system_user not in system_users], + 'system_users': system_users, } kwargs.update(context) return super(AssetDetailView, self).get_context_data(**kwargs) diff --git a/apps/perms/forms.py b/apps/perms/forms.py index 8638db75b..360fed810 100644 --- a/apps/perms/forms.py +++ b/apps/perms/forms.py @@ -6,9 +6,18 @@ from django.utils.translation import ugettext_lazy as _ # from .hands import User, UserGroup, Asset, AssetGroup, SystemUser from .models import AssetPermission +from .hands import associate_system_users_with_assets class AssetPermissionForm(forms.ModelForm): + def save(self, commit=True): + instance = super(AssetPermissionForm, self).save(commit=commit) + + assets = instance.assets.all() + asset_groups = instance.asset_groups.all() + system_users = instance.system_users.all() + associate_system_users_with_assets(system_users, assets, asset_groups) + return instance class Meta: model = AssetPermission @@ -34,3 +43,4 @@ class AssetPermissionForm(forms.ModelForm): 'asset_groups': '* Asset or Asset group at least one required', 'system_users': '* required', } + diff --git a/apps/perms/hands.py b/apps/perms/hands.py index ebf002686..735faecfd 100644 --- a/apps/perms/hands.py +++ b/apps/perms/hands.py @@ -2,7 +2,13 @@ # from users.utils import AdminUserRequiredMixin -# from users.backends import IsValdiUser from users.models import User, UserGroup from assets.models import Asset, AssetGroup, SystemUser + +def associate_system_users_with_assets(system_users, assets, asset_groups): + for asset in assets: + asset.system_users.add(*tuple(system_users)) + + for asset_group in asset_groups: + asset_group.system_users.add(*tuple(system_users))