diff --git a/apps/assets/api.py b/apps/assets/api.py
index 3bc6c5639..ac7466e4e 100644
--- a/apps/assets/api.py
+++ b/apps/assets/api.py
@@ -26,7 +26,7 @@ from .hands import IsSuperUser, IsValidUser, IsSuperUserOrAppUser, \
get_user_granted_assets
from .models import AssetGroup, Asset, Cluster, SystemUser, AdminUser
from . import serializers
-from .tasks import update_asset_hardware_info_manual, test_admin_user_connectability_util, \
+from .tasks import update_asset_hardware_info_manual, test_admin_user_connectability_manual, \
test_asset_connectability_manual, push_system_user_to_cluster_assets_manual, \
test_system_user_connectability_manual
@@ -52,6 +52,7 @@ class AssetViewSet(IDInFilterMixin, BulkModelViewSet):
cluster_id = self.request.query_params.get('cluster_id')
asset_group_id = self.request.query_params.get('asset_group_id')
admin_user_id = self.request.query_params.get('admin_user_id')
+ system_user_id = self.request.query_params.get('system_user_id')
if cluster_id:
queryset = queryset.filter(cluster__id=cluster_id)
@@ -62,6 +63,10 @@ class AssetViewSet(IDInFilterMixin, BulkModelViewSet):
assets_direct = [asset.id for asset in admin_user.asset_set.all()]
clusters = [cluster.id for cluster in admin_user.cluster_set.all()]
queryset = queryset.filter(Q(cluster__id__in=clusters)|Q(id__in=assets_direct))
+ if system_user_id:
+ system_user = get_object_or_404(SystemUser, id=system_user_id)
+ clusters = system_user.get_clusters()
+ queryset = queryset.filter(cluster__in=clusters)
return queryset
@@ -99,15 +104,6 @@ class GroupAddAssetsApi(generics.UpdateAPIView):
return Response({'error': serializer.errors}, status=400)
-class ClusterUpdateAssetsApi(generics.RetrieveUpdateAPIView):
- """
- Cluster update asset member
- """
- queryset = Cluster.objects.all()
- serializer_class = serializers.ClusterUpdateAssetsSerializer
- permission_classes = (IsSuperUser,)
-
-
class ClusterViewSet(IDInFilterMixin, BulkModelViewSet):
"""
Cluster api set, for add,delete,update,list,retrieve resource
@@ -117,7 +113,6 @@ class ClusterViewSet(IDInFilterMixin, BulkModelViewSet):
permission_classes = (IsSuperUser,)
-# TOdo
class ClusterTestAssetsAliveApi(generics.RetrieveAPIView):
"""
Test cluster asset can connect using admin user or not
@@ -127,6 +122,9 @@ class ClusterTestAssetsAliveApi(generics.RetrieveAPIView):
def retrieve(self, request, *args, **kwargs):
cluster = self.get_object()
+ admin_user = cluster.admin_user
+ test_admin_user_connectability_manual.delay(admin_user)
+ return Response("Task has been send, seen left assets status")
class ClusterAddAssetsApi(generics.UpdateAPIView):
@@ -256,7 +254,7 @@ class AdminUserTestConnectiveApi(generics.RetrieveAPIView):
def retrieve(self, request, *args, **kwargs):
admin_user = self.get_object()
- test_admin_user_connectability_util.delay(admin_user)
+ test_admin_user_connectability_manual.delay(admin_user)
return Response({"msg": "Task created"})
diff --git a/apps/assets/forms.py b/apps/assets/forms.py
index 201438761..7b405fea5 100644
--- a/apps/assets/forms.py
+++ b/apps/assets/forms.py
@@ -150,10 +150,19 @@ class AssetGroupForm(forms.ModelForm):
class ClusterForm(forms.ModelForm):
+ system_users = forms.ModelMultipleChoiceField(
+ queryset=SystemUser.objects.all(),
+ widget=forms.SelectMultiple(
+ attrs={'class': 'select2', 'data-placeholder': _('Select system users')}
+ ),
+ label=_('System users'),
+ required=False,
+ help_text=_("Selected system users will be create at cluster assets"),
+ )
class Meta:
model = Cluster
- fields = ['name', "bandwidth", "operator", 'contact', 'admin_user',
+ fields = ['name', "bandwidth", "operator", 'contact', 'admin_user', 'system_users',
'phone', 'address', 'intranet', 'extranet', 'comment']
widgets = {
'name': forms.TextInput(attrs={'placeholder': _('Name')}),
@@ -162,9 +171,21 @@ class ClusterForm(forms.ModelForm):
}
help_texts = {
'name': '* required',
- 'admin_user': 'The assets of this cluster will use this admin user as his admin user',
+ 'admin_user': _("Cluster level admin user"),
}
+ def __init__(self, *args, **kwargs):
+ if kwargs.get('instance', None):
+ initial = kwargs.get('initial', {})
+ initial['system_users'] = kwargs['instance'].systemuser_set.all()
+ super().__init__(*args, **kwargs)
+
+ def save(self, commit=True):
+ instance = super().save(commit=commit)
+ system_users = self.cleaned_data['system_users']
+ instance.systemuser_set.set(system_users)
+ return instance
+
class AdminUserForm(forms.ModelForm):
# Form field name can not start with `_`, so redefine it,
diff --git a/apps/assets/models/asset.py b/apps/assets/models/asset.py
index 6d1ba3f20..276b767d3 100644
--- a/apps/assets/models/asset.py
+++ b/apps/assets/models/asset.py
@@ -158,6 +158,7 @@ class Asset(models.Model):
class Meta:
unique_together = ('ip', 'port')
+ verbose_name = _("Asset")
@classmethod
def generate_fake(cls, count=100):
diff --git a/apps/assets/models/cluster.py b/apps/assets/models/cluster.py
index 3b66555c3..8d093979e 100644
--- a/apps/assets/models/cluster.py
+++ b/apps/assets/models/cluster.py
@@ -37,6 +37,7 @@ class Cluster(models.Model):
class Meta:
ordering = ['name']
+ verbose_name = _("Cluster")
@classmethod
def generate_fake(cls, count=5):
diff --git a/apps/assets/models/group.py b/apps/assets/models/group.py
index 18b0c5289..c01a2a529 100644
--- a/apps/assets/models/group.py
+++ b/apps/assets/models/group.py
@@ -27,6 +27,7 @@ class AssetGroup(models.Model):
class Meta:
ordering = ['name']
+ verbose_name = _("Asset group")
@classmethod
def initial(cls):
diff --git a/apps/assets/models/user.py b/apps/assets/models/user.py
index 863535ef2..b0175be80 100644
--- a/apps/assets/models/user.py
+++ b/apps/assets/models/user.py
@@ -170,7 +170,6 @@ class AdminUser(AssetUser):
info = None
return info
-
def get_related_assets(self):
assets = []
for cluster in self.cluster_set.all():
@@ -184,6 +183,7 @@ class AdminUser(AssetUser):
class Meta:
ordering = ['name']
+ verbose_name = _("Admin user")
@classmethod
def generate_fake(cls, count=10):
@@ -224,7 +224,7 @@ class SystemUser(AssetUser):
def get_clusters_assets(self):
from .asset import Asset
- clusters = self.cluster.all()
+ clusters = self.get_clusters()
return Asset.objects.filter(cluster__in=clusters)
def get_clusters(self):
@@ -262,6 +262,7 @@ class SystemUser(AssetUser):
class Meta:
ordering = ['name']
+ verbose_name = _("System user")
@classmethod
def generate_fake(cls, count=10):
diff --git a/apps/assets/serializers.py b/apps/assets/serializers.py
index 1e6662160..f77910763 100644
--- a/apps/assets/serializers.py
+++ b/apps/assets/serializers.py
@@ -64,6 +64,7 @@ class AdminUserSerializer(serializers.ModelSerializer):
"""
assets_amount = serializers.SerializerMethodField()
unreachable_amount = serializers.SerializerMethodField()
+ reachable_amount = serializers.SerializerMethodField()
class Meta:
model = AdminUser
@@ -75,7 +76,15 @@ class AdminUserSerializer(serializers.ModelSerializer):
if data:
return len(data.get('dark'))
else:
- return 'Unknown'
+ return 0
+
+ @staticmethod
+ def get_reachable_amount(obj):
+ data = cache.get(ADMIN_USER_CONN_CACHE_KEY.format(obj.name))
+ if data:
+ return len(data.get('contacted'))
+ else:
+ return 0
@staticmethod
def get_assets_amount(obj):
diff --git a/apps/assets/signals_handler.py b/apps/assets/signals_handler.py
index dfd264677..b21c0377f 100644
--- a/apps/assets/signals_handler.py
+++ b/apps/assets/signals_handler.py
@@ -77,7 +77,7 @@ def on_system_user_created_or_updated(sender, instance=None, **kwargs):
@receiver(post_init, sender=Cluster, dispatch_uid="my_unique_identifier")
def on_cluster_init(sender, instance, **kwargs):
instance.__original_assets = tuple(instance.assets.values_list('pk', flat=True))
- # instance.__origin_system_users = tuple(instance.systemuser_set.all())
+ instance.__origin_system_users = tuple(instance.systemuser_set.values_list('pk', flat=True))
@receiver(post_save, sender=Cluster, dispatch_uid="my_unique_identifier")
@@ -103,11 +103,11 @@ def on_cluster_assets_changed(sender, instance, **kwargs):
push_system_user_util.delay(system_users, assets, task_name)
-@receiver(post_save, sender=Cluster, dispatch_uid="my_unique_identifier")
+@receiver(post_save, sender=Cluster, dispatch_uid="my_unique_identifier2")
def on_cluster_system_user_changed(sender, instance, **kwargs):
system_users_origin = instance.__origin_system_users
system_user_new = instance.systemuser_set.values_list('pk', flat=True)
- system_users_added = set(system_user_new) - system_users_origin
+ system_users_added = set(system_user_new) - set(system_users_origin)
if system_users_added:
logger.debug("Receive cluster change system users signal")
system_users = []
diff --git a/apps/assets/tasks.py b/apps/assets/tasks.py
index 233eee707..3d59fa091 100644
--- a/apps/assets/tasks.py
+++ b/apps/assets/tasks.py
@@ -211,6 +211,9 @@ def test_asset_connectability_util(asset, task_name=None):
if task_name is None:
task_name = _("Test asset connectability")
hosts = [asset.hostname]
+ if not hosts:
+ logger.info("No hosts, passed")
+ return {}
tasks = const.TEST_ADMIN_USER_CONN_TASKS
task, created = update_or_create_ansible_task(
task_name=task_name, hosts=hosts, tasks=tasks, pattern='all',
@@ -262,6 +265,9 @@ def test_system_user_connectability_util(system_user, task_name):
assets = system_user.get_clusters_assets()
hosts = [asset.hostname for asset in assets]
tasks = const.TEST_SYSTEM_USER_CONN_TASKS
+ if not hosts:
+ logger.info("No hosts, passed")
+ return {}
task, created = update_or_create_ansible_task(
task_name, hosts=hosts, tasks=tasks, pattern='all',
options=const.TASK_OPTIONS,
@@ -274,7 +280,7 @@ def test_system_user_connectability_util(system_user, task_name):
@shared_task
def test_system_user_connectability_manual(system_user):
- task_name = "Test system user connectability: {}".format(system_user)
+ task_name = _("Test system user connectability: {}").format(system_user)
return test_system_user_connectability_util(system_user, task_name)
@@ -346,11 +352,14 @@ def push_system_user_util(system_users, assets, task_name):
for system_user in system_users:
tasks.extend(get_push_system_user_tasks(system_user))
- print("Task: ", tasks)
if not tasks:
- return
+ logger.info("Not tasks, passed")
+ return {}
hosts = [asset.hostname for asset in assets]
+ if not hosts:
+ logger.info("Not hosts, passed")
+ return {}
task, created = update_or_create_ansible_task(
task_name=task_name, hosts=hosts, tasks=tasks, pattern='all',
options=const.TASK_OPTIONS, run_as_admin=True, created_by='System'
diff --git a/apps/assets/templates/assets/_system_user.html b/apps/assets/templates/assets/_system_user.html
index 99b64af30..34501ef49 100644
--- a/apps/assets/templates/assets/_system_user.html
+++ b/apps/assets/templates/assets/_system_user.html
@@ -3,8 +3,8 @@
{% load static %}
{% load bootstrap3 %}
{% block custom_head_css_js %}
-
-
+
+
{% endblock %}
{% block content %}
diff --git a/apps/assets/templates/assets/admin_user_assets.html b/apps/assets/templates/assets/admin_user_assets.html
index 4b0429605..204ff7e82 100644
--- a/apps/assets/templates/assets/admin_user_assets.html
+++ b/apps/assets/templates/assets/admin_user_assets.html
@@ -60,7 +60,7 @@
{% trans 'IP' %} |
{% trans 'Port' %} |
{% trans 'Type' %} |
- {% trans 'Alive' %} |
+ {% trans 'Reachable' %} |
@@ -144,7 +144,7 @@ $(document).ready(function () {
url: the_url,
error: error,
method: 'GET',
- success_message: "{% trans "Task has been send, seen left asset status" %}"
+ success_message: "{% trans 'Task has been send, seen left asset status' %}"
});
})
diff --git a/apps/assets/templates/assets/admin_user_create_update.html b/apps/assets/templates/assets/admin_user_create_update.html
index d7d5094ff..3d1772172 100644
--- a/apps/assets/templates/assets/admin_user_create_update.html
+++ b/apps/assets/templates/assets/admin_user_create_update.html
@@ -3,8 +3,8 @@
{% load static %}
{% load bootstrap3 %}
{% block custom_head_css_js %}
-
-
+
+
{% endblock %}
{% block content %}
diff --git a/apps/assets/templates/assets/admin_user_list.html b/apps/assets/templates/assets/admin_user_list.html
index cc7cfc8cf..f7c13a32f 100644
--- a/apps/assets/templates/assets/admin_user_list.html
+++ b/apps/assets/templates/assets/admin_user_list.html
@@ -21,8 +21,10 @@
{% trans 'Name' %} |
{% trans 'Username' %} |
- {% trans 'Asset num' %} |
+ {% trans 'Asset' %} |
+ {% trans 'Reachable' %} |
{% trans 'Unreachable' %} |
+ {% trans 'Ratio' %} |
{% trans 'Comment' %} |
{% trans 'Action' %} |
@@ -41,17 +43,50 @@ $(document).ready(function(){
{targets: 1, createdCell: function (td, cellData, rowData) {
var detail_btn = '' + cellData + '';
$(td).html(detail_btn.replace('{{ DEFAULT_PK }}', rowData.id));
- }},
+ }},
+ {targets: 4, createdCell: function (td, cellData) {
+ var innerHtml = "";
+ if (cellData !== 0) {
+ innerHtml = "" + cellData + "";
+ } else {
+ innerHtml = "" + cellData + "";
+ }
+ $(td).html('' + innerHtml + '');
+ }},
+ {targets: 5, createdCell: function (td, cellData) {
+ var innerHtml = "";
+ if (cellData !== 0) {
+ innerHtml = "" + cellData + "";
+ } else {
+ innerHtml = "" + cellData + "";
+ }
+ $(td).html('' + innerHtml + '');
+ }},
{targets: 6, createdCell: function (td, cellData, rowData) {
-{# var script_btn = '{% trans "Script" %}'.replace('{{ DEFAULT_PK }}', cellData);#}
+ var val = 0;
+ var innerHtml = "";
+ var total = rowData.assets_amount;
+ var reachable = rowData.reachable_amount;
+ if (total !== 0) {
+ val = reachable/total * 100;
+ }
+
+ if (val === 100) {
+ innerHtml = "" + val + "% ";
+ } else {
+ innerHtml = "" + val + "% ";
+ }
+ $(td).html('' + innerHtml + '');
+
+ }},
+ {targets: 8, createdCell: function (td, cellData, rowData) {
var update_btn = '{% trans "Update" %}'.replace('{{ DEFAULT_PK }}', cellData);
var del_btn = '{% trans "Delete" %}'.replace('{{ DEFAULT_PK }}', cellData);
-{# $(td).html(script_btn + update_btn + del_btn)#}
$(td).html(update_btn + del_btn)
}}],
ajax_url: '{% url "api-assets:admin-user-list" %}',
columns: [{data: function(){return ""}}, {data: "name" }, {data: "username" }, {data: "assets_amount" },
- {data: "unreachable_amount"}, {data: "comment" }, {data: "id" }]
+ {data: "reachable_amount"}, {data: "unreachable_amount"}, {data: "id"}, {data: "comment" }, {data: "id" }]
};
jumpserver.initDataTable(options);
})
diff --git a/apps/assets/templates/assets/asset_group_detail.html b/apps/assets/templates/assets/asset_group_detail.html
index be8655d20..ab44200c4 100644
--- a/apps/assets/templates/assets/asset_group_detail.html
+++ b/apps/assets/templates/assets/asset_group_detail.html
@@ -3,8 +3,8 @@
{% load i18n %}
{% block custom_head_css_js %}
-
-
+
+
{% endblock %}
{% block content %}
diff --git a/apps/assets/templates/assets/cluster_assets.html b/apps/assets/templates/assets/cluster_assets.html
index 72f4ed81f..b194a5034 100644
--- a/apps/assets/templates/assets/cluster_assets.html
+++ b/apps/assets/templates/assets/cluster_assets.html
@@ -3,8 +3,8 @@
{% load i18n %}
{% block custom_head_css_js %}
-
-
+
+
@@ -94,7 +94,7 @@
|
@@ -204,7 +204,12 @@ $(document).ready(function () {
addAssets(assets_id);
})
.on('click', '#btn-test-assets', function () {
- console.log('ok');
+ var the_url = "{% url 'api-assets:cluster-test-connective' pk=cluster.id %}";
+ APIUpdateAttr({
+ url: the_url,
+ method: 'GET',
+ success_message: "{% trans 'Task has been send, seen left assets status' %}"
+ });
})
{% endblock %}
diff --git a/apps/assets/templates/assets/cluster_create_update.html b/apps/assets/templates/assets/cluster_create_update.html
index b36af260e..38fc6e3de 100644
--- a/apps/assets/templates/assets/cluster_create_update.html
+++ b/apps/assets/templates/assets/cluster_create_update.html
@@ -3,8 +3,8 @@
{% load static %}
{% load bootstrap3 %}
{% block custom_head_css_js %}
-
-
+
+
{% endblock %}
{% block content %}
@@ -40,6 +40,7 @@
{% bootstrap_field form.admin_user layout="horizontal" %}
+ {% bootstrap_field form.system_users layout="horizontal" %}
@@ -69,10 +70,7 @@
{% block custom_foot_js %}
{% endblock %}
\ No newline at end of file
diff --git a/apps/assets/templates/assets/cluster_detail.html b/apps/assets/templates/assets/cluster_detail.html
index cd2ecd25e..1200fc1fb 100644
--- a/apps/assets/templates/assets/cluster_detail.html
+++ b/apps/assets/templates/assets/cluster_detail.html
@@ -3,8 +3,8 @@
{% load i18n %}
{% block custom_head_css_js %}
-
-
+
+
{% endblock %}
{% block content %}
diff --git a/apps/assets/templates/assets/system_user_asset.html b/apps/assets/templates/assets/system_user_asset.html
index 75e1b264d..4d20bbe5c 100644
--- a/apps/assets/templates/assets/system_user_asset.html
+++ b/apps/assets/templates/assets/system_user_asset.html
@@ -3,8 +3,8 @@
{% load i18n %}
{% block custom_head_css_js %}
-
-
+
+
{% endblock %}
{% block content %}
diff --git a/apps/assets/urls/api_urls.py b/apps/assets/urls/api_urls.py
index 24e7a6c3b..9ad0861af 100644
--- a/apps/assets/urls/api_urls.py
+++ b/apps/assets/urls/api_urls.py
@@ -27,10 +27,10 @@ urlpatterns = [
url(r'^v1/groups/(?P
[0-9a-zA-Z\-]{36})/assets/add/$',
api.GroupAddAssetsApi.as_view(), name='group-add-assets'),
# update the Cluster, and add or delete the assets to the Cluster
- url(r'^v1/cluster/(?P[0-9a-zA-Z\-]{36})/assets/$',
- api.ClusterUpdateAssetsApi.as_view(), name='cluster-update-assets'),
url(r'^v1/cluster/(?P[0-9a-zA-Z\-]{36})/assets/$',
api.ClusterAddAssetsApi.as_view(), name='cluster-add-assets'),
+ url(r'^v1/cluster/(?P[0-9a-zA-Z\-]{36})/assets/connective/$',
+ api.ClusterTestAssetsAliveApi.as_view(), name='cluster-test-connective'),
url(r'^v1/admin-user/(?P[0-9a-zA-Z\-]{36})/clusters/$',
api.AdminUserAddClustersApi.as_view(), name='admin-user-add-clusters'),
url(r'^v1/admin-user/(?P[0-9a-zA-Z\-]{36})/connective/$',
diff --git a/apps/assets/views/system_user.py b/apps/assets/views/system_user.py
index 885ae12b7..b79827598 100644
--- a/apps/assets/views/system_user.py
+++ b/apps/assets/views/system_user.py
@@ -109,8 +109,8 @@ class SystemUserAssetView(AdminUserRequiredMixin, DetailView):
def get_context_data(self, **kwargs):
context = {
- 'app': 'assets',
- 'action': 'System user asset',
+ 'app': _('assets'),
+ 'action': _('System user asset'),
}
kwargs.update(context)
return super().get_context_data(**kwargs)
diff --git a/apps/locale/zh/LC_MESSAGES/django.po b/apps/locale/zh/LC_MESSAGES/django.po
index 2177a1d2f..73b6e0721 100644
--- a/apps/locale/zh/LC_MESSAGES/django.po
+++ b/apps/locale/zh/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Jumpserver 0.3.3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-01-02 18:11+0800\n"
+"POT-Creation-Date: 2018-01-05 17:27+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: ibuler \n"
"Language-Team: Jumpserver team\n"
@@ -36,7 +36,7 @@ msgstr "主机级别管理用户,如果没有设置则默认使用集群级别
#: assets/forms.py:40 assets/forms.py:68
msgid "You need set a admin user if cluster not have"
-msgstr ""
+msgstr "集群没有管理用户,你需要为集群设置管理用户或设置一个主机级别的管理用户"
#: assets/forms.py:54
msgid "Default using cluster admin user"
@@ -61,7 +61,9 @@ msgstr "选择资产"
msgid "Port"
msgstr "端口"
-#: assets/forms.py:124 assets/templates/assets/asset_group_list.html:16
+#: assets/forms.py:124 assets/models/asset.py:161
+#: assets/templates/assets/admin_user_list.html:24
+#: assets/templates/assets/asset_group_list.html:16
#: assets/templates/assets/system_user_list.html:26 perms/models.py:17
#: perms/templates/perms/asset_permission_create_update.html:40
#: perms/templates/perms/asset_permission_list.html:28 templates/_nav.html:22
@@ -75,7 +77,22 @@ msgstr "端口"
msgid "Asset"
msgstr "资产"
-#: assets/forms.py:159 assets/forms.py:219 assets/forms.py:278
+#: assets/forms.py:156 perms/forms.py:40
+#: perms/templates/perms/asset_permission_detail.html:144 users/forms.py:243
+msgid "Select system users"
+msgstr "选择系统用户"
+
+#: assets/forms.py:158
+#: assets/templates/assets/_asset_group_bulk_update_modal.html:22
+#: assets/templates/assets/cluster_list.html:22
+msgid "System users"
+msgstr "系统用户"
+
+#: assets/forms.py:160
+msgid "Selected system users will be create at cluster assets"
+msgstr "选择的系统用户将会在该集群资产上创建"
+
+#: assets/forms.py:168 assets/forms.py:243 assets/forms.py:302
#: assets/models/cluster.py:18 assets/models/group.py:20
#: assets/models/user.py:28 assets/templates/assets/admin_user_detail.html:56
#: assets/templates/assets/admin_user_list.html:22
@@ -105,18 +122,36 @@ msgid "Name"
msgstr "名称"
#: assets/forms.py:174
+msgid "Cluster level admin user"
+msgstr "集群级别管理用户"
+
+#: assets/forms.py:195
msgid "Password or private key password"
msgstr "密码或秘钥不合法"
-#: assets/forms.py:202 assets/forms.py:260 assets/forms.py:321
+#: assets/forms.py:196 assets/models/user.py:30 users/forms.py:16
+#: users/forms.py:24 users/templates/users/login.html:56
+#: users/templates/users/reset_password.html:52
+#: users/templates/users/user_create.html:11
+#: users/templates/users/user_password_update.html:40
+#: users/templates/users/user_profile_update.html:40
+#: users/templates/users/user_pubkey_update.html:40
+msgid "Password"
+msgstr "密码"
+
+#: assets/forms.py:199 users/models/user.py:46
+msgid "Private key"
+msgstr "ssh私钥"
+
+#: assets/forms.py:224 assets/forms.py:284 assets/forms.py:345
msgid "Invalid private key"
msgstr "ssh密钥不合法"
-#: assets/forms.py:212
+#: assets/forms.py:235
msgid "Password and private key file must be input one"
msgstr "密码和私钥, 必须输入一个"
-#: assets/forms.py:220 assets/forms.py:279 assets/models/user.py:29
+#: assets/forms.py:244 assets/forms.py:303 assets/models/user.py:29
#: assets/templates/assets/admin_user_detail.html:60
#: assets/templates/assets/admin_user_list.html:23
#: assets/templates/assets/system_user_detail.html:57
@@ -132,14 +167,28 @@ msgstr "密码和私钥, 必须输入一个"
msgid "Username"
msgstr "用户名"
-#: assets/forms.py:267 assets/forms.py:327
+#: assets/forms.py:291 assets/forms.py:351
msgid "Auth info required, private_key or password"
msgstr "密钥和密码必须填写一个"
-#: assets/forms.py:282
+#: assets/forms.py:306
msgid " Select clusters"
msgstr "选择集群"
+#: assets/forms.py:311
+msgid "If auto push checked, system user will be create at cluster assets"
+msgstr "如果选择了自动推送,系统用户将会创建在集群资产上"
+
+#: assets/forms.py:312
+msgid "Auto push system user to asset"
+msgstr "自动推送系统用户到资产"
+
+#: assets/forms.py:313
+msgid ""
+"High level will be using login asset as default, if user was granted more "
+"than 2 system user"
+msgstr "高优先级的系统用户将会作为默认登录用户"
+
#: assets/models/asset.py:24
msgid "In use"
msgstr "使用中"
@@ -216,8 +265,8 @@ msgstr "主机名"
msgid "Asset groups"
msgstr "资产组"
-#: assets/models/asset.py:47 assets/models/user.py:215
-#: assets/templates/assets/asset_detail.html:85
+#: assets/models/asset.py:47 assets/models/cluster.py:40
+#: assets/models/user.py:215 assets/templates/assets/asset_detail.html:85
#: assets/templates/assets/asset_list.html:33 templates/_nav.html:24
msgid "Cluster"
msgstr "集群"
@@ -239,7 +288,7 @@ msgid "Asset status"
msgstr "资产状态"
#: assets/models/asset.py:54 assets/models/cluster.py:19
-#: assets/templates/assets/asset_detail.html:73
+#: assets/models/user.py:186 assets/templates/assets/asset_detail.html:73
#: assets/templates/assets/cluster_list.html:20 templates/_nav.html:25
msgid "Admin user"
msgstr "管理用户"
@@ -346,7 +395,7 @@ msgstr "创建日期"
#: assets/models/asset.py:83 assets/models/cluster.py:29
#: assets/models/group.py:23 assets/models/user.py:33
#: assets/templates/assets/admin_user_detail.html:72
-#: assets/templates/assets/admin_user_list.html:26
+#: assets/templates/assets/admin_user_list.html:28
#: assets/templates/assets/asset_detail.html:157
#: assets/templates/assets/asset_group_list.html:17
#: assets/templates/assets/cluster_detail.html:97
@@ -391,7 +440,7 @@ msgstr "外网"
msgid "Operator"
msgstr "运营商"
-#: assets/models/cluster.py:36 assets/models/group.py:33
+#: assets/models/cluster.py:36 assets/models/group.py:34
msgid "Default"
msgstr "默认"
@@ -403,20 +452,15 @@ msgstr "系统"
msgid "Default Cluster"
msgstr "默认Cluster"
-#: assets/models/group.py:33
+#: assets/models/group.py:30 perms/models.py:18
+#: perms/templates/perms/asset_permission_list.html:29 templates/_nav.html:23
+msgid "Asset group"
+msgstr "资产组"
+
+#: assets/models/group.py:34
msgid "Default asset group"
msgstr "默认资产组"
-#: assets/models/user.py:30 users/forms.py:16 users/forms.py:24
-#: users/templates/users/login.html:56
-#: users/templates/users/reset_password.html:52
-#: users/templates/users/user_create.html:11
-#: users/templates/users/user_password_update.html:40
-#: users/templates/users/user_profile_update.html:40
-#: users/templates/users/user_pubkey_update.html:40
-msgid "Password"
-msgstr "密码"
-
#: assets/models/user.py:31
msgid "SSH private key"
msgstr "ssh密钥"
@@ -427,7 +471,7 @@ msgstr "ssh公钥"
#: assets/models/user.py:216
msgid "Priority"
-msgstr ""
+msgstr "优先级"
#: assets/models/user.py:217 assets/templates/assets/system_user_detail.html:61
msgid "Protocol"
@@ -447,6 +491,19 @@ msgstr "Sudo"
msgid "Shell"
msgstr "Shell"
+#: assets/models/user.py:265 perms/models.py:19
+#: perms/templates/perms/asset_permission_detail.html:136
+#: perms/templates/perms/asset_permission_list.html:30 templates/_nav.html:26
+#: terminal/backends/command/models.py:12 terminal/models.py:94
+#: terminal/templates/terminal/command_list.html:48
+#: terminal/templates/terminal/command_list.html:74
+#: terminal/templates/terminal/session_list.html:49
+#: terminal/templates/terminal/session_list.html:73
+#: users/templates/users/user_granted_asset.html:50
+#: users/templates/users/user_group_granted_asset.html:52
+msgid "System user"
+msgstr "系统用户"
+
#: assets/models/utils.py:29
#, python-format
msgid "%(value)s is not an even number"
@@ -477,27 +534,30 @@ msgid "Update assets hardware info period"
msgstr "定期更新资产硬件信息"
#: assets/tasks.py:189
-#, python-format
msgid "Test admin user connectability period: {}"
msgstr "定期测试管理用户可以连接性: {}"
#: assets/tasks.py:203
-#, python-format
msgid "Test admin user connectability: {}"
msgstr "测试管理用户可连接性: {}"
-#: assets/tasks.py:289
-#, python-format
+#: assets/tasks.py:212
+msgid "Test asset connectability"
+msgstr "测试资产可连接性"
+
+#: assets/tasks.py:283
+msgid "Test system user connectability: {}"
+msgstr "测试系统用户可连接性: {}"
+
+#: assets/tasks.py:295
msgid "Test system user connectability period: {}"
msgstr "测试系统用户可连接性: {}"
-#: assets/tasks.py:363
-#, python-format
+#: assets/tasks.py:372
msgid "Push system user to cluster assets: {}"
msgstr "推送系统用户到资产: {}"
-#: assets/tasks.py:384
-#, python-format
+#: assets/tasks.py:393
msgid "Push system user to cluster assets period: {}->{}"
msgstr "定期推送系统用户到资产: {}->{}"
@@ -529,11 +589,6 @@ msgstr "资产管理"
msgid "Select Asset"
msgstr "选择资产"
-#: assets/templates/assets/_asset_group_bulk_update_modal.html:22
-#: assets/templates/assets/cluster_list.html:22
-msgid "System users"
-msgstr "系统用户"
-
#: assets/templates/assets/_asset_group_bulk_update_modal.html:24
msgid "Select System Users"
msgstr "选择系统用户"
@@ -593,7 +648,7 @@ msgstr "自动生成秘钥"
#: assets/templates/assets/_system_user.html:65
#: assets/templates/assets/asset_create.html:32
#: assets/templates/assets/asset_update.html:47
-#: assets/templates/assets/cluster_create_update.html:45
+#: assets/templates/assets/cluster_create_update.html:46
#: perms/templates/perms/asset_permission_create_update.html:45
#: terminal/templates/terminal/terminal_update.html:40
msgid "Other"
@@ -604,7 +659,7 @@ msgstr "其它"
#: assets/templates/assets/asset_bulk_update.html:23
#: assets/templates/assets/asset_create.html:40
#: assets/templates/assets/asset_update.html:56
-#: assets/templates/assets/cluster_create_update.html:53
+#: assets/templates/assets/cluster_create_update.html:54
#: perms/templates/perms/asset_permission_create_update.html:67
#: terminal/templates/terminal/terminal_update.html:45
#: users/templates/users/_user.html:49
@@ -623,7 +678,7 @@ msgstr "重置"
#: assets/templates/assets/asset_create.html:41
#: assets/templates/assets/asset_list.html:55
#: assets/templates/assets/asset_update.html:57
-#: assets/templates/assets/cluster_create_update.html:54
+#: assets/templates/assets/cluster_create_update.html:55
#: perms/templates/perms/asset_permission_create_update.html:68
#: terminal/templates/terminal/terminal_update.html:46
#: users/templates/users/_user.html:50
@@ -673,11 +728,13 @@ msgid "Type"
msgstr "类型"
#: assets/templates/assets/admin_user_assets.html:63
-#: assets/templates/assets/asset_group_detail.html:49
-#: assets/templates/assets/cluster_assets.html:55
-#: terminal/templates/terminal/terminal_list.html:35
-msgid "Alive"
-msgstr "在线"
+#: assets/templates/assets/admin_user_list.html:25
+#: assets/templates/assets/asset_detail.html:376
+#: assets/templates/assets/asset_list.html:38
+#: assets/templates/assets/system_user_asset.html:55
+#: assets/templates/assets/system_user_list.html:27
+msgid "Reachable"
+msgstr "可连接"
#: assets/templates/assets/admin_user_assets.html:75
#: assets/templates/assets/cluster_assets.html:68
@@ -731,18 +788,19 @@ msgstr "使用集群管理用户"
msgid "Confirm"
msgstr "确认"
-#: assets/templates/assets/admin_user_list.html:24
-#: assets/templates/assets/cluster_list.html:21
-#: users/templates/users/_select_user_modal.html:17
-msgid "Asset num"
-msgstr "资产数量"
-
-#: assets/templates/assets/admin_user_list.html:25
+#: assets/templates/assets/admin_user_list.html:26
#: assets/templates/assets/system_user_list.html:28
msgid "Unreachable"
msgstr "不可达"
#: assets/templates/assets/admin_user_list.html:27
+#: assets/templates/assets/system_user_list.html:29
+#: ops/templates/ops/adhoc_history.html:54
+#: ops/templates/ops/task_history.html:57
+msgid "Ratio"
+msgstr "比例"
+
+#: assets/templates/assets/admin_user_list.html:29
#: assets/templates/assets/asset_group_detail.html:50
#: assets/templates/assets/asset_group_list.html:18
#: assets/templates/assets/asset_list.html:39
@@ -760,7 +818,7 @@ msgstr "不可达"
msgid "Action"
msgstr "动作"
-#: assets/templates/assets/admin_user_list.html:47
+#: assets/templates/assets/admin_user_list.html:83
#: assets/templates/assets/asset_group_detail.html:172
#: assets/templates/assets/asset_group_list.html:42
#: assets/templates/assets/asset_list.html:95
@@ -774,7 +832,7 @@ msgstr "动作"
msgid "Update"
msgstr "更新"
-#: assets/templates/assets/admin_user_list.html:48
+#: assets/templates/assets/admin_user_list.html:84
#: assets/templates/assets/asset_group_list.html:43
#: assets/templates/assets/asset_list.html:96
#: assets/templates/assets/cluster_list.html:44
@@ -852,17 +910,16 @@ msgstr "添加到资产组"
msgid "Update successfully!"
msgstr "更新成功"
-#: assets/templates/assets/asset_detail.html:376
-#: assets/templates/assets/asset_list.html:38
-#: assets/templates/assets/system_user_asset.html:55
-#: assets/templates/assets/system_user_list.html:27
-msgid "Reachable"
-msgstr "可连接"
-
#: assets/templates/assets/asset_group_detail.html:16
msgid "Group assets"
msgstr "组下资产"
+#: assets/templates/assets/asset_group_detail.html:49
+#: assets/templates/assets/cluster_assets.html:55
+#: terminal/templates/terminal/terminal_list.html:35
+msgid "Alive"
+msgstr "在线"
+
#: assets/templates/assets/asset_group_detail.html:62
msgid "Add assets to this group"
msgstr "添加资产到该组"
@@ -1016,6 +1073,11 @@ msgstr "添加资产到"
msgid "Select asset"
msgstr "选择资产"
+#: assets/templates/assets/cluster_assets.html:211
+#: assets/templates/assets/system_user_asset.html:162
+msgid "Task has been send, seen left assets status"
+msgstr "任务已下发,查看左侧资产状态"
+
#: assets/templates/assets/cluster_create_update.html:41
#: users/templates/users/user_profile.html:20
msgid "Settings"
@@ -1025,6 +1087,11 @@ msgstr "设置"
msgid "Create Cluster"
msgstr "创建Cluster"
+#: assets/templates/assets/cluster_list.html:21
+#: users/templates/users/_select_user_modal.html:17
+msgid "Asset num"
+msgstr "资产数量"
+
#: assets/templates/assets/cluster_list.html:85
msgid "This will delete the selected cluster"
msgstr "删除选择Cluster"
@@ -1068,10 +1135,6 @@ msgstr "推送"
msgid "Task has been send, Go to ops task list seen result"
msgstr "任务已下发,查看ops任务列表"
-#: assets/templates/assets/system_user_asset.html:162
-msgid "Task has been send, seen left assets status"
-msgstr "任务已下发,查看左侧资产状态"
-
#: assets/templates/assets/system_user_detail.html:22
msgid "Attached assets"
msgstr "关联的资产"
@@ -1092,12 +1155,6 @@ msgstr "集群"
msgid "Add to cluster"
msgstr "添加到集群"
-#: assets/templates/assets/system_user_list.html:29
-#: ops/templates/ops/adhoc_history.html:54
-#: ops/templates/ops/task_history.html:57
-msgid "Ratio"
-msgstr "比例"
-
#: assets/templates/assets/system_user_list.html:130
msgid "This will delete the selected System Users !!!"
msgstr "删除选择系统用户"
@@ -1161,6 +1218,7 @@ msgid "Cluster list"
msgstr "集群列表"
#: assets/views/cluster.py:38 assets/views/cluster.py:65
+#: assets/views/system_user.py:112
msgid "assets"
msgstr "资产管理"
@@ -1197,6 +1255,10 @@ msgstr "更新系统用户"
msgid "System user detail"
msgstr "系统用户详情"
+#: assets/views/system_user.py:113
+msgid "System user asset"
+msgstr "系统用户集群资产"
+
#: common/mixins.py:29
msgid "is discard"
msgstr ""
@@ -1475,8 +1537,8 @@ msgstr "选择用户"
#: perms/forms.py:18 perms/models.py:15
#: perms/templates/perms/asset_permission_create_update.html:36
#: perms/templates/perms/asset_permission_list.html:26 templates/_nav.html:12
-#: templates/_user_profile.html:14 terminal/backends/command/models.py:10
-#: terminal/models.py:92 terminal/templates/terminal/command_list.html:32
+#: terminal/backends/command/models.py:10 terminal/models.py:92
+#: terminal/templates/terminal/command_list.html:32
#: terminal/templates/terminal/command_list.html:72
#: terminal/templates/terminal/session_list.html:33
#: terminal/templates/terminal/session_list.html:71 users/models/user.py:31
@@ -1488,11 +1550,6 @@ msgstr "用户"
msgid "Select user groups"
msgstr "选择用户组"
-#: perms/forms.py:40 perms/templates/perms/asset_permission_detail.html:144
-#: users/forms.py:243
-msgid "Select system users"
-msgstr "选择系统用户"
-
#: perms/forms.py:52
msgid "User or group at least one required"
msgstr "用户和组至少需要选一个"
@@ -1518,23 +1575,6 @@ msgstr "资产 {}(组 {}) 所在集群 {} 不包含系统用户 [{}] 请检查\n
msgid "User group"
msgstr "用户组"
-#: perms/models.py:18 perms/templates/perms/asset_permission_list.html:29
-#: templates/_nav.html:23
-msgid "Asset group"
-msgstr "资产组"
-
-#: perms/models.py:19 perms/templates/perms/asset_permission_detail.html:136
-#: perms/templates/perms/asset_permission_list.html:30 templates/_nav.html:26
-#: terminal/backends/command/models.py:12 terminal/models.py:94
-#: terminal/templates/terminal/command_list.html:48
-#: terminal/templates/terminal/command_list.html:74
-#: terminal/templates/terminal/session_list.html:49
-#: terminal/templates/terminal/session_list.html:73
-#: users/templates/users/user_granted_asset.html:50
-#: users/templates/users/user_group_granted_asset.html:52
-msgid "System user"
-msgstr "系统用户"
-
#: perms/models.py:21 perms/templates/perms/asset_permission_detail.html:86
#: users/models/user.py:50 users/templates/users/user_detail.html:94
#: users/templates/users/user_profile.html:96
@@ -1676,16 +1716,38 @@ msgstr "欢迎使用Jumpserver开源跳板机系统"
msgid "Help"
msgstr "帮助"
-#: templates/_header_bar.html:24 templates/_user_profile.html:29
+#: templates/_header_bar.html:33 templates/_nav_user.html:9
+#: users/templates/users/_user.html:42
+#: users/templates/users/user_password_update.html:37
+#: users/templates/users/user_profile.html:17
+#: users/templates/users/user_profile_update.html:37
+#: users/templates/users/user_profile_update.html:57
+#: users/templates/users/user_pubkey_update.html:37 users/views/user.py:323
+msgid "Profile"
+msgstr "个人信息"
+
+#: templates/_header_bar.html:34
+msgid "Profile settings"
+msgstr "个人信息设置"
+
+#: templates/_header_bar.html:38
+msgid "Admin page"
+msgstr "管理页面"
+
+#: templates/_header_bar.html:40
+msgid "User page"
+msgstr "用户页面"
+
+#: templates/_header_bar.html:43
msgid "Logout"
msgstr "注销登录"
-#: templates/_header_bar.html:28 users/templates/users/login.html:42
+#: templates/_header_bar.html:47 users/templates/users/login.html:42
#: users/templates/users/login.html:61
msgid "Login"
msgstr "登录"
-#: templates/_header_bar.html:41 templates/_nav.html:4
+#: templates/_header_bar.html:60 templates/_nav.html:4
msgid "Dashboard"
msgstr "仪表盘"
@@ -1767,36 +1829,10 @@ msgstr "离线会话"
msgid "Command"
msgstr "命令"
-#: templates/_nav.html:73
-msgid "Visit us"
-msgstr "访问官网"
-
#: templates/_nav_user.html:4
msgid "My assets"
msgstr "我的资产"
-#: templates/_nav_user.html:9 templates/_user_profile.html:19
-#: users/templates/users/_user.html:42
-#: users/templates/users/user_password_update.html:37
-#: users/templates/users/user_profile.html:17
-#: users/templates/users/user_profile_update.html:37
-#: users/templates/users/user_profile_update.html:57
-#: users/templates/users/user_pubkey_update.html:37 users/views/user.py:323
-msgid "Profile"
-msgstr "个人信息"
-
-#: templates/_user_profile.html:20
-msgid "Profile settings"
-msgstr "个人信息设置"
-
-#: templates/_user_profile.html:24
-msgid "Admin page"
-msgstr "管理页面"
-
-#: templates/_user_profile.html:26
-msgid "User page"
-msgstr "用户页面"
-
#: templates/captcha/image.html:3
msgid "Play CAPTCHA as audio file"
msgstr "语言播放验证码"
@@ -1822,17 +1858,13 @@ msgstr "输出"
msgid "Session"
msgstr "会话"
-#: terminal/forms.py:15
-msgid "A unique addr of every terminal, user browser can arrive it"
-msgstr ""
-
#: terminal/forms.py:16
msgid "Coco ssh listen port"
-msgstr ""
+msgstr "SSH 监听端口"
#: terminal/forms.py:17
msgid "Coco http/ws listen port"
-msgstr ""
+msgstr "Http/Websocket 监听端口"
#: terminal/models.py:15
msgid "Remote Address"
@@ -1852,7 +1884,7 @@ msgstr "在线会话"
#: terminal/models.py:69
msgid "CPU Usage"
-msgstr ""
+msgstr "CPU使用"
#: terminal/models.py:70
msgid "Memory Used"
@@ -1860,11 +1892,11 @@ msgstr "内存使用"
#: terminal/models.py:71
msgid "Connections"
-msgstr "连接"
+msgstr "连接数"
#: terminal/models.py:72
msgid "Threads"
-msgstr "线程"
+msgstr "线程数"
#: terminal/models.py:73
msgid "Boot Time"
@@ -1884,7 +1916,7 @@ msgstr "参数"
#: terminal/templates/terminal/command_list.html:88
msgid "Goto"
-msgstr ""
+msgstr "转到"
#: terminal/templates/terminal/session_detail.html:17
#: terminal/views/session.py:115
@@ -2151,10 +2183,6 @@ msgstr "微信"
msgid "Enable OTP"
msgstr "二次验证"
-#: users/models/user.py:46
-msgid "Private key"
-msgstr "ssh私钥"
-
#: users/models/user.py:47 users/templates/users/user_password_update.html:43
#: users/templates/users/user_profile.html:71
#: users/templates/users/user_profile_update.html:43
@@ -2311,13 +2339,13 @@ msgstr "已发送邮件到用户邮箱"
msgid ""
"This will reset the user's password. A password-reset email will be sent to "
"the user\\'s mailbox."
-msgstr ""
+msgstr "重设密码邮件将会发送到用户邮箱"
#: users/templates/users/user_detail.html:348
msgid ""
"The reset-ssh-public-key E-mail has been sent successfully. Please inform "
"the user to update his new ssh public key."
-msgstr ""
+msgstr "重设秘钥邮件将会发送到用户邮箱"
#: users/templates/users/user_detail.html:349
#: users/templates/users/user_profile.html:144
@@ -2573,7 +2601,7 @@ msgstr "编辑用户组"
#: users/views/login.py:54
msgid "Please enable cookies and try again."
-msgstr ""
+msgstr "设置你的浏览器支持cookie"
#: users/views/login.py:83
msgid "Logout success"
@@ -2653,6 +2681,9 @@ msgstr "密码更新"
msgid "Public key update"
msgstr "秘钥更新"
+#~ msgid "Visit us"
+#~ msgstr "访问官网"
+
#~ msgid "Audits"
#~ msgstr "审计中心"
diff --git a/apps/ops/templates/ops/adhoc_detail.html b/apps/ops/templates/ops/adhoc_detail.html
index 6134b1ce4..abbb16c04 100644
--- a/apps/ops/templates/ops/adhoc_detail.html
+++ b/apps/ops/templates/ops/adhoc_detail.html
@@ -3,9 +3,9 @@
{% load i18n %}
{% block custom_head_css_js %}
-
+
-
+
{% endblock %}
{% block content %}
diff --git a/apps/ops/templates/ops/adhoc_history.html b/apps/ops/templates/ops/adhoc_history.html
index 95689fb89..802e8e8f6 100644
--- a/apps/ops/templates/ops/adhoc_history.html
+++ b/apps/ops/templates/ops/adhoc_history.html
@@ -3,9 +3,9 @@
{% load i18n %}
{% block custom_head_css_js %}
-
+
-
+
{% endblock %}
{% block content %}
diff --git a/apps/ops/templates/ops/adhoc_history_detail.html b/apps/ops/templates/ops/adhoc_history_detail.html
index 5439ae571..f3d18f8ba 100644
--- a/apps/ops/templates/ops/adhoc_history_detail.html
+++ b/apps/ops/templates/ops/adhoc_history_detail.html
@@ -3,9 +3,9 @@
{% load i18n %}
{% block custom_head_css_js %}
-
+
-
+
{% endblock %}
{% block content %}
diff --git a/apps/ops/templates/ops/task_adhoc.html b/apps/ops/templates/ops/task_adhoc.html
index 2b26b058c..2d2c4de5c 100644
--- a/apps/ops/templates/ops/task_adhoc.html
+++ b/apps/ops/templates/ops/task_adhoc.html
@@ -3,9 +3,9 @@
{% load i18n %}
{% block custom_head_css_js %}
-
+
-
+
{% endblock %}
{% block content %}
diff --git a/apps/ops/templates/ops/task_detail.html b/apps/ops/templates/ops/task_detail.html
index dab26d1dc..40d7be1f5 100644
--- a/apps/ops/templates/ops/task_detail.html
+++ b/apps/ops/templates/ops/task_detail.html
@@ -3,9 +3,9 @@
{% load i18n %}
{% block custom_head_css_js %}
-
+
-
+
{% endblock %}
{% block content %}
diff --git a/apps/ops/templates/ops/task_history.html b/apps/ops/templates/ops/task_history.html
index 6aebce351..cc620237d 100644
--- a/apps/ops/templates/ops/task_history.html
+++ b/apps/ops/templates/ops/task_history.html
@@ -3,9 +3,9 @@
{% load i18n %}
{% block custom_head_css_js %}
-
+
-
+
{% endblock %}
{% block content %}
diff --git a/apps/perms/templates/perms/asset_permission_asset.html b/apps/perms/templates/perms/asset_permission_asset.html
index 4ae615f1f..5e9472099 100644
--- a/apps/perms/templates/perms/asset_permission_asset.html
+++ b/apps/perms/templates/perms/asset_permission_asset.html
@@ -3,8 +3,8 @@
{% load i18n %}
{% block custom_head_css_js %}
-
-
+
+
{% endblock %}
{% block content %}
diff --git a/apps/perms/templates/perms/asset_permission_detail.html b/apps/perms/templates/perms/asset_permission_detail.html
index 5b945a900..b4bcc92a5 100644
--- a/apps/perms/templates/perms/asset_permission_detail.html
+++ b/apps/perms/templates/perms/asset_permission_detail.html
@@ -3,8 +3,8 @@
{% load i18n %}
{% block custom_head_css_js %}
-
-
+
+
{% endblock %}
{% block content %}
diff --git a/apps/perms/templates/perms/asset_permission_user.html b/apps/perms/templates/perms/asset_permission_user.html
index 8f24cbeea..f694bf4fd 100644
--- a/apps/perms/templates/perms/asset_permission_user.html
+++ b/apps/perms/templates/perms/asset_permission_user.html
@@ -3,8 +3,8 @@
{% load i18n %}
{% block custom_head_css_js %}
-
-
+
+
{% endblock %}
{% block content %}
diff --git a/apps/templates/_base_create_update.html b/apps/templates/_base_create_update.html
index fdc5269e2..a38a6133d 100644
--- a/apps/templates/_base_create_update.html
+++ b/apps/templates/_base_create_update.html
@@ -3,8 +3,8 @@
{% load static %}
{% load bootstrap3 %}
{% block custom_head_css_js %}
-
-
+
+
{% block custom_head_css_js_create %} {% endblock %}
{% endblock %}
diff --git a/apps/templates/_base_list.html b/apps/templates/_base_list.html
index 6385994e0..191ba8151 100644
--- a/apps/templates/_base_list.html
+++ b/apps/templates/_base_list.html
@@ -3,8 +3,8 @@
{% load i18n %}
{% block custom_head_css_js %}
-
-
+
+
{% endblock %}
{% block content %}
diff --git a/apps/terminal/forms.py b/apps/terminal/forms.py
index 6ef787594..5b6278c02 100644
--- a/apps/terminal/forms.py
+++ b/apps/terminal/forms.py
@@ -12,7 +12,6 @@ class TerminalForm(forms.ModelForm):
model = Terminal
fields = ['name', 'remote_addr', 'ssh_port', 'http_port', 'comment']
help_texts = {
- 'remote_addr': _('A unique addr of every terminal, user browser can arrive it'),
'ssh_port': _("Coco ssh listen port"),
'http_port': _("Coco http/ws listen port"),
}
diff --git a/apps/terminal/templates/terminal/session_detail.html b/apps/terminal/templates/terminal/session_detail.html
index 6ff576d6e..88fb756ac 100644
--- a/apps/terminal/templates/terminal/session_detail.html
+++ b/apps/terminal/templates/terminal/session_detail.html
@@ -45,9 +45,9 @@
ID |
- Command |
+ {% trans 'Command' %} |
|
- Datetime |
+ {% trans 'Datetime' %} |
@@ -84,24 +84,24 @@
{% if object.is_finished %}
-
- {% trans 'Replay session' %}: |
-
+ |
+ {% trans 'Replay session' %}: |
+
-
+
|
{% else %}
-
- {% trans 'Monitor session' %}: |
-
-
-
-
- |
-
-
+
+
+
+
+
+
+
+
+
{% trans 'Terminate session' %}: |
diff --git a/apps/terminal/templates/terminal/session_list.html b/apps/terminal/templates/terminal/session_list.html
index d5ed0d54b..fb4eb290d 100644
--- a/apps/terminal/templates/terminal/session_list.html
+++ b/apps/terminal/templates/terminal/session_list.html
@@ -97,7 +97,7 @@
{% if session.is_finished %}
{% trans "Replay" %}
{% else %}
- {% trans "Monitor" %}
+
{% trans "Terminate" %}
{% endif %}
|
diff --git a/apps/terminal/templates/terminal/terminal_update.html b/apps/terminal/templates/terminal/terminal_update.html
index 624dc6e7e..9ebd9d2d8 100644
--- a/apps/terminal/templates/terminal/terminal_update.html
+++ b/apps/terminal/templates/terminal/terminal_update.html
@@ -3,8 +3,8 @@
{% load static %}
{% load bootstrap3 %}
{% block custom_head_css_js %}
-
-
+
+
{% endblock %}
diff --git a/apps/users/templates/users/user_detail.html b/apps/users/templates/users/user_detail.html
index 2298b885e..3feb7d2f6 100644
--- a/apps/users/templates/users/user_detail.html
+++ b/apps/users/templates/users/user_detail.html
@@ -3,9 +3,9 @@
{% load i18n %}
{% block custom_head_css_js %}
-
+
-
+
{% endblock %}
{% block content %}
diff --git a/apps/users/templates/users/user_group_create_update.html b/apps/users/templates/users/user_group_create_update.html
index 2a5727244..5c388e668 100644
--- a/apps/users/templates/users/user_group_create_update.html
+++ b/apps/users/templates/users/user_group_create_update.html
@@ -3,8 +3,8 @@
{% load i18n %}
{% load bootstrap3 %}
{% block custom_head_css_js %}
-
-
+
+
{% endblock %}
{% block content %}
diff --git a/apps/users/templates/users/user_group_detail.html b/apps/users/templates/users/user_group_detail.html
index f13395764..da461ec6b 100644
--- a/apps/users/templates/users/user_group_detail.html
+++ b/apps/users/templates/users/user_group_detail.html
@@ -3,11 +3,11 @@
{% load i18n %}
{% block custom_head_css_js %}
-
+
-
+
{% endblock %}
diff --git a/apps/users/templates/users/user_group_granted_asset.html b/apps/users/templates/users/user_group_granted_asset.html
index b0171e221..7944101f2 100644
--- a/apps/users/templates/users/user_group_granted_asset.html
+++ b/apps/users/templates/users/user_group_granted_asset.html
@@ -4,8 +4,8 @@
{% load i18n %}
{% block custom_head_css_js %}
-
-
+
+
{% endblock %}
{% block content %}
diff --git a/apps/users/views/login.py b/apps/users/views/login.py
index a83789563..fabc39b7d 100644
--- a/apps/users/views/login.py
+++ b/apps/users/views/login.py
@@ -82,6 +82,7 @@ class UserLogoutView(TemplateView):
context = {
'title': _('Logout success'),
'messages': _('Logout success, return login page'),
+ 'interval': 1,
'redirect_url': reverse('users:login'),
'auto_redirect': True,
}