diff --git a/apps/assets/forms.py b/apps/assets/forms.py
index d58b8c93d..398f8841d 100644
--- a/apps/assets/forms.py
+++ b/apps/assets/forms.py
@@ -1,7 +1,7 @@
# coding:utf-8
from django import forms
-from .models import IDC, Asset, AssetGroup, AdminUser, SystemUser
+from .models import IDC, Asset, AssetGroup, AdminUser, SystemUser, Tag
from django.utils.translation import gettext_lazy as _
@@ -23,13 +23,35 @@ from django.utils.translation import gettext_lazy as _
#
class AssetCreateForm(forms.ModelForm):
+ tags = forms.CharField(label=_('Tags'), widget=forms.TextInput(attrs={'id': 'tags'}),
+ help_text='Use `,` split')
+
+ def __init__(self, *args, **kwargs):
+ instance = kwargs.get('instance')
+
+ if instance:
+ initial = kwargs.get('initial', {})
+ tags = Tag.objects.filter(asset=instance)
+ tags_value = ','.join([tag.value for tag in tags])
+ initial['tags'] = tags_value
+ super(AssetCreateForm, self).__init__(*args, **kwargs)
+
+ def _save_m2m(self):
+ tags = self.cleaned_data['tags']
+
+ if tags:
+ value_list = tags.split(',')
+ self.instance.tags.all().delete()
+ Tag.objects.bulk_create(
+ [Tag(value=value) for value in value_list]
+ )
+
class Meta:
model = Asset
fields = [
- 'hostname', 'ip', 'port', 'type', 'zone', 'comment', 'admin_user', 'system_users', 'idc', 'groups'
+ 'hostname', 'ip', 'port', 'type', 'comment', 'admin_user', 'system_users', 'idc', 'groups'
]
-
widgets = {
'groups': forms.SelectMultiple(attrs={'class': 'select2',
'data-placeholder': _('Select asset groups')}),
diff --git a/apps/assets/models.py b/apps/assets/models.py
index 633c416b8..e0cb5dd2a 100644
--- a/apps/assets/models.py
+++ b/apps/assets/models.py
@@ -1,6 +1,7 @@
# coding:utf-8
from __future__ import unicode_literals, absolute_import
+import functools
from django.db import models
import logging
from django.utils.translation import ugettext_lazy as _
@@ -25,6 +26,10 @@ class IDC(models.Model):
def __unicode__(self):
return self.name
+ @classmethod
+ def initial(cls):
+ return cls.objects.get_or_create(name=_('Default'), created_by=_('System'), comment=_('Default IDC'))[0]
+
class Meta:
db_table = 'idc'
@@ -77,13 +82,12 @@ class AssetExtend(models.Model):
(_('env'), _('Production')),
(_('env'), _('Development')),
(_('env'), _('Testing')),
- (_('zone'), _('Default')),
):
cls.objects.create(key=k, value=v, created_by='System')
class Meta:
db_table = 'asset_extend'
- index_together = ('key', 'value')
+ unique_together = ('key', 'value')
class AdminUser(models.Model):
@@ -272,12 +276,16 @@ class AssetGroup(models.Model):
continue
-class Asset(models.Model):
- STATUS_DEFAULT = AssetExtend.objects.get_or_create(key='status', value=_('In use'))
- TYPE_DEFAULT = AssetExtend.objects.get_or_create(key='type', value=_('Server'))
- ZONE_DEFAULT = AssetExtend.objects.get_or_create(key='zone', value=_('Default'))
+def get_default_extend(key, value):
+ return AssetExtend.objects.get_or_create(key=key, value=value)[0]
- ip = models.CharField(max_length=32, verbose_name=_('IP'))
+
+def get_default_idc():
+ return IDC.initial()
+
+
+class Asset(models.Model):
+ ip = models.GenericIPAddressField(max_length=32, verbose_name=_('IP'))
other_ip = models.CharField(max_length=255, null=True, blank=True, verbose_name=_('Other IP'))
remote_card_ip = models.CharField(max_length=16, null=True, blank=True, verbose_name=_('Remote card IP'))
hostname = models.CharField(max_length=128, blank=True, verbose_name=_('Hostname'))
@@ -286,7 +294,9 @@ class Asset(models.Model):
admin_user = models.ForeignKey(AdminUser, null=True, blank=True, related_name='assets',
on_delete=models.SET_NULL, verbose_name=_("Admin user"))
system_users = models.ManyToManyField(SystemUser, blank=True, related_name='assets', verbose_name=_("System User"))
- idc = models.ForeignKey(IDC, null=True, related_name='assets', on_delete=models.SET_NULL, verbose_name=_('IDC'))
+ idc = models.ForeignKey(IDC, null=True, related_name='assets',
+ on_delete=models.SET_NULL, verbose_name=_('IDC'),
+ default=get_default_idc)
mac_address = 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'))
cpu = models.CharField(max_length=64, null=True, blank=True, verbose_name=_('CPU'))
@@ -296,14 +306,15 @@ class Asset(models.Model):
cabinet_no = models.CharField(max_length=32, null=True, blank=True, verbose_name=_('Cabinet number'))
cabinet_pos = models.IntegerField(null=True, blank=True, verbose_name=_('Cabinet position'))
number = models.CharField(max_length=32, null=True, blank=True, verbose_name=_('Asset number'))
- status = models.ForeignKey(AssetExtend, null=True, blank=True, related_name="status_asset",
- default=STATUS_DEFAULT, verbose_name=_('Asset status'))
+ status = models.ForeignKey(AssetExtend, null=True, blank=True,
+ related_name="status_asset", verbose_name=_('Asset status'),
+ default=functools.partial(get_default_extend, 'status', 'In use'))
type = models.ForeignKey(AssetExtend, null=True, limit_choices_to={'key': 'type'},
- default=TYPE_DEFAULT, related_name="type_asset", verbose_name=_('Asset type'))
+ related_name="type_asset", verbose_name=_('Asset type'),
+ default=functools.partial(get_default_extend, 'type','Server'))
env = models.ForeignKey(AssetExtend, null=True, limit_choices_to={'key': 'env'},
- related_name="env_asset", verbose_name=_('Asset environment'))
- zone = models.ForeignKey(AssetExtend, null=True, limit_choices_to={'key': 'zone'}, default=ZONE_DEFAULT,
- related_name="zone_asset", verbose_name=_('Asset zone'))
+ related_name="env_asset", verbose_name=_('Asset environment'),
+ default=functools.partial(get_default_extend, 'env', 'Production'))
sn = models.CharField(max_length=128, null=True, blank=True, verbose_name=_('Serial number'))
created_by = models.CharField(max_length=32, null=True, blank=True, verbose_name=_('Created by'))
is_active = models.BooleanField(default=True, verbose_name=_('Is active'))
@@ -318,7 +329,7 @@ class Asset(models.Model):
class Meta:
db_table = 'asset'
- index_together = ('ip', 'port')
+ unique_together = ('ip', 'port')
@classmethod
def generate_fake(cls, count=100):
@@ -345,17 +356,15 @@ class Asset(models.Model):
class Tag(models.Model):
- key = models.CharField(max_length=64, blank=True, verbose_name=_('KEY'))
value = models.CharField(max_length=64, verbose_name=_('VALUE'))
- asset = models.ForeignKey(Asset, null=True, blank=True, on_delete=models.SET_NULL, verbose_name=_('Asset'))
- created_by = models.CharField(max_length=32, blank=True, verbose_name=_("Created by"))
- date_created = models.DateTimeField(auto_now=True, null=True)
+ asset = models.ForeignKey(Asset, related_name='tags', on_delete=models.CASCADE, verbose_name=_('Asset'))
def __unicode__(self):
- return self.key
+ return self.value
class Meta:
- db_table = 'label'
+ db_table = 'tag'
+ unique_together = ('value', 'asset')
def initial():
@@ -366,3 +375,8 @@ def initial():
def generate_fake():
for cls in (AssetGroup, IDC, AdminUser, SystemUser, Asset):
cls.generate_fake()
+
+
+def flush_all():
+ for cls in (AssetGroup, AssetExtend, IDC, AdminUser, SystemUser, Asset):
+ cls.objects.all().delete()
diff --git a/apps/assets/templates/assets/asset_create_update.html b/apps/assets/templates/assets/asset_create_update.html
index 85899049b..54aea354a 100644
--- a/apps/assets/templates/assets/asset_create_update.html
+++ b/apps/assets/templates/assets/asset_create_update.html
@@ -16,7 +16,6 @@
{{ form.ip|bootstrap_horizontal }}
{{ form.port|bootstrap_horizontal }}
{{ form.type|bootstrap_horizontal }}
- {{ form.zone|bootstrap_horizontal }}
{% trans 'Group' %}
@@ -30,13 +29,14 @@
{% trans 'Other' %}
-
+{# #}
+ {{ form.tags|bootstrap_horizontal }}
{{ form.comment|bootstrap_horizontal }}
diff --git a/apps/assets/templates/assets/asset_list.html b/apps/assets/templates/assets/asset_list.html
index 71d826010..ec7853e6e 100644
--- a/apps/assets/templates/assets/asset_list.html
+++ b/apps/assets/templates/assets/asset_list.html
@@ -41,8 +41,8 @@
{% endif %}
- {% trans 'Update' %}
- {% trans 'Delete' %}-
+ {% trans 'Update' %}
+ {% trans 'Delete' %}-
{# {% trans 'Delete' %}#}
|
diff --git a/apps/assets/views.py b/apps/assets/views.py
index 33b19e12a..91be7b673 100644
--- a/apps/assets/views.py
+++ b/apps/assets/views.py
@@ -10,6 +10,8 @@ from django.urls import reverse_lazy
from django.contrib.messages.views import SuccessMessageMixin
from django.views.generic.detail import DetailView, SingleObjectMixin
+
+from common.utils import int_seq
from .models import Asset, AssetGroup, IDC, AssetExtend, AdminUser, SystemUser, Tag
from .forms import AssetCreateForm, AssetGroupForm, IDCForm, AdminUserForm, SystemUserForm
from .hands import AdminUserRequiredMixin
@@ -21,6 +23,11 @@ class AssetListView(ListView):
context_object_name = 'asset_list'
template_name = 'assets/asset_list.html'
+ def get_queryset(self):
+ queryset = super(AssetListView, self).get_queryset()
+ queryset = sorted(queryset, key=lambda asset: int_seq(asset.ip.split('.')))
+ return queryset
+
def get_context_data(self, **kwargs):
context = {
'app': 'Assets',
@@ -36,12 +43,10 @@ class AssetCreateView(AdminUserRequiredMixin, CreateView):
template_name = 'assets/asset_create_update.html'
success_url = reverse_lazy('assets:asset-list')
- def form_valid(self, form):
- asset = form.save(commit=False)
- key = self.request.POST.get('key', '')
- value = self.request.POST.get('value', '')
- asset.save()
- return super(AssetCreateView, self).form_valid(form)
+ # def form_valid(self, form):
+ # asset = form.save()
+ # print(self.request.POST.get('tags'))
+ # return super(AssetCreateView, self).form_valid(form)
def get_context_data(self, **kwargs):
context = {
@@ -58,6 +63,7 @@ class AssetUpdateView(UpdateView):
class AssetDeleteView(DeleteView):
model = Asset
+ template_name = 'assets/delete_confirm.html'
success_url = reverse_lazy('assets:asset-list')
diff --git a/apps/common/utils.py b/apps/common/utils.py
index d44167ce3..3546f610f 100644
--- a/apps/common/utils.py
+++ b/apps/common/utils.py
@@ -100,3 +100,10 @@ def search_object_attr(obj, value='', attr_list=None, ignore_case=False):
def get_logger(name=None):
return logging.getLogger('jumpserver.%s' % name)
+
+
+def int_seq(seq):
+ try:
+ return map(int, seq)
+ except ValueError:
+ return seq
diff --git a/apps/locale/zh/LC_MESSAGES/django.po b/apps/locale/zh/LC_MESSAGES/django.po
index 230d1b0f1..b68a30613 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-15 12:13+0800\n"
+"POT-Creation-Date: 2016-09-18 22:57+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: ibuler \n"
"Language-Team: Jumpserver team\n"
@@ -17,62 +17,79 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Language: zh_CN\n"
-#: assets/forms.py:19 assets/forms.py:156 perms/forms.py:27
-#: perms/templates/perms/asset_permission_asset_list.html:139
+#: assets/forms.py:26
+msgid "Tags"
+msgstr ""
+
+#: assets/forms.py:57 assets/forms.py:201
+#: assets/templates/assets/admin_user_detail.html:191 perms/forms.py:27
+#: perms/templates/perms/asset_permission_asset.html:139 users/forms.py:115
msgid "Select asset groups"
msgstr "添加到资产组"
-#: assets/forms.py:26 assets/forms.py:57 assets/forms.py:88
-#: assets/forms.py:146 assets/models.py:322
+#: assets/forms.py:59
+#, fuzzy
+#| msgid "System user"
+msgid "Select asset system users"
+msgstr "系统"
+
+#: assets/forms.py:60
+#, fuzzy
+#| msgid "Select assets"
+msgid "Select asset admin user"
+msgstr "选择资产"
+
+#: assets/forms.py:71 assets/forms.py:102 assets/forms.py:133
+#: assets/forms.py:191 assets/models.py:347
#: perms/templates/perms/asset_permission_create_update.html:40
#: templates/_nav.html:21
msgid "Asset"
msgstr "资产"
-#: assets/forms.py:29 assets/forms.py:60 assets/forms.py:91
-#: assets/forms.py:149 perms/forms.py:25
+#: assets/forms.py:74 assets/forms.py:105 assets/forms.py:136
+#: assets/forms.py:194 perms/forms.py:25 users/forms.py:113
msgid "Select assets"
msgstr "选择资产"
-#: assets/forms.py:79 assets/forms.py:134 assets/forms.py:206
-#: assets/models.py:14 assets/models.py:88 assets/models.py:153
-#: assets/models.py:222 assets/templates/assets/admin_user_detail.html:50
+#: assets/forms.py:124 assets/forms.py:179 assets/forms.py:251
+#: assets/models.py:14 assets/models.py:89 assets/models.py:154
+#: assets/models.py:238 assets/templates/assets/admin_user_detail.html:46
#: assets/templates/assets/admin_user_list.html:10
#: assets/templates/assets/asset_group_detail.html:46
#: assets/templates/assets/asset_group_list.html:12
#: assets/templates/assets/idc_list.html:10
#: assets/templates/assets/system_user_asset_group.html:53
-#: assets/templates/assets/system_user_detail.html:55
+#: assets/templates/assets/system_user_detail.html:51
#: assets/templates/assets/system_user_list.html:10 perms/models.py:19
#: perms/templates/perms/asset_permission_create_update.html:33
#: perms/templates/perms/asset_permission_detail.html:56
#: perms/templates/perms/asset_permission_list.html:12
-#: perms/templates/perms/asset_permission_user_list.html:66
-#: perms/templates/perms/perm_user_asset_list.html:12 users/models.py:20
-#: users/models.py:67 users/templates/users/user_detail.html:54
+#: perms/templates/perms/asset_permission_user.html:66 users/models.py:20
+#: users/models.py:67 users/templates/users/user_asset_permission.html:66
+#: users/templates/users/user_detail.html:58
+#: users/templates/users/user_granted_asset.html:129
#: users/templates/users/user_list.html:12
msgid "Name"
msgstr "名称"
-#: assets/forms.py:96 assets/forms.py:161
+#: assets/forms.py:141 assets/forms.py:206
msgid "If also set private key, use that first"
msgstr "如果设置私钥,则优先使用私钥"
-#: assets/forms.py:135 assets/forms.py:207 assets/models.py:89
-#: assets/models.py:154 assets/templates/assets/admin_user_detail.html:54
+#: assets/forms.py:180 assets/forms.py:252 assets/models.py:90
+#: assets/models.py:155 assets/templates/assets/admin_user_detail.html:50
#: assets/templates/assets/admin_user_list.html:11
-#: assets/templates/assets/system_user_detail.html:59
+#: assets/templates/assets/system_user_detail.html:55
#: assets/templates/assets/system_user_list.html:11
-#: perms/templates/perms/asset_permission_user_list.html:67
-#: perms/templates/perms/perm_user_asset_list.html:13 users/forms.py:13
+#: perms/templates/perms/asset_permission_user.html:67 users/forms.py:13
#: users/models.py:66 users/templates/users/login.html:53
-#: users/templates/users/user_detail.html:58
+#: users/templates/users/user_detail.html:62
#: users/templates/users/user_list.html:13
#: users/templates/users/user_update.html:6
msgid "Username"
msgstr "用户名"
-#: assets/forms.py:152 perms/templates/perms/perm_user_asset_list.html:16
+#: assets/forms.py:197 assets/templates/assets/asset_detail.html:203
#: templates/_nav.html:22
msgid "Asset group"
msgstr "资产组"
@@ -86,7 +103,7 @@ msgid "Contact"
msgstr "联系人"
#: assets/models.py:17 assets/templates/assets/idc_list.html:14
-#: users/models.py:73 users/templates/users/user_detail.html:67
+#: users/models.py:73 users/templates/users/user_detail.html:71
msgid "Phone"
msgstr "手机"
@@ -98,7 +115,7 @@ msgstr "地址"
msgid "Network"
msgstr "网络"
-#: assets/models.py:20 assets/models.py:225 assets/models.py:286
+#: assets/models.py:20 assets/models.py:241 assets/models.py:307
msgid "Date added"
msgstr "加入日期"
@@ -106,35 +123,37 @@ msgstr "加入日期"
msgid "Operator"
msgstr "运营商"
-#: assets/models.py:22 assets/models.py:59 assets/models.py:96
-#: assets/models.py:167 assets/models.py:224 assets/models.py:284
-#: assets/models.py:323 assets/templates/assets/admin_user_detail.html:62
+#: assets/models.py:22 assets/models.py:59 assets/models.py:97
+#: assets/models.py:168 assets/models.py:240 assets/models.py:305
+#: assets/templates/assets/admin_user_detail.html:58
+#: assets/templates/assets/asset_detail.html:127
#: assets/templates/assets/asset_group_detail.html:54
-#: assets/templates/assets/system_user_detail.html:105 perms/models.py:28
-#: perms/templates/perms/asset_permission_detail.html:96 users/models.py:82
-#: users/templates/users/user_detail.html:86
+#: assets/templates/assets/system_user_detail.html:101 perms/models.py:29
+#: perms/templates/perms/asset_permission_detail.html:88 users/models.py:82
+#: users/templates/users/user_detail.html:90
msgid "Created by"
msgstr "创建者"
-#: assets/models.py:23 assets/models.py:61 assets/models.py:94
-#: assets/models.py:168 assets/models.py:226 assets/models.py:287
-#: assets/models.py:325 assets/templates/assets/admin_user_detail.html:66
+#: assets/models.py:23 assets/models.py:61 assets/models.py:95
+#: assets/models.py:169 assets/models.py:242 assets/models.py:308
+#: assets/templates/assets/admin_user_detail.html:62
#: assets/templates/assets/admin_user_list.html:14
+#: assets/templates/assets/asset_detail.html:135
#: assets/templates/assets/asset_group_detail.html:58
#: assets/templates/assets/asset_group_list.html:14
#: assets/templates/assets/system_user_asset_group.html:56
-#: assets/templates/assets/system_user_detail.html:109
-#: assets/templates/assets/system_user_list.html:15 perms/models.py:30
-#: perms/templates/perms/asset_permission_detail.html:100 users/models.py:21
-#: users/models.py:78 users/templates/users/user_detail.html:98
+#: assets/templates/assets/system_user_detail.html:105
+#: assets/templates/assets/system_user_list.html:15 perms/models.py:31
+#: perms/templates/perms/asset_permission_detail.html:92 users/models.py:21
+#: users/models.py:78 users/templates/users/user_detail.html:102
msgid "Comment"
msgstr "备注"
-#: assets/models.py:57 assets/models.py:320
+#: assets/models.py:57
msgid "KEY"
msgstr "KEY"
-#: assets/models.py:58 assets/models.py:321
+#: assets/models.py:58 assets/models.py:346
msgid "VALUE"
msgstr "VALUE"
@@ -199,179 +218,185 @@ msgstr ""
#: assets/models.py:79
#, fuzzy
-msgid "Setting"
+msgid "Testing"
msgstr "设置"
-#: assets/models.py:90 assets/models.py:155 users/forms.py:15
+#: assets/models.py:91 assets/models.py:156 users/forms.py:15
#: users/templates/users/login.html:56
#: users/templates/users/reset_password.html:52
-#: users/templates/users/user_create.html:8
-#: users/templates/users/user_create.html:10
+#: users/templates/users/user_create.html:9
+#: users/templates/users/user_create.html:11
#: users/templates/users/user_update.html:13
#: users/templates/users/user_update.html:15
msgid "Password"
msgstr "密码"
-#: assets/models.py:91 assets/models.py:157
+#: assets/models.py:92 assets/models.py:158
msgid "SSH private key"
msgstr "ssh密钥"
-#: assets/models.py:92 assets/models.py:158
+#: assets/models.py:93 assets/models.py:159
msgid "SSH public key"
msgstr "ssh公钥"
-#: assets/models.py:93 assets/models.py:159
+#: assets/models.py:94 assets/models.py:160
#: assets/templates/assets/admin_user_create_update.html:43
#: assets/templates/assets/system_user_create_update.html:44
-#: assets/templates/assets/system_user_detail.html:75
+#: assets/templates/assets/system_user_detail.html:71
msgid "As default"
msgstr "默认使用"
-#: assets/models.py:156 assets/templates/assets/system_user_detail.html:63
+#: assets/models.py:157 assets/templates/assets/system_user_detail.html:59
msgid "Protocol"
msgstr "协议"
-#: assets/models.py:160
+#: assets/models.py:161
#: assets/templates/assets/system_user_create_update.html:50
-#: assets/templates/assets/system_user_detail.html:67
+#: assets/templates/assets/system_user_detail.html:63
msgid "Auto push"
msgstr "自动推送"
-#: assets/models.py:161
+#: assets/models.py:162
msgid "Auto update pass/key"
msgstr "自动更新密码/密钥"
-#: assets/models.py:162 assets/templates/assets/system_user_detail.html:79
+#: assets/models.py:163 assets/templates/assets/system_user_detail.html:75
msgid "Sudo"
msgstr "Sudo"
-#: assets/models.py:163 assets/templates/assets/system_user_detail.html:84
+#: assets/models.py:164 assets/templates/assets/system_user_detail.html:80
msgid "Shell"
msgstr "Shell"
-#: assets/models.py:164 assets/templates/assets/system_user_detail.html:90
+#: assets/models.py:165 assets/templates/assets/system_user_detail.html:86
#: templates/_header_bar.html:41 templates/_nav.html:4
msgid "Home"
msgstr "仪表盘"
-#: assets/models.py:165 assets/templates/assets/system_user_detail.html:96
+#: assets/models.py:166 assets/templates/assets/system_user_detail.html:92
msgid "Uid"
msgstr "Uid"
-#: assets/models.py:236
+#: assets/models.py:252
#, fuzzy
#| msgid "As default"
msgid "Default"
msgstr "默认使用"
-#: assets/models.py:236
+#: assets/models.py:252
#, fuzzy
#| msgid "Create asset group"
msgid "Default asset group"
msgstr "创建资产组"
-#: assets/models.py:259 assets/templates/assets/admin_user_detail.html:100
+#: assets/models.py:279 assets/templates/assets/admin_user_detail.html:92
+#: assets/templates/assets/asset_detail.html:57
#: assets/templates/assets/asset_group_detail.html:88
-#: assets/templates/assets/system_user_asset.html:53
-#: perms/templates/perms/asset_permission_asset_list.html:67
+#: assets/templates/assets/asset_list.html:13
+#: assets/templates/assets/system_user_asset.html:50
+#: perms/templates/perms/asset_permission_asset.html:67
+#: users/templates/users/user_granted_asset.html:67
msgid "IP"
msgstr "IP"
-#: assets/models.py:260
+#: assets/models.py:280 assets/templates/assets/asset_detail.html:61
msgid "Other IP"
msgstr "其它IP"
-#: assets/models.py:261
+#: assets/models.py:281 assets/templates/assets/asset_detail.html:65
msgid "Remote card IP"
msgstr "远控卡IP"
-#: assets/models.py:262 assets/templates/assets/admin_user_detail.html:99
+#: assets/models.py:282 assets/templates/assets/admin_user_detail.html:91
+#: assets/templates/assets/asset_detail.html:53
#: assets/templates/assets/asset_group_detail.html:87
-#: assets/templates/assets/system_user_asset.html:52
-#: perms/templates/perms/asset_permission_asset_list.html:66
+#: assets/templates/assets/asset_list.html:12
+#: assets/templates/assets/system_user_asset.html:49
+#: perms/templates/perms/asset_permission_asset.html:66
+#: users/templates/users/user_granted_asset.html:66
msgid "Hostname"
msgstr "主机名"
-#: assets/models.py:263 assets/templates/assets/admin_user_detail.html:101
+#: assets/models.py:283 assets/templates/assets/admin_user_detail.html:93
+#: assets/templates/assets/asset_detail.html:69
#: assets/templates/assets/asset_group_detail.html:89
-#: assets/templates/assets/system_user_asset.html:54
-#: perms/templates/perms/asset_permission_asset_list.html:68
+#: assets/templates/assets/asset_list.html:14
+#: assets/templates/assets/system_user_asset.html:51
+#: perms/templates/perms/asset_permission_asset.html:68
+#: users/templates/users/user_granted_asset.html:68
msgid "Port"
msgstr "端口"
-#: assets/models.py:264
+#: assets/models.py:284
msgid "Asset groups"
msgstr "用户组"
-#: assets/models.py:265 assets/models.py:268 templates/_nav.html:24
+#: assets/models.py:286 templates/_nav.html:24
msgid "Admin user"
msgstr "管理用户"
-#: assets/models.py:266
-msgid "Admin password"
-msgstr "管理员密码"
-
-#: assets/models.py:269
+#: assets/models.py:287
msgid "System User"
msgstr "系统用户"
-#: assets/models.py:270 templates/_nav.html:23
+#: assets/models.py:288 templates/_nav.html:23
msgid "IDC"
msgstr "机房"
-#: assets/models.py:271
+#: assets/models.py:289 assets/templates/assets/asset_detail.html:73
+#: assets/templates/assets/asset_detail.html:99
msgid "Mac address"
msgstr "Mac地址"
-#: assets/models.py:272
+#: assets/models.py:290
msgid "Brand"
msgstr "品牌"
-#: assets/models.py:273
+#: assets/models.py:291 assets/templates/assets/asset_detail.html:77
msgid "CPU"
msgstr "CPU"
-#: assets/models.py:274
+#: assets/models.py:292 assets/templates/assets/asset_detail.html:81
msgid "Memory"
msgstr "内存"
-#: assets/models.py:275
+#: assets/models.py:293 assets/templates/assets/asset_detail.html:85
msgid "Disk"
msgstr "硬盘"
-#: assets/models.py:276
+#: assets/models.py:294 assets/templates/assets/asset_detail.html:95
msgid "OS"
msgstr "操作系统"
-#: assets/models.py:277
+#: assets/models.py:295
msgid "Cabinet number"
msgstr "机柜编号"
-#: assets/models.py:278
+#: assets/models.py:296
msgid "Cabinet position"
msgstr "机柜层号"
-#: assets/models.py:279
+#: assets/models.py:297 assets/templates/assets/asset_detail.html:123
msgid "Asset number"
msgstr "资产编号"
-#: assets/models.py:280
+#: assets/models.py:299 assets/templates/assets/asset_detail.html:103
msgid "Asset status"
msgstr "资产状态"
-#: assets/models.py:281
+#: assets/models.py:301 assets/templates/assets/asset_detail.html:111
msgid "Asset type"
msgstr "系统类型"
-#: assets/models.py:282
+#: assets/models.py:303 assets/templates/assets/asset_detail.html:115
msgid "Asset environment"
msgstr "资产环境"
-#: assets/models.py:283
+#: assets/models.py:304 assets/templates/assets/asset_detail.html:119
msgid "Serial number"
msgstr "序列号"
-#: assets/models.py:285 perms/templates/perms/asset_permission_detail.html:84
+#: assets/models.py:306 assets/templates/assets/asset_detail.html:107
msgid "Is active"
msgstr "是否激活"
@@ -390,127 +415,126 @@ msgid "Auto generate key"
msgstr "自动更新密码/密钥"
#: assets/templates/assets/admin_user_create_update.html:53
-#: assets/templates/assets/admin_user_detail.html:152
+#: assets/templates/assets/admin_user_detail.html:144
+#: assets/templates/assets/asset_create_update.html:45
+#: assets/templates/assets/asset_detail.html:184
+#: assets/templates/assets/asset_detail.html:192
#: assets/templates/assets/asset_group_create.html:38
#: assets/templates/assets/idc_create_update.html:44
#: assets/templates/assets/system_user_create_update.html:71
-#: assets/templates/assets/system_user_detail.html:148
-#: perms/templates/perms/asset_permission_create_update.html:69
+#: assets/templates/assets/system_user_detail.html:144
+#: perms/templates/perms/asset_permission_create_update.html:67
#: users/templates/users/_user.html:70
-#: users/templates/users/user_detail.html:147
-#: users/templates/users/user_detail.html:155
+#: users/templates/users/user_detail.html:151
+#: users/templates/users/user_detail.html:159
msgid "Reset"
msgstr "重置"
#: assets/templates/assets/admin_user_create_update.html:54
+#: assets/templates/assets/asset_create_update.html:46
#: assets/templates/assets/asset_group_create.html:39
#: assets/templates/assets/asset_group_list.html:51
+#: assets/templates/assets/asset_list.html:64
#: assets/templates/assets/idc_create_update.html:45
#: assets/templates/assets/system_user_create_update.html:72
-#: perms/templates/perms/asset_permission_create_update.html:70
+#: perms/templates/perms/asset_permission_create_update.html:68
#: perms/templates/perms/asset_permission_list.html:65
-#: perms/templates/perms/perm_user_asset_list.html:58
#: users/templates/users/_user.html:71
#: users/templates/users/forgot_password.html:44
+#: users/templates/users/user_asset_permission.html:144
#: users/templates/users/user_list.html:64
msgid "Submit"
msgstr "提交"
-#: assets/templates/assets/admin_user_detail.html:18
+#: assets/templates/assets/admin_user_detail.html:19
#: assets/templates/assets/asset_group_detail.html:18
#: assets/templates/assets/system_user_asset.html:19
#: assets/templates/assets/system_user_asset_group.html:19
#: assets/templates/assets/system_user_detail.html:19
-#: perms/templates/perms/asset_permission_asset_list.html:20
+#: perms/templates/perms/asset_permission_asset.html:20
#: perms/templates/perms/asset_permission_detail.html:20
-#: perms/templates/perms/asset_permission_user_list.html:20
+#: perms/templates/perms/asset_permission_user.html:20
msgid "Detail"
msgstr ""
-#: assets/templates/assets/admin_user_detail.html:20
-#: assets/templates/assets/system_user_asset.html:22
-#: assets/templates/assets/system_user_asset_group.html:22
-#: assets/templates/assets/system_user_detail.html:23
-#, fuzzy
-#| msgid "User assets"
-msgid "Associate assets"
-msgstr "用户资产"
-
-#: assets/templates/assets/admin_user_detail.html:58
+#: assets/templates/assets/admin_user_detail.html:54
#: assets/templates/assets/asset_group_detail.html:50
-#: assets/templates/assets/system_user_detail.html:101 perms/models.py:29
-#: perms/templates/perms/asset_permission_detail.html:92
+#: assets/templates/assets/system_user_detail.html:97 perms/models.py:30
+#: perms/templates/perms/asset_permission_detail.html:84
#, fuzzy
#| msgid "Date added"
msgid "Date created"
msgstr "加入日期"
-#: assets/templates/assets/admin_user_detail.html:76
+#: assets/templates/assets/admin_user_detail.html:72
#: assets/templates/assets/asset_group_detail.html:68
-#: assets/templates/assets/system_user_asset.html:33
#: assets/templates/assets/system_user_asset_group.html:34
-#: perms/templates/perms/asset_permission_asset_list.html:47
+#: perms/templates/perms/asset_permission_asset.html:47
#, fuzzy
#| msgid "Asset group list"
msgid "Asset list of "
msgstr "资产组列表"
-#: assets/templates/assets/admin_user_detail.html:102
+#: assets/templates/assets/admin_user_detail.html:94
#: assets/templates/assets/asset_group_detail.html:90
-#: assets/templates/assets/system_user_asset.html:55
#, fuzzy
msgid "Alive"
msgstr "激活"
-#: assets/templates/assets/admin_user_detail.html:125
-#: assets/templates/assets/system_user_detail.html:121
-#: perms/templates/perms/asset_permission_detail.html:112
+#: assets/templates/assets/admin_user_detail.html:117
+#: assets/templates/assets/system_user_detail.html:117
+#: perms/templates/perms/asset_permission_detail.html:104
msgid "Quick update"
msgstr ""
-#: assets/templates/assets/admin_user_detail.html:131
+#: assets/templates/assets/admin_user_detail.html:123
msgid "Get install script"
msgstr ""
-#: assets/templates/assets/admin_user_detail.html:134
-#: assets/templates/assets/system_user_detail.html:130
+#: assets/templates/assets/admin_user_detail.html:126
+#: assets/templates/assets/system_user_detail.html:126
msgid "Get"
msgstr ""
-#: assets/templates/assets/admin_user_detail.html:140
-#: assets/templates/assets/system_user_detail.html:136
-#: perms/templates/perms/asset_permission_detail.html:132
+#: assets/templates/assets/admin_user_detail.html:132
+#: assets/templates/assets/system_user_detail.html:132
+#: perms/templates/perms/asset_permission_detail.html:124
msgid "Retest asset connectivity"
msgstr ""
-#: assets/templates/assets/admin_user_detail.html:143
-#: assets/templates/assets/system_user_detail.html:139
-#: perms/templates/perms/asset_permission_detail.html:135
+#: assets/templates/assets/admin_user_detail.html:135
+#: assets/templates/assets/system_user_detail.html:135
+#: perms/templates/perms/asset_permission_detail.html:127
msgid "Start"
msgstr ""
-#: assets/templates/assets/admin_user_detail.html:149
-#: assets/templates/assets/system_user_detail.html:145
+#: assets/templates/assets/admin_user_detail.html:141
+#: assets/templates/assets/system_user_detail.html:141
#, fuzzy
#| msgid "ssh private key"
msgid "Reset private key"
msgstr "ssh密钥"
-#: assets/templates/assets/admin_user_detail.html:163
+#: assets/templates/assets/admin_user_detail.html:155
msgid "Replace asset admin user with this"
msgstr ""
-#: assets/templates/assets/admin_user_detail.html:171
-#: assets/templates/assets/system_user_asset.html:86
+#: assets/templates/assets/admin_user_detail.html:163
+#: assets/templates/assets/system_user_asset.html:89
#, fuzzy
#| msgid "Select assets"
msgid "Select asset"
msgstr "选择资产"
-#: assets/templates/assets/admin_user_detail.html:180
+#: assets/templates/assets/admin_user_detail.html:172
+#: assets/templates/assets/admin_user_detail.html:200
msgid "Replace"
msgstr ""
+#: assets/templates/assets/admin_user_detail.html:183
+msgid "Replace asset admin user with this admin user"
+msgstr ""
+
#: assets/templates/assets/admin_user_list.html:9
#: assets/templates/assets/idc_list.html:9
#: assets/templates/assets/system_user_list.html:9
@@ -524,7 +548,6 @@ msgstr "机房"
#: assets/templates/assets/idc_list.html:11
#: assets/templates/assets/system_user_asset_group.html:54
#: assets/templates/assets/system_user_list.html:12
-#: perms/templates/perms/perm_user_asset_list.html:15
#: users/templates/users/user_list.html:16
msgid "Asset num"
msgstr "资产数量"
@@ -545,6 +568,7 @@ msgstr ""
#: assets/templates/assets/admin_user_list.html:36
#: assets/templates/assets/asset_group_list.html:32
+#: assets/templates/assets/asset_list.html:44
#: assets/templates/assets/idc_list.html:30
#: assets/templates/assets/system_user_list.html:38
#: perms/templates/perms/asset_permission_list.html:46
@@ -554,6 +578,7 @@ msgstr "更新"
#: assets/templates/assets/admin_user_list.html:37
#: assets/templates/assets/asset_group_list.html:33
+#: assets/templates/assets/asset_list.html:45
#: assets/templates/assets/idc_list.html:31
#: assets/templates/assets/system_user_list.html:39
#: perms/templates/perms/asset_permission_list.html:47
@@ -562,9 +587,100 @@ msgstr "更新"
msgid "Delete"
msgstr "删除"
+#: assets/templates/assets/asset_create_update.html:14
+msgid "Basic"
+msgstr ""
+
+#: assets/templates/assets/asset_create_update.html:21
+msgid "Group"
+msgstr ""
+
+#: assets/templates/assets/asset_create_update.html:26
+#, fuzzy
+#| msgid "Asset number"
+msgid "Asset user"
+msgstr "资产编号"
+
+#: assets/templates/assets/asset_create_update.html:31
+#: perms/templates/perms/asset_permission_create_update.html:45
+#, fuzzy
+#| msgid "Other IP"
+msgid "Other"
+msgstr "其它IP"
+
+#: assets/templates/assets/asset_detail.html:19
+#, fuzzy
+#| msgid "Asset group list"
+msgid "Asset detail"
+msgstr "资产组列表"
+
+#: assets/templates/assets/asset_detail.html:21
+#, fuzzy
+#| msgid "Asset number"
+msgid "Asset users"
+msgstr "资产编号"
+
+#: assets/templates/assets/asset_detail.html:22
+#, fuzzy
+#| msgid "Asset group list"
+msgid "Asset login log"
+msgstr "资产组列表"
+
+#: assets/templates/assets/asset_detail.html:89 templates/_nav.html:26
+msgid "Label"
+msgstr "标签"
+
+#: assets/templates/assets/asset_detail.html:131
+#: users/templates/users/user_detail.html:94
+msgid "Date joined"
+msgstr "创建日期"
+
+#: assets/templates/assets/asset_detail.html:146
+#: users/templates/users/user_detail.html:113
+msgid "Quick modify"
+msgstr "快速修改"
+
+#: assets/templates/assets/asset_detail.html:152 perms/models.py:27
+#: perms/templates/perms/asset_permission_create_update.html:47
+#: users/templates/users/user_detail.html:119
+#: users/templates/users/user_list.html:17
+#, fuzzy
+msgid "Active"
+msgstr "激活"
+
+#: assets/templates/assets/asset_detail.html:166 users/models.py:74
+#: users/templates/users/_user.html:57
+#: users/templates/users/user_detail.html:133
+msgid "Enable OTP"
+msgstr "二次验证"
+
+#: assets/templates/assets/asset_detail.html:181
+#: users/templates/users/reset_password.html:45
+#: users/templates/users/user_detail.html:148 users/utils.py:99
+msgid "Reset password"
+msgstr "重置密码"
+
+#: assets/templates/assets/asset_detail.html:189
+#: users/templates/users/user_detail.html:156
+msgid "Reset ssh key"
+msgstr "重置密钥"
+
+#: assets/templates/assets/asset_detail.html:211 users/forms.py:33
+#: users/forms.py:51 users/templates/users/user_detail.html:178
+msgid "Join user groups"
+msgstr "添加到用户组"
+
+#: assets/templates/assets/asset_detail.html:220
+#: perms/templates/perms/asset_permission_asset.html:148
+#: perms/templates/perms/asset_permission_detail.html:164
+#: perms/templates/perms/asset_permission_user.html:148
+#: users/templates/users/user_detail.html:187
+msgid "Join"
+msgstr "加入"
+
#: assets/templates/assets/asset_group_create.html:16
-#: assets/templates/assets/asset_group_list.html:5 assets/views.py:61
-#: assets/views.py:131
+#: assets/templates/assets/asset_group_list.html:5 assets/views.py:80
+#: assets/views.py:150
msgid "Create asset group"
msgstr "创建资产组"
@@ -609,47 +725,58 @@ msgid "Select asset user"
msgstr "选择资产"
#: assets/templates/assets/asset_group_detail.html:174
-#: assets/templates/assets/system_user_asset.html:95
#: assets/templates/assets/system_user_asset_group.html:96
-#: perms/templates/perms/asset_permission_asset_list.html:120
-#: perms/templates/perms/asset_permission_user_list.html:120
+#: perms/templates/perms/asset_permission_asset.html:120
+#: perms/templates/perms/asset_permission_user.html:120
#, fuzzy
#| msgid "Address"
msgid "Add"
msgstr "地址"
#: assets/templates/assets/asset_group_list.html:43
+#: assets/templates/assets/asset_list.html:56
#: perms/templates/perms/asset_permission_list.html:57
-#: perms/templates/perms/perm_user_asset_list.html:50
#: users/templates/users/user_list.html:56
msgid "Delete selected"
msgstr "批量删除"
#: assets/templates/assets/asset_group_list.html:44
+#: assets/templates/assets/asset_list.html:57
#: perms/templates/perms/asset_permission_list.html:58
-#: perms/templates/perms/perm_user_asset_list.html:51
#: users/templates/users/user_list.html:57
msgid "Update selected"
msgstr "批量更新"
#: assets/templates/assets/asset_group_list.html:45
+#: assets/templates/assets/asset_list.html:58
#: perms/templates/perms/asset_permission_list.html:59
-#: perms/templates/perms/perm_user_asset_list.html:52
#: users/templates/users/user_list.html:58
msgid "Deactive selected"
msgstr "禁用所选"
#: assets/templates/assets/asset_group_list.html:46
+#: assets/templates/assets/asset_list.html:59
#: perms/templates/perms/asset_permission_list.html:60
-#: perms/templates/perms/perm_user_asset_list.html:53
#: users/templates/users/user_list.html:59
msgid "Export selected"
msgstr "批量导出"
-#: assets/templates/assets/asset_list.html:27
+#: assets/templates/assets/asset_list.html:5
msgid "Create asset"
msgstr "创建资产"
+#: assets/templates/assets/asset_list.html:15
+msgid "Type"
+msgstr ""
+
+#: assets/templates/assets/asset_list.html:16
+msgid "Hardware"
+msgstr ""
+
+#: assets/templates/assets/asset_list.html:17
+msgid "Valid"
+msgstr ""
+
#: assets/templates/assets/delete_confirm.html:6
#: perms/templates/perms/delete_confirm.html:6
#: users/templates/users/user_delete_confirm.html:6
@@ -668,18 +795,58 @@ msgstr "创建者"
msgid "Create IDC"
msgstr "创建者"
-#: assets/templates/assets/system_user_asset.html:25
+#: assets/templates/assets/system_user_asset.html:22
+#: assets/templates/assets/system_user_detail.html:23
+#, fuzzy
+#| msgid "Create asset group"
+msgid "Associate assets and asset groups"
+msgstr "创建资产组"
+
+#: assets/templates/assets/system_user_asset.html:30
+#, fuzzy
+#| msgid "Asset group list"
+msgid "Assets attached of "
+msgstr "资产组列表"
+
+#: assets/templates/assets/system_user_asset.html:52
+msgid "Reachable"
+msgstr ""
+
+#: assets/templates/assets/system_user_asset.html:81
+#, fuzzy
+#| msgid "User assets"
+msgid "Attach to assets "
+msgstr "用户资产"
+
+#: assets/templates/assets/system_user_asset.html:98
+#: assets/templates/assets/system_user_asset.html:126
+msgid "Attach"
+msgstr ""
+
+#: assets/templates/assets/system_user_asset.html:109
+#, fuzzy
+#| msgid "Select asset groups"
+msgid "Attach to asset groups"
+msgstr "添加到资产组"
+
+#: assets/templates/assets/system_user_asset.html:117
+#, fuzzy
+#| msgid "Asset group"
+msgid "Add asset group"
+msgstr "资产组"
+
+#: assets/templates/assets/system_user_asset_group.html:22
+#, fuzzy
+#| msgid "User assets"
+msgid "Associate assets"
+msgstr "用户资产"
+
#: assets/templates/assets/system_user_asset_group.html:26
-#: assets/templates/assets/system_user_detail.html:28
#, fuzzy
#| msgid "Create asset group"
msgid "Associate asset groups"
msgstr "创建资产组"
-#: assets/templates/assets/system_user_asset.html:78
-msgid "Add asset to this system user"
-msgstr ""
-
#: assets/templates/assets/system_user_asset_group.html:55
msgid "Unavailable num"
msgstr ""
@@ -697,20 +864,20 @@ msgid "Select asset group"
msgstr "添加到资产组"
#: assets/templates/assets/system_user_create_update.html:16
-#: assets/templates/assets/system_user_list.html:5 assets/views.py:349
+#: assets/templates/assets/system_user_list.html:5 assets/views.py:368
#, fuzzy
#| msgid "Create user"
msgid "Create system user"
msgstr "创建用户"
#: assets/templates/assets/system_user_create_update.html:56
-#: assets/templates/assets/system_user_detail.html:71
+#: assets/templates/assets/system_user_detail.html:67
#, fuzzy
#| msgid "Auto update pass/key"
msgid "Auto update"
msgstr "自动更新密码/密钥"
-#: assets/templates/assets/system_user_detail.html:127
+#: assets/templates/assets/system_user_detail.html:123
msgid "Get mannual install script"
msgstr ""
@@ -721,67 +888,61 @@ msgid "Asset group num"
msgstr "资产组"
#: assets/templates/assets/system_user_list.html:14
-msgid "Unavailable"
+msgid "Unreachable"
msgstr ""
-#: assets/views.py:60 assets/views.py:80 assets/views.py:114
-#: assets/views.py:130 assets/views.py:152 assets/views.py:219
-#: assets/views.py:318 assets/views.py:348 assets/views.py:372
-#: assets/views.py:390 templates/_nav.html:18
+#: assets/views.py:79 assets/views.py:99 assets/views.py:133
+#: assets/views.py:149 assets/views.py:171 assets/views.py:238
+#: assets/views.py:337 assets/views.py:367 assets/views.py:390
+#: assets/views.py:408 templates/_nav.html:18
msgid "Assets"
msgstr "资产管理"
-#: assets/views.py:81
+#: assets/views.py:100
msgid "Asset group list"
msgstr "资产组列表"
-#: assets/views.py:115
+#: assets/views.py:134
#, fuzzy
#| msgid "Asset group list"
msgid "Asset group detail"
msgstr "资产组列表"
-#: assets/views.py:153
+#: assets/views.py:172
msgid "IDC list"
msgstr ""
-#: assets/views.py:220
+#: assets/views.py:239
#, fuzzy
#| msgid "Admin user"
msgid "Admin user list"
msgstr "管理用户"
-#: assets/views.py:256
+#: assets/views.py:275
#, fuzzy, python-format
#| msgid "Create user %s success."
msgid "Create admin user %s successfully."
msgstr "创建用户 %s 成功"
-#: assets/views.py:319
+#: assets/views.py:338
#, fuzzy
#| msgid "System user"
msgid "System user list"
msgstr "系统"
-#: assets/views.py:355
+#: assets/views.py:374
#, fuzzy, python-format
#| msgid "Create user %s success."
msgid "Create system user %s successfully."
msgstr "创建用户 %s 成功"
-#: assets/views.py:368
-#, fuzzy, python-format
-#| msgid "Create user %s success."
-msgid "Update system user %s successfully."
-msgstr "创建用户 %s 成功"
-
-#: assets/views.py:373
+#: assets/views.py:391
#, fuzzy
#| msgid "Update user"
msgid "Update system user"
msgstr "编辑用户"
-#: assets/views.py:391
+#: assets/views.py:409
#, fuzzy
#| msgid "System user"
msgid "System user detail"
@@ -793,75 +954,68 @@ msgstr "系统"
msgid "Select users"
msgstr "选择资产"
-#: perms/forms.py:23 perms/templates/perms/asset_permission_user_list.html:139
+#: perms/forms.py:23 perms/templates/perms/asset_permission_user.html:139
#, fuzzy
#| msgid "Select asset groups"
msgid "Select user groups"
msgstr "添加到资产组"
-#: perms/forms.py:29 perms/templates/perms/asset_permission_detail.html:163
+#: perms/forms.py:29 perms/templates/perms/asset_permission_detail.html:155
+#: users/forms.py:117
#, fuzzy
#| msgid "System user"
msgid "Select system users"
msgstr "系统"
#: perms/models.py:26
-#: perms/templates/perms/asset_permission_create_update.html:49
-#: perms/templates/perms/perm_user_asset_list.html:18
-#: users/templates/users/user_detail.html:115
-#: users/templates/users/user_list.html:17
#, fuzzy
-msgid "Active"
-msgstr "激活"
+#| msgid "SSH private key"
+msgid "Private for"
+msgstr "ssh密钥"
-#: perms/models.py:27 perms/templates/perms/asset_permission_detail.html:88
-#: users/models.py:81 users/templates/users/user_detail.html:82
+#: perms/models.py:28 perms/templates/perms/asset_permission_detail.html:80
+#: users/models.py:81 users/templates/users/user_detail.html:86
msgid "Date expired"
msgstr "失效日期"
-#: perms/templates/perms/asset_permission_asset_list.html:24
+#: perms/templates/perms/asset_permission_asset.html:24
#: perms/templates/perms/asset_permission_detail.html:24
-#: perms/templates/perms/asset_permission_user_list.html:24
+#: perms/templates/perms/asset_permission_user.html:24
#, fuzzy
#| msgid "Join user groups"
msgid "Users and user groups"
msgstr "添加到用户组"
-#: perms/templates/perms/asset_permission_asset_list.html:29
+#: perms/templates/perms/asset_permission_asset.html:29
#: perms/templates/perms/asset_permission_detail.html:29
-#: perms/templates/perms/asset_permission_user_list.html:29
+#: perms/templates/perms/asset_permission_user.html:29
#, fuzzy
#| msgid "Select asset groups"
-msgid "Assets and asset gruops"
+msgid "Assets and asset groups"
msgstr "添加到资产组"
-#: perms/templates/perms/asset_permission_asset_list.html:69
+#: perms/templates/perms/asset_permission_asset.html:69
#: perms/templates/perms/asset_permission_list.html:18
-#: perms/templates/perms/asset_permission_user_list.html:69
+#: perms/templates/perms/asset_permission_user.html:69
+#: users/templates/users/user_asset_permission.html:73
+#: users/templates/users/user_granted_asset.html:71
msgid "Is valid"
msgstr ""
-#: perms/templates/perms/asset_permission_asset_list.html:103
+#: perms/templates/perms/asset_permission_asset.html:103
msgid "Add asset to this permission"
msgstr ""
-#: perms/templates/perms/asset_permission_asset_list.html:111
+#: perms/templates/perms/asset_permission_asset.html:111
#, fuzzy
#| msgid "Select assets"
msgid "Select asset "
msgstr "选择资产"
-#: perms/templates/perms/asset_permission_asset_list.html:131
+#: perms/templates/perms/asset_permission_asset.html:131
msgid "Add asset group to this permission"
msgstr ""
-#: perms/templates/perms/asset_permission_asset_list.html:148
-#: perms/templates/perms/asset_permission_detail.html:172
-#: perms/templates/perms/asset_permission_user_list.html:148
-#: users/templates/users/user_detail.html:183
-msgid "Join"
-msgstr "加入"
-
#: perms/templates/perms/asset_permission_create_update.html:17
#, fuzzy
#| msgid "Create asset group"
@@ -873,12 +1027,6 @@ msgstr "创建资产组"
msgid "User"
msgstr "用户"
-#: perms/templates/perms/asset_permission_create_update.html:45
-#, fuzzy
-#| msgid "Other IP"
-msgid "Other"
-msgstr "其它IP"
-
#: perms/templates/perms/asset_permission_detail.html:60
#: perms/templates/perms/asset_permission_list.html:13
#, fuzzy
@@ -895,6 +1043,7 @@ msgstr "用户组列表"
#: perms/templates/perms/asset_permission_detail.html:68
#: perms/templates/perms/asset_permission_list.html:15
+#: users/templates/users/user_granted_asset.html:130
#, fuzzy
#| msgid "Asset group"
msgid "Asset count"
@@ -914,23 +1063,19 @@ msgstr "资产组列表"
msgid "System user count"
msgstr "系统"
-#: perms/templates/perms/asset_permission_detail.html:80
-#, fuzzy
-msgid "Action"
-msgstr "激活"
-
-#: perms/templates/perms/asset_permission_detail.html:141
+#: perms/templates/perms/asset_permission_detail.html:133
#, fuzzy
#| msgid "System user"
msgid "Repush system user"
msgstr "系统"
-#: perms/templates/perms/asset_permission_detail.html:144
+#: perms/templates/perms/asset_permission_detail.html:136
msgid "Push"
msgstr ""
-#: perms/templates/perms/asset_permission_detail.html:155
-#: perms/templates/perms/perm_user_asset_list.html:17 templates/_nav.html:25
+#: perms/templates/perms/asset_permission_detail.html:147
+#: templates/_nav.html:25 users/templates/users/user_granted_asset.html:69
+#: users/templates/users/user_granted_asset.html:131
msgid "System user"
msgstr "系统"
@@ -940,53 +1085,33 @@ msgstr "系统"
msgid "Create permission"
msgstr "创建权限"
-#: perms/templates/perms/asset_permission_user_list.html:47
+#: perms/templates/perms/asset_permission_user.html:47
#, fuzzy
#| msgid "User list"
msgid "User list of "
msgstr "用户列表"
-#: perms/templates/perms/asset_permission_user_list.html:68 users/models.py:68
-#: users/templates/users/user_detail.html:62
+#: perms/templates/perms/asset_permission_user.html:68 users/models.py:68
+#: users/templates/users/user_detail.html:66
msgid "Email"
msgstr "邮件"
-#: perms/templates/perms/asset_permission_user_list.html:103
+#: perms/templates/perms/asset_permission_user.html:103
msgid "Add user to asset permission"
msgstr ""
-#: perms/templates/perms/asset_permission_user_list.html:111
+#: perms/templates/perms/asset_permission_user.html:111
#, fuzzy
#| msgid "Select assets"
msgid "Select user"
msgstr "选择资产"
-#: perms/templates/perms/asset_permission_user_list.html:131
+#: perms/templates/perms/asset_permission_user.html:131
#, fuzzy
#| msgid "Asset group list"
msgid "Add user group to asset permission"
msgstr "资产组列表"
-#: perms/templates/perms/perm_user_asset_list.html:5
-#, fuzzy
-#| msgid "Create perm"
-msgid "Create perm "
-msgstr "创建权限"
-
-#: perms/templates/perms/perm_user_asset_list.html:14 users/models.py:70
-#: users/templates/users/user_detail.html:78
-#: users/templates/users/user_list.html:14
-msgid "Role"
-msgstr "角色"
-
-#: perms/templates/perms/perm_user_asset_list.html:39
-msgid "Create perm"
-msgstr "创建权限"
-
-#: perms/templates/perms/perm_user_asset_list.html:40
-msgid "Flush"
-msgstr ""
-
#: perms/views.py:29 perms/views.py:66 perms/views.py:89 perms/views.py:107
#: perms/views.py:146 perms/views.py:181 templates/_nav.html:30
msgid "Perms"
@@ -1038,26 +1163,6 @@ msgstr "资产组列表"
msgid "Asset permission asset list"
msgstr "资产组列表"
-#: templates/_foot_js.html:24
-msgid "Are you sure delete ?"
-msgstr ""
-
-#: templates/_foot_js.html:28
-msgid "Cancel"
-msgstr ""
-
-#: templates/_foot_js.html:30
-msgid "Yes, delete it!"
-msgstr ""
-
-#: templates/_foot_js.html:40
-# msgid "Deleted!"
-# msgstr "删除"
-
-#: templates/_foot_js.html:40
-msgid "has been deleted."
-msgstr "已被删除"
-
#: templates/_header_bar.html:8
msgid "Search"
msgstr "搜索"
@@ -1083,23 +1188,28 @@ msgstr "登录"
msgid "Close"
msgstr ""
-#: templates/_nav.html:9 users/views.py:107 users/views.py:120
-#: users/views.py:160 users/views.py:191 users/views.py:216 users/views.py:229
-#: users/views.py:345
+#: templates/_modal.html:16 users/templates/users/user_detail.html:304
+#: users/templates/users/user_detail.html:326
+#, fuzzy
+#| msgid "Confirm delete"
+msgid "Confirm"
+msgstr "确认删除"
+
+#: templates/_nav.html:9 users/views.py:102 users/views.py:115
+#: users/views.py:155 users/views.py:186 users/views.py:211 users/views.py:224
+#: users/views.py:340
msgid "Users"
msgstr "用户管理"
#: templates/_nav.html:13 users/models.py:69
-#: users/templates/users/user_detail.html:166
+#: users/templates/users/user_detail.html:170
#: users/templates/users/user_list.html:15
msgid "User group"
msgstr "用户组"
-#: templates/_nav.html:26
-msgid "Label"
-msgstr "标签"
-
-#: templates/_nav.html:33
+#: templates/_nav.html:33 users/templates/users/user_asset_permission.html:23
+#: users/templates/users/user_detail.html:24
+#: users/templates/users/user_granted_asset.html:23
#, fuzzy
#| msgid "Asset type"
msgid "Asset permission"
@@ -1146,78 +1256,75 @@ msgstr "验证码"
msgid "Filters"
msgstr "过滤"
-#: users/forms.py:35 users/forms.py:55
-#: users/templates/users/user_detail.html:174
-msgid "Join user groups"
-msgstr "添加到用户组"
-
-#: users/forms.py:74
+#: users/forms.py:68
#, fuzzy
#| msgid "Name"
msgid "name"
msgstr "名称"
-#: users/forms.py:75
+#: users/forms.py:69
#, fuzzy
#| msgid "Avatar"
msgid "avatar"
msgstr "头像"
-#: users/forms.py:76
+#: users/forms.py:70
#, fuzzy
#| msgid "Wechat"
msgid "wechat"
msgstr "微信"
-#: users/forms.py:77
+#: users/forms.py:71
#, fuzzy
#| msgid "Phone"
msgid "phone"
msgstr "手机"
-#: users/forms.py:78
+#: users/forms.py:72
#, fuzzy
#| msgid "Enable OTP"
msgid "enable otp"
msgstr "二次验证"
-#: users/forms.py:82
-#, fuzzy
-#| msgid "SSH private key"
-msgid "private key"
-msgstr "ssh密钥"
+#: users/forms.py:77 users/models.py:77
+msgid "ssh public key"
+msgstr "ssh公钥"
-#: users/forms.py:89 users/serializers.py:55
+#: users/forms.py:78
+msgid "ssh-rsa AAAA..."
+msgstr ""
+
+#: users/forms.py:79
+msgid "Paste your id_ras.pub here."
+msgstr ""
+
+#: users/forms.py:90 users/forms.py:93
#, fuzzy
#| msgid "ssh private key"
-msgid "Not a valid ssh private key."
+msgid "Not a valid ssh public key"
msgstr "ssh密钥"
#: users/models.py:62 users/models.py:206
msgid "Administrator"
msgstr "管理员"
+#: users/models.py:70 users/templates/users/user_detail.html:82
+#: users/templates/users/user_list.html:14
+msgid "Role"
+msgstr "角色"
+
#: users/models.py:71
msgid "Avatar"
msgstr "头像"
-#: users/models.py:72 users/templates/users/user_detail.html:73
+#: users/models.py:72 users/templates/users/user_detail.html:77
msgid "Wechat"
msgstr "微信"
-#: users/models.py:74 users/templates/users/_user.html:57
-#: users/templates/users/user_detail.html:129
-msgid "Enable OTP"
-msgstr "二次验证"
-
#: users/models.py:76
msgid "ssh private key"
msgstr "ssh密钥"
-#: users/models.py:77
-msgid "ssh public key"
-msgstr "ssh公钥"
-
#: users/models.py:209
msgid "Administrator is the super user of system"
msgstr "Administrator是初始的超级管理员"
@@ -1226,8 +1333,15 @@ msgstr "Administrator是初始的超级管理员"
msgid "System"
msgstr "系统"
-#: users/templates/users/_user.html:17 users/templates/users/user_list.html:5
-#: users/views.py:120
+#: users/serializers.py:55
+#, fuzzy
+#| msgid "ssh private key"
+msgid "Not a valid ssh private key."
+msgstr "ssh密钥"
+
+#: users/templates/users/_user.html:17
+#: users/templates/users/user_create.html:4
+#: users/templates/users/user_list.html:5 users/views.py:115
msgid "Create user"
msgstr "创建用户"
@@ -1245,7 +1359,7 @@ msgstr "角色安全"
msgid "Reset User SSH Private Key"
msgstr "ssh密钥"
-#: users/templates/users/first_login.html:16 users/views.py:345
+#: users/templates/users/first_login.html:16 users/views.py:340
#, fuzzy
#| msgid "Last login"
msgid "First Login"
@@ -1284,96 +1398,145 @@ msgstr "输入您的邮箱, 将会发一封重置短信邮件到您的邮箱中"
msgid "Captcha invalid"
msgstr "验证码错误"
-#: users/templates/users/reset_password.html:45
-#: users/templates/users/user_detail.html:144 users/utils.py:99
-msgid "Reset password"
-msgstr "重置密码"
-
#: users/templates/users/reset_password.html:55
msgid "Password again"
msgstr "再次输入密码"
-#: users/templates/users/user_create.html:12
-msgid "Reset link will be generated and sent to the user. "
-msgstr "生成重置密码连接,通过邮件发送给用户"
+#: users/templates/users/reset_password.html:57
+#, fuzzy
+msgid "Setting"
+msgstr "设置"
-#: users/templates/users/user_detail.html:20 users/views.py:191
+#: users/templates/users/user_asset_permission.html:20
+#: users/templates/users/user_detail.html:21
+#: users/templates/users/user_granted_asset.html:20 users/views.py:186
msgid "User detail"
msgstr "用户详情"
-#: users/templates/users/user_detail.html:22
-msgid "User assets"
-msgstr "用户资产"
+#: users/templates/users/user_asset_permission.html:26
+#: users/templates/users/user_detail.html:26
+#: users/templates/users/user_granted_asset.html:26
+#, fuzzy
+#| msgid "Asset type"
+msgid "Asset granted"
+msgstr "系统类型"
-#: users/templates/users/user_detail.html:23
-msgid "User log"
-msgstr "登录日志"
+#: users/templates/users/user_asset_permission.html:29
+#: users/templates/users/user_detail.html:27
+#: users/templates/users/user_granted_asset.html:29
+msgid "Login history"
+msgstr ""
-#: users/templates/users/user_detail.html:90
-msgid "Date joined"
-msgstr "创建日期"
+#: users/templates/users/user_asset_permission.html:47
+#, fuzzy
+#| msgid "Asset type"
+msgid "Asset permission of "
+msgstr "系统类型"
-#: users/templates/users/user_detail.html:94
+#: users/templates/users/user_asset_permission.html:67
+#, fuzzy
+#| msgid "User"
+msgid "User "
+msgstr "用户"
+
+#: users/templates/users/user_asset_permission.html:68
+#, fuzzy
+#| msgid "User group"
+msgid "User group "
+msgstr "用户组"
+
+#: users/templates/users/user_asset_permission.html:69
+#, fuzzy
+#| msgid "Asset"
+msgid "Asset "
+msgstr "资产"
+
+#: users/templates/users/user_asset_permission.html:70
+#, fuzzy
+#| msgid "Asset group"
+msgid "Asset group "
+msgstr "资产组"
+
+#: users/templates/users/user_asset_permission.html:71
+#, fuzzy
+#| msgid "System user"
+msgid "System user "
+msgstr "系统"
+
+#: users/templates/users/user_asset_permission.html:115
+#, fuzzy
+#| msgid "Create perm"
+msgid "Quick create permission for user"
+msgstr "创建权限"
+
+#: users/templates/users/user_create.html:13
+msgid "Reset link will be generated and sent to the user. "
+msgstr "生成重置密码连接,通过邮件发送给用户"
+
+#: users/templates/users/user_detail.html:98
msgid "Last login"
msgstr "最后登录"
-#: users/templates/users/user_detail.html:109
-msgid "Quick modify"
-msgstr "快速修改"
-
-#: users/templates/users/user_detail.html:152
-msgid "Reset ssh key"
-msgstr "重置密钥"
-
-#: users/templates/users/user_detail.html:233
+#: users/templates/users/user_detail.html:236
msgid "UserGroup Update Success!"
msgstr ""
-#: users/templates/users/user_detail.html:251
-#: users/templates/users/user_detail.html:257
+#: users/templates/users/user_detail.html:254
+#: users/templates/users/user_detail.html:260
#, fuzzy
#| msgid "Create account successfully"
msgid "Update Successfully!"
msgstr "创建账户成功"
-#: users/templates/users/user_detail.html:290
+#: users/templates/users/user_detail.html:293
msgid "E-mail sent successfully. An e-mail has been sent to the user\\"
msgstr ""
-#: users/templates/users/user_detail.html:291
+#: users/templates/users/user_detail.html:294
#, fuzzy
#| msgid "Password"
msgid "Password-Reset"
msgstr "密码"
-#: users/templates/users/user_detail.html:296
+#: users/templates/users/user_detail.html:299
+#: users/templates/users/user_detail.html:321
msgid "Are you sure?"
msgstr ""
-#: users/templates/users/user_detail.html:297
+#: users/templates/users/user_detail.html:300
+#: users/templates/users/user_detail.html:322
msgid "This will reset the user\\"
msgstr ""
#: users/templates/users/user_detail.html:315
-msgid "Successfully updated the SSH private key."
+msgid ""
+"The reset-ssh-public-key E-mail has been sent successfully. Please inform "
+"the user to update his new ssh public key."
msgstr ""
#: users/templates/users/user_detail.html:316
-#: users/templates/users/user_detail.html:321
#, fuzzy
#| msgid "SSH private key"
-msgid "User SSH Private Key Reset"
+msgid "SSH-Public-Key Reset"
msgstr "ssh密钥"
-#: users/templates/users/user_detail.html:319
-msgid "Failed to update the user\\"
-msgstr ""
+#: users/templates/users/user_granted_asset.html:47
+#, fuzzy
+#| msgid "Create asset group"
+msgid "Granted assets of "
+msgstr "创建资产组"
-#: users/templates/users/user_group_create.html:16 users/views.py:229
+#: users/templates/users/user_granted_asset.html:110
+#, fuzzy
+#| msgid "Asset group list"
+msgid "Asset groups granted of "
+msgstr "资产组列表"
+
+#: users/templates/users/user_group_create.html:16 users/views.py:224
msgid "Create user group"
msgstr "创建用户组"
-#: users/templates/users/user_update.html:3 users/views.py:160
+#: users/templates/users/user_update.html:3 users/views.py:155
msgid "Update user"
msgstr "编辑用户"
@@ -1478,57 +1641,109 @@ msgstr ""
" \n"
" "
-#: users/views.py:78
+#: users/utils.py:132
+#, fuzzy
+#| msgid "SSH private key"
+msgid "SSH Key Reset"
+msgstr "ssh密钥"
+
+#: users/utils.py:134
+#, python-format
+msgid ""
+"\n"
+" Hello %(name)s:\n"
+" \n"
+" Your ssh public key has been reset by site administrator.\n"
+" Please login and reset your ssh public key.\n"
+" \n"
+" Login direct\n"
+"\n"
+" \n"
+" "
+msgstr ""
+
+#: users/views.py:73
msgid "Logout success"
msgstr "退出登录成功"
-#: users/views.py:79
+#: users/views.py:74
msgid "Logout success, return login page"
msgstr "退出登录成功,返回到登录页面"
-#: users/views.py:107
+#: users/views.py:102
msgid "User list"
msgstr "用户列表"
-#: users/views.py:116
+#: users/views.py:111
#, fuzzy, python-format
#| msgid "Create user %s success."
msgid "Create user %s successfully."
msgstr "创建用户 %s 成功"
-#: users/views.py:216
+#: users/views.py:211
msgid "User group list"
msgstr "用户组列表"
-#: users/views.py:261
+#: users/views.py:256
msgid "Email address invalid, input again"
msgstr "邮箱地址错误,重新输入"
-#: users/views.py:272
+#: users/views.py:267
msgid "Send reset password message"
msgstr "发送重置密码邮件"
-#: users/views.py:273
+#: users/views.py:268
msgid "Send reset password mail success, login your mail box and follow it "
msgstr ""
"发送重置邮件成功, 请登录邮箱查看, 按照提示操作 (如果没收到,请等待3-5分钟)"
-#: users/views.py:285
+#: users/views.py:280
msgid "Reset password success"
msgstr "重置密码成功"
-#: users/views.py:286
+#: users/views.py:281
msgid "Reset password success, return to login page"
msgstr "重置密码成功,返回到登录页面"
-#: users/views.py:302 users/views.py:315
+#: users/views.py:297 users/views.py:310
msgid "Token invalid or expired"
msgstr "Token错误或失效"
-#: users/views.py:311
+#: users/views.py:306
msgid "Password not same"
msgstr "密码不一致"
+#~ msgid "Admin password"
+#~ msgstr "管理员密码"
+
+#, fuzzy
+#~| msgid "Create user %s success."
+#~ msgid "Update system user %s successfully."
+#~ msgstr "创建用户 %s 成功"
+
+#, fuzzy
+#~ msgid "Action"
+#~ msgstr "激活"
+
+#, fuzzy
+#~| msgid "Create perm"
+#~ msgid "Create perm "
+#~ msgstr "创建权限"
+
+#~ msgid "Create perm"
+#~ msgstr "创建权限"
+
+# msgid "Deleted!"
+# msgstr "删除"
+#~ msgid "has been deleted."
+#~ msgstr "已被删除"
+
+#~ msgid "User assets"
+#~ msgstr "用户资产"
+
+#~ msgid "User log"
+#~ msgstr "登录日志"
+
#, fuzzy
#~| msgid "Create user %s success."
#~ msgid "Update admin user %s successfully."