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 @@

{% trans 'Settings' %}

{% bootstrap_field form.admin_user layout="horizontal" %} + {% bootstrap_field form.system_users layout="horizontal" %}

{% trans 'Other' %}

@@ -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 %} - - - + + {% else %} - - - - - + + + + + + + + + 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, }
{% trans 'Replay session' %}: +
{% trans 'Replay session' %}: - +
{% 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 %}