diff --git a/apps/assets/api.py b/apps/assets/api.py index 896aadc88783428647eafb98379bfccfde233372..e96f1cdab068d53ba6f19b270852b8d0b28d9880 100644 --- a/apps/assets/api.py +++ b/apps/assets/api.py @@ -38,6 +38,10 @@ class AssetGroupViewSet(viewsets.ModelViewSet): queryset = AssetGroup.objects.all() serializer_class = serializers.AssetGroupSerializer +class AssetUpdateGroupApi(generics.RetrieveUpdateAPIView): + queryset = Asset.objects.all() + serializer_class = serializers.AssetUpdateGroupSerializer + permission_classes = (IsSuperUser,) class IDCViewSet(viewsets.ModelViewSet): """API endpoint that allows IDC to be viewed or edited.""" @@ -45,18 +49,21 @@ class IDCViewSet(viewsets.ModelViewSet): serializer_class = serializers.IDCSerializer permission_classes = (IsSuperUser,) - class AdminUserViewSet(viewsets.ModelViewSet): queryset = AdminUser.objects.all() serializer_class = serializers.AdminUserSerializer permission_classes = (IsSuperUser,) - class SystemUserViewSet(viewsets.ModelViewSet): queryset = SystemUser.objects.all() serializer_class = serializers.SystemUserSerializer permission_classes = (IsSuperUser,) +class SystemUserUpdateApi(generics.RetrieveUpdateAPIView): + queryset = Asset.objects.all() + serializer_class = serializers.AssetUpdateSystemUserSerializer + permission_classes = (IsSuperUser,) + # class IDCAssetsApi(generics.ListAPIView): # model = IDC diff --git a/apps/assets/serializers.py b/apps/assets/serializers.py index 7b13606e52060ce9c23058ac5f4eb97493d6e379..6e6353a866085e7a63e94007fa99f627297c1a9b 100644 --- a/apps/assets/serializers.py +++ b/apps/assets/serializers.py @@ -17,6 +17,19 @@ class AssetGroupSerializer(serializers.ModelSerializer): def get_assets_amount(obj): return obj.assets.count() +class AssetUpdateGroupSerializer(serializers.ModelSerializer): + groups = serializers.PrimaryKeyRelatedField(many=True, queryset=AssetGroup.objects.all()) + + class Meta: + model = Asset + fields = ['id', 'groups'] + +class AssetUpdateSystemUserSerializer(serializers.ModelSerializer): + system_users = serializers.PrimaryKeyRelatedField(many=True, queryset=SystemUser.objects.all()) + + class Meta: + model = Asset + fields = ['id', 'system_users'] class AdminUserSerializer(serializers.ModelSerializer): class Meta: diff --git a/apps/assets/templates/assets/asset_detail.html b/apps/assets/templates/assets/asset_detail.html index bc3a7b147963ebdc0ae649773beb0352b5612116..ca1b667edbed66838f6c37cabe12d539f2d3aa60 100644 --- a/apps/assets/templates/assets/asset_detail.html +++ b/apps/assets/templates/assets/asset_detail.html @@ -96,7 +96,7 @@ {% trans 'Asset status' %}: - {{ asset.get_status_display() }} + {{ asset.status }} {% trans 'Is active' %}: @@ -205,9 +205,9 @@
- {% for asset_group in asset_groups_remain %} - + {% endfor %} @@ -221,9 +221,9 @@ {% for asset_group in asset_groups %} - {{ asset_group.name }} + {{ asset_group.name }} - + {% endfor %} @@ -243,22 +243,22 @@ - +
{% for system_user in system_users %} - {{ system_user.name }} + {{ system_user.name }} - + {% endfor %} @@ -275,8 +275,154 @@ {% endblock %} {% block custom_foot_js %} {% endblock %} diff --git a/apps/assets/templates/assets/asset_group_list.html b/apps/assets/templates/assets/asset_group_list.html index 245ae3bf4d50229f06c228b1842ab1a205785a0e..6e46fc70c48204cf2617715e41adda674572d24d 100644 --- a/apps/assets/templates/assets/asset_group_list.html +++ b/apps/assets/templates/assets/asset_group_list.html @@ -6,7 +6,7 @@
{% trans "Create asset group" %}
- +
@@ -27,7 +27,7 @@ {% endblock %} diff --git a/apps/assets/templates/assets/asset_list.html b/apps/assets/templates/assets/asset_list.html index a2b1c306c8ed0e20bb4fcb0f55a8be9d3b2240fb..a5d43579cd41e854b2773ccfc62f0db13051d8d4 100644 --- a/apps/assets/templates/assets/asset_list.html +++ b/apps/assets/templates/assets/asset_list.html @@ -127,8 +127,9 @@ }}, {targets: 9, createdCell: function (td, cellData, rowData) { var update_btn = '{% trans "Update" %}'.replace('99991937', cellData); - var del_btn = '{% trans "Delete" %}'.replace('99991937', cellData); + var del_btn = '{% trans "Delete" %}'.replace('99991937', cellData); $(td).html(update_btn + del_btn) + }} ], ajax_url: '{% url "api-assets:asset-list" %}', @@ -179,6 +180,14 @@ $form.ajaxSubmit({success: success}); }) + }) + .on('click', '.btn_asset_delete', function () { + var $this = $(this); + var name = $(this).closest("tr").find(":nth-child(2)").children('a').html(); + var uid = $this.data('uid'); + var the_url = '{% url "api-assets:asset-detail" pk=99991937 %}'.replace('99991937', uid); + + objectDelete($this, name, the_url); }); {% endblock %} \ No newline at end of file diff --git a/apps/assets/urls/api_urls.py b/apps/assets/urls/api_urls.py index ca1760404569050c4fdacd26a483e17cc0dd6f9b..6957f5f8a35d5076b5da95ab1bb1ef0876ac04a4 100644 --- a/apps/assets/urls/api_urls.py +++ b/apps/assets/urls/api_urls.py @@ -17,6 +17,11 @@ urlpatterns = [ url(r'^v1/assets_bulk/$', api.AssetListUpdateApi.as_view(), name='asset-bulk-update'), # url(r'^v1/idc/(?P[0-9]+)/assets/$', api.IDCAssetsApi.as_view(), name='api-idc-assets'), url(r'^v1/system-user/auth/', api.SystemUserAuthApi.as_view(), name='system-user-auth'), + + url(r'^v1/assets/(?P\d+)/groups/$', + api.AssetUpdateGroupApi.as_view(), name='asset-update-group'), + url(r'^v1/assets/(?P\d+)/system-users/$', + api.SystemUserUpdateApi.as_view(), name='asset-update-systemusers'), ] urlpatterns += router.urls diff --git a/apps/users/templates/users/user_detail.html b/apps/users/templates/users/user_detail.html index f43bde4f5f3c6002b5ef2e6974be26f17081ab72..ec9162f054a9ad395641b3469f02b1145f864daa 100644 --- a/apps/users/templates/users/user_detail.html +++ b/apps/users/templates/users/user_detail.html @@ -255,16 +255,19 @@ function updateUserGroups(groups) { success: success }); } + $(document).ready(function() { $('.select2').select2() .on('select2:select', function(evt) { var data = evt.params.data; jumpserver.groups_selected[data.id] = data.text; - }).on('select2:unselect', function(evt) { + }) + .on('select2:unselect', function(evt) { var data = evt.params.data; delete jumpserver.groups_selected[data.id] }) -}).on('click', '#is_active', function() { +}) + .on('click', '#is_active', function() { var the_url = "{% url 'api-users:user-detail' pk=user.id %}"; var checked = $(this).prop('checked'); var body = { @@ -276,19 +279,21 @@ $(document).ready(function() { body: JSON.stringify(body), success_message: success }); -}).on('click', '#enable_otp', function() { - var the_url = "{% url 'api-users:user-detail' pk=user.id %}"; - var checked = $(this).prop('checked'); - var body = { - 'enable_otp': checked - }; - var success = '{% trans "Update Successfully!" %}'; - APIUpdateAttr({ - url: the_url, - body: JSON.stringify(body), - success_message: success - }); -}).on('click', '#btn_join_group', function() { +}) + .on('click', '#enable_otp', function() { + var the_url = "{% url 'api-users:user-detail' pk=user.id %}"; + var checked = $(this).prop('checked'); + var body = { + 'enable_otp': checked + }; + var success = '{% trans "Update Successfully!" %}'; + APIUpdateAttr({ + url: the_url, + body: JSON.stringify(body), + success_message: success + }); +}) + .on('click', '#btn_join_group', function() { if (Object.keys(jumpserver.groups_selected).length === 0) { return false; } diff --git a/apps/users/templates/users/user_list.html b/apps/users/templates/users/user_list.html index f4a353bbd32a3f773f64dfd68feb6f17939298d9..bf8493f1569bbc30dc64f291b9afd9542d6956f2 100644 --- a/apps/users/templates/users/user_list.html +++ b/apps/users/templates/users/user_list.html @@ -132,7 +132,8 @@ $(document).ready(function(){ $form.ajaxSubmit({success: success}); }) -}).on('click', '#btn_bulk_update', function(){ +}) + .on('click', '#btn_bulk_update', function(){ var action = $('#slct_bulk_update').val(); var $data_table = $('#user_list_table').DataTable(); var id_list = []; @@ -204,13 +205,15 @@ $(document).ready(function(){ default: break; } -}).on('click', '.btn_user_delete', function(){ +}) + .on('click', '.btn_user_delete', function(){ var $this = $(this); var name = $this.data('name'); var uid = $this.data('uid'); var the_url = '{% url "api-users:user-detail" pk=99991937 %}'.replace('99991937', uid); objectDelete($this, name, the_url); -}).on('click', '#btn_user_bulk_update', function(){ +}) + .on('click', '#btn_user_bulk_update', function(){ var json_data = $('#fm_user_bulk_update').serializeObject(); var body = {}; body.enable_otp = (json_data.enable_otp === 'on')? true: false;