From 30fd51c268e94be7cd04746cbfb5d382215970ea Mon Sep 17 00:00:00 2001 From: ibuler Date: Tue, 6 Sep 2016 21:39:21 +0800 Subject: [PATCH] Asset group detail --- apps/assets/models.py | 64 ++-- .../templates/assets/asset_group_detail.html | 199 ++++++++++++ .../templates/assets/asset_group_list.html | 2 +- .../templates/assets/delete_confirm.html | 15 + apps/assets/views.py | 35 ++- apps/locale/zh/LC_MESSAGES/django.po | 294 ++++++++++-------- apps/static/css/jumpserver.css | 1 + apps/templates/_list_base.html | 1 - apps/templates/_pagination.html | 5 - apps/users/templates/users/user_detail.html | 15 +- 10 files changed, 463 insertions(+), 168 deletions(-) create mode 100644 apps/assets/templates/assets/asset_group_detail.html create mode 100644 apps/assets/templates/assets/delete_confirm.html diff --git a/apps/assets/models.py b/apps/assets/models.py index 4d76b320e..3fd399a26 100644 --- a/apps/assets/models.py +++ b/apps/assets/models.py @@ -2,19 +2,10 @@ from __future__ import unicode_literals, absolute_import from django.db import models +import logging from django.utils.translation import ugettext_lazy as _ - -class AssetGroup(models.Model): - name = models.CharField(max_length=64, unique=True, null=True, blank=True, verbose_name=_('Name')) - created_by = models.CharField(max_length=32, null=True, blank=True, verbose_name=_('Created by')) - comment = models.TextField(blank=True, verbose_name=_('Comment')) - - def __unicode__(self): - return self.name - - class Meta: - db_table = 'asset_group' +logger = logging.getLogger(__name__) class IDC(models.Model): @@ -24,7 +15,7 @@ class IDC(models.Model): phone = models.CharField(max_length=32, blank=True, verbose_name=_('Phone')) address = models.CharField(max_length=128, blank=True, verbose_name=_("Address")) network = models.TextField(blank=True, verbose_name=_('Network')) - date_created = models.DateField(auto_now=True, null=True, verbose_name=_('Date added')) + date_created = models.DateTimeField(auto_now=True, null=True, verbose_name=_('Date added')) operator = models.CharField(max_length=32, blank=True, verbose_name=_('Operator')) created_by = models.CharField(max_length=32, blank=True, verbose_name=_('Created by')) comment = models.TextField(blank=True, verbose_name=_('Comment')) @@ -47,7 +38,7 @@ class AssetExtend(models.Model): return self.name class Meta: - db_table = 'assetextend' + db_table = 'asset_extend' class AdminUser(models.Model): @@ -65,10 +56,10 @@ class AdminUser(models.Model): return self.name class Meta: - db_table = 'adminuser' + db_table = 'admin_user' -class SysUser(models.Model): +class SystemUser(models.Model): PROTOCOL_CHOICES = ( ('ssh', 'ssh'), ('telnet', 'telnet'), @@ -94,7 +85,44 @@ class SysUser(models.Model): return self.name class Meta: - db_table = 'sysuser' + db_table = 'system_user' + + +class AssetGroup(models.Model): + name = models.CharField(max_length=64, unique=True, verbose_name=_('Name')) + system_users = models.ManyToManyField(SystemUser, related_name='asset_groups', blank=True) + created_by = models.CharField(max_length=32, blank=True, verbose_name=_('Created by')) + date_created = models.DateTimeField(auto_now=True, null=True, verbose_name=_('Date added')) + comment = models.TextField(blank=True, verbose_name=_('Comment')) + + def __unicode__(self): + return self.name + + class Meta: + db_table = 'asset_group' + + @classmethod + def initial(cls): + asset_group = cls(name=_('Default'), commont=_('Default asset group')) + asset_group.save() + + @classmethod + def generate_fake(cls, count=100): + from random import seed + import forgery_py + from django.db import IntegrityError + + seed() + for i in range(count): + group = cls(name=forgery_py.name.full_name(), + comment=forgery_py.lorem_ipsum.sentence(), + created_by='Fake') + try: + group.save() + logger.debug('Generate fake asset group: %s' % group.name) + except IntegrityError: + print('Error continue') + continue class Asset(models.Model): @@ -106,8 +134,8 @@ class Asset(models.Model): groups = models.ManyToManyField(AssetGroup, related_name='assets', verbose_name=_('Asset groups')) username = models.CharField(max_length=16, null=True, blank=True, verbose_name=_('Admin user')) password = models.CharField(max_length=256, null=True, blank=True, verbose_name=_("Admin password")) - admin_user = models.ForeignKey(AdminUser, null=True, blank=True, on_delete=models.SET_NULL, verbose_name=_("Admin user")) - sys_user = models.ManyToManyField(SysUser, null=True, blank=True, verbose_name=_("System User")) + admin_user = models.ForeignKey(AdminUser, null=True, on_delete=models.SET_NULL, verbose_name=_("Admin user")) + system_user = models.ManyToManyField(SystemUser, blank=True, verbose_name=_("System User")) idc = models.ForeignKey(IDC, null=True, blank=True, on_delete=models.SET_NULL, verbose_name=_('IDC')) mac_addr = models.CharField(max_length=20, null=True, blank=True, verbose_name=_("Mac address")) brand = models.CharField(max_length=64, null=True, blank=True, verbose_name=_('Brand')) diff --git a/apps/assets/templates/assets/asset_group_detail.html b/apps/assets/templates/assets/asset_group_detail.html new file mode 100644 index 000000000..643f7608d --- /dev/null +++ b/apps/assets/templates/assets/asset_group_detail.html @@ -0,0 +1,199 @@ +{% extends 'base.html' %} +{% load common_tags %} +{% load users_tags %} +{% load static %} +{% load i18n %} + +{% block custom_head_css_js %} + + +{% endblock %} +{% block content %} +
+
+
+
+ +
+
+
+
+ {{ asset_group.name }} +
+ + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + +
{% trans 'Name' %}:{{ asset_group.name }}
{% trans 'Date created' %}:{{ asset_group.date_created }}
{% trans 'Created by' %}:{{ asset_group.created_by }}
{% trans 'Comment' %}:{{ asset_group.comment }}
+
+
+ +
+
+ {{ asset_group.name }} +
+ + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + +
{% trans 'Name' %}:{{ asset_group.name }}
{% trans 'Date created' %}:{{ asset_group.date_created }}
{% trans 'Created by' %}:{{ asset_group.created_by }}
{% trans 'Comment' %}:{{ asset_group.comment }}
+
+
+
+
+
+
+ {% trans 'Associate asset user(system/admin)' %} +
+
+ + + + + + + + + + + + + + + + + + {% for group in user.groups.all %} + + + + + {% endfor %} + +
{% trans 'repush system user' %}: + + + +
+ +
+ +
+ +
{{ group.name }} + +
+
+
+
+
+
+
+
+
+ + +{% endblock %} +{% block custom_foot_js %} + +{% endblock %} \ No newline at end of file diff --git a/apps/assets/templates/assets/asset_group_list.html b/apps/assets/templates/assets/asset_group_list.html index b69bfa8b9..c5a4380ba 100644 --- a/apps/assets/templates/assets/asset_group_list.html +++ b/apps/assets/templates/assets/asset_group_list.html @@ -27,7 +27,7 @@ {{ asset_group.assets.count }} - {{ asset_group.comment }} + {{ asset_group.comment|truncatewords:8 }} {% trans 'Update' %} {% trans 'Delete' %} diff --git a/apps/assets/templates/assets/delete_confirm.html b/apps/assets/templates/assets/delete_confirm.html new file mode 100644 index 000000000..777d1dbf9 --- /dev/null +++ b/apps/assets/templates/assets/delete_confirm.html @@ -0,0 +1,15 @@ +{% load i18n %} + + + + + {% trans 'Confirm delete' %} + + +
+ {% csrf_token %} +

Are you sure you want to delete "{{ object.name }}"?

+ +
+ + \ No newline at end of file diff --git a/apps/assets/views.py b/apps/assets/views.py index efe698f13..a88cafe67 100644 --- a/apps/assets/views.py +++ b/apps/assets/views.py @@ -6,6 +6,8 @@ from django.shortcuts import get_object_or_404 from django.views.generic import TemplateView, ListView from django.urls import reverse_lazy from django.views.generic.edit import CreateView, DeleteView, FormView, UpdateView +from django.conf import settings +from django.db.models import Q from django.views.generic import TemplateView, ListView from django.views.generic.edit import CreateView, DeleteView, FormView, UpdateView from django.urls import reverse_lazy @@ -70,20 +72,45 @@ class AssetGroupCreateView(CreateView): class AssetGroupListView(ListView): model = AssetGroup + paginate_by = settings.CONFIG.DISPLAY_PER_PAGE context_object_name = 'asset_group_list' template_name = 'assets/asset_group_list.html' def get_context_data(self, **kwargs): context = { 'app': _('Assets'), - 'action': _('Asset group list') + 'action': _('Asset group list'), + 'keyword': self.request.GET.get('keyword', '') } kwargs.update(context) return super(AssetGroupListView, self).get_context_data(**kwargs) + def get_queryset(self): + self.queryset = super(AssetGroupListView, self).get_queryset() + self.keyword = keyword = self.request.GET.get('keyword', '') + self.sort = sort = self.request.GET.get('sort', '-date_created') + + if keyword: + self.queryset = self.queryset.filter(Q(name__icontains=keyword) | + Q(comment__icontains=keyword)) + + if sort: + self.queryset = self.queryset.order_by(sort) + return self.queryset + class AssetGroupDetailView(DetailView): - pass + template_name = 'assets/asset_group_detail.html' + model = AssetGroup + context_object_name = 'asset_group' + + def get_context_data(self, **kwargs): + context = { + 'app': _('Assets'), + 'action': _('Asset group detail') + } + kwargs.update(context) + return super(AssetGroupDetailView, self).get_context_data(**kwargs) class AssetGroupUpdateView(UpdateView): @@ -103,4 +130,6 @@ class AssetGroupUpdateView(UpdateView): class AssetGroupDeleteView(DeleteView): - pass + template_name = 'assets/delete_confirm.html' + model = AssetGroup + success_url = reverse_lazy('assets:asset-group-list') diff --git a/apps/locale/zh/LC_MESSAGES/django.po b/apps/locale/zh/LC_MESSAGES/django.po index 255849ad4..ccb101d78 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: 2016-09-06 15:08+0800\n" +"POT-Creation-Date: 2016-09-06 19:12+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: ibuler \n" "Language-Team: Jumpserver team\n" @@ -21,7 +21,7 @@ msgstr "" msgid "Select asset groups" msgstr "添加到资产组" -#: assets/forms.py:25 assets/models.py:144 templates/_nav.html:21 +#: assets/forms.py:25 assets/models.py:171 templates/_nav.html:21 msgid "Asset" msgstr "资产" @@ -29,67 +29,79 @@ msgstr "资产" msgid "Select assets" msgstr "选择资产" -#: assets/models.py:9 assets/models.py:21 assets/models.py:54 -#: assets/models.py:76 assets/templates/assets/asset_group_list.html:12 -#: users/models.py:60 users/models.py:107 -#: users/templates/users/user_detail.html:69 +#: assets/models.py:12 assets/models.py:48 assets/models.py:81 +#: assets/models.py:103 assets/templates/assets/asset_group_detail.html:63 +#: assets/templates/assets/asset_group_list.html:12 users/models.py:60 +#: users/models.py:107 users/templates/users/user_detail.html:69 #: users/templates/users/user_list.html:12 msgid "Name" msgstr "名称" -#: assets/models.py:10 assets/models.py:29 assets/models.py:42 -#: assets/models.py:61 assets/models.py:90 assets/models.py:125 -#: assets/models.py:145 users/models.py:122 +#: assets/models.py:13 assets/models.py:56 assets/models.py:69 +#: assets/models.py:88 assets/models.py:117 assets/models.py:152 +#: assets/models.py:172 users/models.py:122 #: users/templates/users/user_detail.html:101 msgid "Created by" msgstr "创建者" -#: assets/models.py:11 assets/models.py:30 assets/models.py:44 -#: assets/models.py:62 assets/models.py:91 assets/models.py:128 -#: assets/models.py:147 assets/templates/assets/asset_group_list.html:14 -#: users/models.py:61 users/models.py:118 -#: users/templates/users/user_detail.html:113 +#: assets/models.py:14 assets/models.py:54 assets/models.py:154 +msgid "Date added" +msgstr "加入日期" + +#: assets/models.py:15 assets/models.py:57 assets/models.py:71 +#: assets/models.py:89 assets/models.py:118 assets/models.py:155 +#: assets/models.py:174 assets/templates/assets/asset_group_detail.html:75 +#: assets/templates/assets/asset_group_list.html:14 users/models.py:61 +#: users/models.py:118 users/templates/users/user_detail.html:113 msgid "Comment" msgstr "备注" -#: assets/models.py:22 +#: assets/models.py:25 +#, fuzzy +#| msgid "As default" +msgid "Default" +msgstr "默认使用" + +#: assets/models.py:25 +#, fuzzy +#| msgid "Create asset group" +msgid "Default asset group" +msgstr "创建资产组" + +#: assets/models.py:49 msgid "Bandwidth" msgstr "带宽" -#: assets/models.py:23 +#: assets/models.py:50 msgid "Contact" msgstr "联系人" -#: assets/models.py:24 users/models.py:113 +#: assets/models.py:51 users/models.py:113 #: users/templates/users/user_detail.html:82 msgid "Phone" msgstr "手机" -#: assets/models.py:25 +#: assets/models.py:52 msgid "Address" msgstr "地址" -#: assets/models.py:26 +#: assets/models.py:53 msgid "Network" msgstr "网络" -#: assets/models.py:27 assets/models.py:127 -msgid "Date added" -msgstr "加入日期" - -#: assets/models.py:28 +#: assets/models.py:55 msgid "Operator" msgstr "运营商" -#: assets/models.py:40 assets/models.py:142 +#: assets/models.py:67 assets/models.py:169 msgid "KEY" msgstr "KEY" -#: assets/models.py:41 assets/models.py:143 +#: assets/models.py:68 assets/models.py:170 msgid "VALUE" msgstr "VALUE" -#: assets/models.py:55 assets/models.py:77 users/forms.py:13 +#: assets/models.py:82 assets/models.py:104 users/forms.py:13 #: users/models.py:106 users/templates/users/login.html:53 #: users/templates/users/user_detail.html:73 #: users/templates/users/user_list.html:13 @@ -97,7 +109,7 @@ msgstr "VALUE" msgid "Username" msgstr "用户名" -#: assets/models.py:56 assets/models.py:78 users/forms.py:15 +#: assets/models.py:83 assets/models.py:105 users/forms.py:15 #: users/templates/users/login.html:56 #: users/templates/users/reset_password.html:52 #: users/templates/users/user_create.html:8 @@ -107,149 +119,151 @@ msgstr "用户名" msgid "Password" msgstr "密码" -#: assets/models.py:57 assets/models.py:80 +#: assets/models.py:84 assets/models.py:107 msgid "SSH private key" msgstr "ssh密钥" -#: assets/models.py:58 assets/models.py:82 +#: assets/models.py:85 assets/models.py:109 msgid "As default" msgstr "默认使用" -#: assets/models.py:59 assets/models.py:84 +#: assets/models.py:86 assets/models.py:111 msgid "Auto update pass/key" msgstr "自动更新密码/密钥" -#: assets/models.py:79 +#: assets/models.py:106 msgid "Protocol" msgstr "协议" -#: assets/models.py:81 +#: assets/models.py:108 msgid "SSH public key" msgstr "ssh公钥" -#: assets/models.py:83 +#: assets/models.py:110 msgid "Auto push" msgstr "自动推送" -#: assets/models.py:85 +#: assets/models.py:112 msgid "Sudo" msgstr "Sudo" -#: assets/models.py:86 +#: assets/models.py:113 msgid "Shell" msgstr "Shell" -#: assets/models.py:87 templates/_header_bar.html:41 templates/_nav.html:4 +#: assets/models.py:114 templates/_header_bar.html:41 templates/_nav.html:4 msgid "Home" msgstr "仪表盘" -#: assets/models.py:88 +#: assets/models.py:115 msgid "Uid" msgstr "Uid" -#: assets/models.py:101 +#: assets/models.py:128 msgid "IP" msgstr "IP" -#: assets/models.py:102 +#: assets/models.py:129 msgid "Other IP" msgstr "其它IP" -#: assets/models.py:103 +#: assets/models.py:130 msgid "Remote card IP" msgstr "远控卡IP" -#: assets/models.py:104 +#: assets/models.py:131 msgid "Hostname" msgstr "用户名" -#: assets/models.py:105 +#: assets/models.py:132 msgid "Port" msgstr "端口" -#: assets/models.py:106 +#: assets/models.py:133 msgid "Asset groups" msgstr "用户组" -#: assets/models.py:107 assets/models.py:109 templates/_nav.html:24 +#: assets/models.py:134 assets/models.py:136 templates/_nav.html:24 msgid "Admin user" msgstr "管理用户" -#: assets/models.py:108 +#: assets/models.py:135 msgid "Admin password" msgstr "管理员密码" -#: assets/models.py:110 +#: assets/models.py:137 msgid "System User" msgstr "系统用户" -#: assets/models.py:111 templates/_nav.html:23 +#: assets/models.py:138 templates/_nav.html:23 msgid "IDC" msgstr "机房" -#: assets/models.py:112 +#: assets/models.py:139 msgid "Mac address" msgstr "Mac地址" -#: assets/models.py:113 +#: assets/models.py:140 msgid "Brand" msgstr "品牌" -#: assets/models.py:114 +#: assets/models.py:141 msgid "CPU" msgstr "CPU" -#: assets/models.py:115 +#: assets/models.py:142 msgid "Memory" msgstr "内存" -#: assets/models.py:116 +#: assets/models.py:143 msgid "Disk" msgstr "硬盘" -#: assets/models.py:117 +#: assets/models.py:144 msgid "OS" msgstr "操作系统" -#: assets/models.py:118 +#: assets/models.py:145 msgid "Cabinet number" msgstr "机柜编号" -#: assets/models.py:119 +#: assets/models.py:146 msgid "Cabinet position" msgstr "机柜层号" -#: assets/models.py:120 +#: assets/models.py:147 msgid "Asset number" msgstr "资产编号" -#: assets/models.py:121 +#: assets/models.py:148 msgid "Asset status" msgstr "资产状态" -#: assets/models.py:122 +#: assets/models.py:149 msgid "Asset type" msgstr "系统类型" -#: assets/models.py:123 +#: assets/models.py:150 msgid "Asset environment" msgstr "资产环境" -#: assets/models.py:124 +#: assets/models.py:151 msgid "Serial number" msgstr "序列号" -#: assets/models.py:126 +#: assets/models.py:153 msgid "Is active" msgstr "是否激活" #: assets/templates/assets/asset_group_create.html:16 -#: assets/templates/assets/asset_group_list.html:5 assets/views.py:60 -#: assets/views.py:98 +#: assets/templates/assets/asset_group_list.html:5 assets/views.py:62 +#: assets/views.py:117 msgid "Create asset group" msgstr "创建资产组" #: assets/templates/assets/asset_group_create.html:50 +#: assets/templates/assets/asset_group_detail.html:124 +#: assets/templates/assets/asset_group_detail.html:132 #: users/templates/users/_user.html:70 #: users/templates/users/user_detail.html:162 #: users/templates/users/user_detail.html:170 @@ -264,6 +278,65 @@ msgstr "重置" msgid "Submit" msgstr "提交" +#: assets/templates/assets/asset_group_detail.html:18 +msgid "Detail" +msgstr "" + +#: assets/templates/assets/asset_group_detail.html:20 +#, fuzzy +#| msgid "Asset group list" +msgid "Asset group assets" +msgstr "资产组列表" + +#: assets/templates/assets/asset_group_detail.html:28 +#: templates/_header_bar.html:8 users/templates/users/user_detail.html:29 +msgid "Search" +msgstr "搜索" + +#: assets/templates/assets/asset_group_detail.html:67 +#, fuzzy +#| msgid "Date added" +msgid "Date create" +msgstr "加入日期" + +#: assets/templates/assets/asset_group_detail.html:71 +#, fuzzy +#| msgid "Created by" +msgid "Create by" +msgstr "创建者" + +#: assets/templates/assets/asset_group_detail.html:86 +#: users/templates/users/user_detail.html:124 +msgid "Quick modify" +msgstr "快速修改" + +#: assets/templates/assets/asset_group_detail.html:121 +#: users/templates/users/reset_password.html:45 +#: users/templates/users/user_detail.html:159 users/utils.py:98 +msgid "Reset password" +msgstr "重置密码" + +#: assets/templates/assets/asset_group_detail.html:129 +#: users/templates/users/user_detail.html:167 +msgid "Reset ssh key" +msgstr "重置密钥" + +#: assets/templates/assets/asset_group_detail.html:143 templates/_nav.html:13 +#: users/models.py:109 users/templates/users/user_detail.html:181 +#: users/templates/users/user_list.html:15 +msgid "User group" +msgstr "用户组" + +#: assets/templates/assets/asset_group_detail.html:151 users/forms.py:34 +#: users/forms.py:54 users/templates/users/user_detail.html:189 +msgid "Join user groups" +msgstr "添加到用户组" + +#: assets/templates/assets/asset_group_detail.html:160 +#: users/templates/users/user_detail.html:198 +msgid "Join" +msgstr "加入" + #: assets/templates/assets/asset_group_list.html:13 #: users/templates/users/user_list.html:16 msgid "Asset num" @@ -303,19 +376,20 @@ msgstr "批量导出" msgid "Create asset" msgstr "创建资产" -#: assets/views.py:59 assets/views.py:78 assets/views.py:97 +#: assets/templates/assets/delete_confirm.html:6 +#: users/templates/users/user_delete_confirm.html:6 +msgid "Confirm delete" +msgstr "确认删除" + +#: assets/views.py:61 assets/views.py:81 assets/views.py:116 #: templates/_nav.html:18 msgid "Assets" msgstr "资产管理" -#: assets/views.py:79 +#: assets/views.py:82 msgid "Asset group list" msgstr "资产组列表" -#: templates/_header_bar.html:8 users/templates/users/user_detail.html:29 -msgid "Search" -msgstr "搜索" - #: templates/_header_bar.html:14 msgid "Welcome to use Jumpserver system" msgstr "欢迎使用Jumpserver开源跳板机系统" @@ -333,8 +407,8 @@ msgstr "注销登录" msgid "Login" msgstr "登录" -#: templates/_nav.html:9 users/views.py:50 users/views.py:63 users/views.py:103 -#: users/views.py:120 users/views.py:145 users/views.py:158 +#: templates/_nav.html:9 users/views.py:92 users/views.py:105 +#: users/views.py:145 users/views.py:162 users/views.py:187 users/views.py:200 msgid "Users" msgstr "用户管理" @@ -342,12 +416,6 @@ msgstr "用户管理" msgid "User" msgstr "用户" -#: templates/_nav.html:13 users/models.py:109 -#: users/templates/users/user_detail.html:181 -#: users/templates/users/user_list.html:15 -msgid "User group" -msgstr "用户组" - #: templates/_nav.html:22 msgid "Asset group" msgstr "资产组" @@ -408,11 +476,6 @@ msgstr "" msgid "Captcha" msgstr "验证码" -#: users/forms.py:34 users/forms.py:54 -#: users/templates/users/user_detail.html:189 -msgid "Join user groups" -msgstr "添加到用户组" - #: users/models.py:102 users/models.py:225 msgid "Administrator" msgstr "管理员" @@ -459,7 +522,7 @@ msgid "System" msgstr "系统" #: users/templates/users/_user.html:17 users/templates/users/user_list.html:5 -#: users/views.py:63 +#: users/views.py:105 msgid "Create user" msgstr "创建用户" @@ -484,11 +547,6 @@ msgstr "输入您的邮箱, 将会发一封重置短信邮件到您的邮箱中" msgid "Captcha invalid" msgstr "验证码错误" -#: users/templates/users/reset_password.html:45 -#: users/templates/users/user_detail.html:159 users/utils.py:98 -msgid "Reset password" -msgstr "重置密码" - #: users/templates/users/reset_password.html:55 msgid "Password again" msgstr "再次输入密码" @@ -501,11 +559,7 @@ msgstr "设置" msgid "Reset link will be generated and sent to the user. " msgstr "生成重置密码连接,通过邮件发送给用户" -#: users/templates/users/user_delete_confirm.html:6 -msgid "Confirm delete" -msgstr "确认删除" - -#: users/templates/users/user_detail.html:18 users/views.py:120 +#: users/templates/users/user_detail.html:18 users/views.py:162 msgid "User detail" msgstr "用户详情" @@ -525,19 +579,7 @@ msgstr "创建日期" msgid "Last login" msgstr "最后登录" -#: users/templates/users/user_detail.html:124 -msgid "Quick modify" -msgstr "快速修改" - -#: users/templates/users/user_detail.html:167 -msgid "Reset ssh key" -msgstr "重置密钥" - -#: users/templates/users/user_detail.html:198 -msgid "Join" -msgstr "加入" - -#: users/templates/users/user_group_create.html:16 users/views.py:158 +#: users/templates/users/user_group_create.html:16 users/views.py:200 msgid "Create user group" msgstr "创建用户组" @@ -546,18 +588,10 @@ msgstr "创建用户组" msgid "Active" msgstr "激活" -#: users/templates/users/user_update.html:3 users/views.py:103 +#: users/templates/users/user_update.html:3 users/views.py:145 msgid "Update user" msgstr "编辑用户" -#: users/urls.py:23 -msgid "Logout success" -msgstr "退出登录成功" - -#: users/urls.py:24 -msgid "Logout success, return login page" -msgstr "退出登录成功,返回到登录页面" - #: users/utils.py:47 msgid "Begin to generate ssh private key ..." msgstr "开始生成ssh密钥" @@ -659,45 +693,53 @@ msgstr "" "
\n" " " -#: users/views.py:50 +#: users/views.py:62 +msgid "Logout success" +msgstr "退出登录成功" + +#: users/views.py:63 +msgid "Logout success, return login page" +msgstr "退出登录成功,返回到登录页面" + +#: users/views.py:92 msgid "User list" msgstr "用户列表" -#: users/views.py:59 +#: users/views.py:101 #, python-format msgid "Create user %s success." msgstr "创建用户 %s 成功" -#: users/views.py:145 +#: users/views.py:187 msgid "User group list" msgstr "用户组列表" -#: users/views.py:190 +#: users/views.py:232 msgid "Email address invalid, input again" msgstr "邮箱地址错误,重新输入" -#: users/views.py:201 +#: users/views.py:243 msgid "Send reset password message" msgstr "发送重置密码邮件" -#: users/views.py:202 +#: users/views.py:244 msgid "Send reset password mail success, login your mail box and follow it " msgstr "" "发送重置邮件成功, 请登录邮箱查看, 按照提示操作 (如果没收到,请等待3-5分钟)" -#: users/views.py:214 +#: users/views.py:256 msgid "Reset password success" msgstr "重置密码成功" -#: users/views.py:215 +#: users/views.py:257 msgid "Reset password success, return to login page" msgstr "重置密码成功,返回到登录页面" -#: users/views.py:231 users/views.py:244 +#: users/views.py:273 users/views.py:286 msgid "Token invalid or expired" msgstr "Token错误或失效" -#: users/views.py:240 +#: users/views.py:282 msgid "Password not same" msgstr "密码不一致" diff --git a/apps/static/css/jumpserver.css b/apps/static/css/jumpserver.css index e293dc860..7948a33df 100644 --- a/apps/static/css/jumpserver.css +++ b/apps/static/css/jumpserver.css @@ -38,6 +38,7 @@ th a { color: white; } +.select2-selection--single, .select2-selection--multiple { border: 1px solid #e5e6e7 !important; cursor: text !important; diff --git a/apps/templates/_list_base.html b/apps/templates/_list_base.html index 11be26259..b0f1524c0 100644 --- a/apps/templates/_list_base.html +++ b/apps/templates/_list_base.html @@ -22,7 +22,6 @@
- {# left button add #} {% block content_left_head %} {% endblock %}