diff --git a/apps/assets/migrations/0036_auto_20190716_1535.py b/apps/assets/migrations/0036_auto_20190716_1535.py new file mode 100644 index 000000000..317d427f0 --- /dev/null +++ b/apps/assets/migrations/0036_auto_20190716_1535.py @@ -0,0 +1,18 @@ +# Generated by Django 2.1.7 on 2019-07-16 07:35 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('assets', '0035_auto_20190711_2018'), + ] + + operations = [ + migrations.AlterField( + model_name='commandfilter', + name='name', + field=models.CharField(max_length=64, unique=True, verbose_name='Name'), + ), + ] diff --git a/apps/assets/models/cmd_filter.py b/apps/assets/models/cmd_filter.py index 5bd031187..92135894c 100644 --- a/apps/assets/models/cmd_filter.py +++ b/apps/assets/models/cmd_filter.py @@ -17,7 +17,7 @@ __all__ = [ class CommandFilter(OrgModelMixin): id = models.UUIDField(default=uuid.uuid4, primary_key=True) - name = models.CharField(max_length=64, verbose_name=_("Name")) + name = models.CharField(max_length=64, unique=True, verbose_name=_("Name")) is_active = models.BooleanField(default=True, verbose_name=_('Is active')) comment = models.TextField(blank=True, default='', verbose_name=_("Comment")) date_created = models.DateTimeField(auto_now_add=True) diff --git a/apps/assets/serializers/cmd_filter.py b/apps/assets/serializers/cmd_filter.py index 3f29ca686..da0367c46 100644 --- a/apps/assets/serializers/cmd_filter.py +++ b/apps/assets/serializers/cmd_filter.py @@ -22,7 +22,6 @@ class CommandFilterSerializer(BulkOrgResourceModelSerializer): extra_kwargs = { 'rules': {'read_only': True}, - 'system_users': {'read_only': True} } diff --git a/apps/assets/templates/assets/cmd_filter_detail.html b/apps/assets/templates/assets/cmd_filter_detail.html index b98828f4e..e68cba47c 100644 --- a/apps/assets/templates/assets/cmd_filter_detail.html +++ b/apps/assets/templates/assets/cmd_filter_detail.html @@ -29,7 +29,7 @@ {% trans 'Update' %}
  • - + {% trans 'Delete' %}
  • @@ -164,5 +164,13 @@ $(document).ready(function () { }); updateCMDFilterSystemUsers(system_users) }) +.on('click', '.btn-delete-cmd-filter', function () { + var $this = $(this); + var name = "{{object.name }}"; + var uid = "{{ object.id }}"; + var the_url = '{% url "api-assets:cmd-filter-detail" pk=DEFAULT_PK %}'.replace('{{ DEFAULT_PK }}', uid); + var redirect_url = "{% url 'assets:cmd-filter-list' %}"; + objectDelete($this, name, the_url, redirect_url); +}) {% endblock %} diff --git a/apps/assets/templates/assets/domain_detail.html b/apps/assets/templates/assets/domain_detail.html index e60daa334..06fd0d28d 100644 --- a/apps/assets/templates/assets/domain_detail.html +++ b/apps/assets/templates/assets/domain_detail.html @@ -24,7 +24,7 @@ {% trans 'Update' %}
  • - + {% trans 'Delete' %}
  • @@ -127,6 +127,15 @@ $(document).ready(function(){ setTimeout( function () { $data_table.ajax.reload(); }, 3000); -}); +}) +.on('click', '.btn-delete-domain', function () { + var $this = $(this); + var name = "{{ object.name }}"; + var uid = "{{ object.id }}"; + var the_url = '{% url "api-assets:domain-detail" pk=DEFAULT_PK %}'.replace('{{ DEFAULT_PK }}', uid); + var redirect_url = "{% url 'assets:domain-list' %}"; + objectDelete($this, name, the_url, redirect_url); +}) +; {% endblock %} \ No newline at end of file diff --git a/apps/perms/api/mixin.py b/apps/perms/api/mixin.py index 24bd9abd2..9c726691f 100644 --- a/apps/perms/api/mixin.py +++ b/apps/perms/api/mixin.py @@ -174,6 +174,8 @@ class GrantAssetsMixin(LabelFilterMixin): system_user = system_users_map.get(sid) if not system_user: continue + if not asset.has_protocol(system_user.protocol): + continue system_user.actions = action system_users_granted.append(system_user) asset.system_users_granted = system_users_granted diff --git a/apps/perms/api/user_permission.py b/apps/perms/api/user_permission.py index 0746252cb..13ee07951 100644 --- a/apps/perms/api/user_permission.py +++ b/apps/perms/api/user_permission.py @@ -256,6 +256,8 @@ class UserGrantedNodesWithAssetsApi(UserPermissionCacheMixin, NodesWithUngroupMi system_user = _system_users_map.get(system_user_id) if not system_user: continue + if not asset.has_protocol(system_user.protocol): + continue system_user.actions = action system_user_granted.append(system_user) asset.system_users_granted = system_user_granted diff --git a/apps/static/js/jumpserver.js b/apps/static/js/jumpserver.js index c880a5499..ad1ec17f5 100644 --- a/apps/static/js/jumpserver.js +++ b/apps/static/js/jumpserver.js @@ -1110,6 +1110,7 @@ function objectAttrsIsBool(obj, attrs) { } function cleanDate(d) { + if (typeof d === 'number'){return d} for (var i=0; i<2; i++) { if (isNaN(Date.parse(d))) { d = d.split('+')[0].trimRight(); diff --git a/apps/templates/_foot_js.html b/apps/templates/_foot_js.html index 44c351c10..8dbfc0f70 100644 --- a/apps/templates/_foot_js.html +++ b/apps/templates/_foot_js.html @@ -7,7 +7,7 @@ - +