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' %}:
+
+
+ {% trans 'Push' %}
+
+
+
+
@@ -215,6 +231,41 @@
+
+
+ {% trans 'Asset groups' %}
+
+
+
+
+
+ {% for system_user in system_users %}
+
+ {{ system_user.name }}
+
+
+
+
+ {% endfor %}
+
+
+
+
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))