diff --git a/apps/assets/templates/assets/admin_user_list.html b/apps/assets/templates/assets/admin_user_list.html index 73539ff5e..132b2f93b 100644 --- a/apps/assets/templates/assets/admin_user_list.html +++ b/apps/assets/templates/assets/admin_user_list.html @@ -15,7 +15,6 @@ {% trans 'Name' %} {% trans 'Username' %} {% trans 'Asset num' %} - {% trans 'Lost connection' %} {% trans 'Comment' %} {% trans 'Action' %} @@ -23,18 +22,6 @@ -
-
- -
- -
-
-
{% endblock %} {% block content_bottom_left %}{% endblock %} {% block custom_foot_js %} @@ -47,11 +34,11 @@ $(document).ready(function(){ var detail_btn = '' + cellData + ''; $(td).html(detail_btn.replace('99991937', rowData.id)); }}, - {targets: 5, createdCell: function (td, cellData) { + {targets: 4, createdCell: function (td, cellData) { var innerHtml = cellData.length > 8 ? cellData.substring(0, 24) + '...': cellData; $(td).html('' + innerHtml + ''); }}, - {targets: 6, createdCell: function (td, cellData, rowData) { + {targets: 5, createdCell: function (td, cellData, rowData) { {# var script_btn = '{% trans "Script" %}'.replace('99991937', cellData);#} var update_btn = '{% trans "Update" %}'.replace('99991937', cellData); var del_btn = '{% trans "Delete" %}'.replace('99991937', cellData); @@ -59,9 +46,8 @@ $(document).ready(function(){ $(td).html(update_btn + del_btn) }}], ajax_url: '{% url "api-assets:admin-user-list" %}', - columns: [{data: function(){return ""}}, {data: "name" }, {data: "username" }, {data: "assets_amount" }, {data: function () {return 'lost'} }, + columns: [{data: function(){return ""}}, {data: "name" }, {data: "username" }, {data: "assets_amount" }, {data: "comment" }, {data: "id" }], - op_html: $('#actions').html() }; jumpserver.initDataTable(options); }) @@ -76,59 +62,7 @@ $(document).ready(function(){ setTimeout( function () { $data_table.ajax.reload(); }, 3000); -}) -.on('click', '#btn_bulk_update', function () { - var action = $('#slct_bulk_update').val(); - var $data_table = $('#admin_user_list_table').DataTable(); - var id_list = []; - var plain_id_list = []; - $data_table.rows({selected: true}).every(function(){ - id_list.push({id: this.data().id}); - plain_id_list.push(this.data().id); - }); - if (plain_id_list.length == 0) { - return false; - } - var the_url = "{% url 'api-assets:admin-user-list' %}"; - function doDelete() { - swal({ - title: "{% trans 'Are you sure?' %}", - text: "{% trans 'This will delete the selected Admin Users !!!' %}", - type: "warning", - showCancelButton: true, - confirmButtonColor: "#DD6B55", - confirmButtonText: "{% trans 'Confirm' %}", - closeOnConfirm: false - }, function() { - var success = function() { - var msg = "{% trans 'Admin Users Deleted.' %}"; - swal("{% trans 'Admin Users Delete' %}", msg, "success"); - $('#admin_user_list_table').DataTable().ajax.reload(); - }; - var fail = function() { - var msg = "{% trans 'Admin Users Deleting failed.' %}"; - swal("{% trans 'Admin Users Delete' %}", msg, "error"); - }; - var url_delete = the_url + '?id__in=' + JSON.stringify(plain_id_list); - APIUpdateAttr({url: url_delete, method: 'DELETE', success: success, error: fail}); - $data_table.ajax.reload(); - jumpserver.checked = false; - }); - } - function doUpdate() { - - } - switch (action) { - case 'delete': - doDelete(); - break; - case 'update': - doUpdate(); - break; - default: - break; - } }); {% endblock %} diff --git a/apps/assets/templates/assets/asset_list.html b/apps/assets/templates/assets/asset_list.html index 4c6927088..e47f48428 100644 --- a/apps/assets/templates/assets/asset_list.html +++ b/apps/assets/templates/assets/asset_list.html @@ -188,7 +188,7 @@ $(document).ready(function(){ var uid = $this.data('uid'); var the_url = '{% url "api-assets:asset-detail" pk=99991937 %}'.replace('99991937', uid); console.log(the_url); - objDelete($this, name, the_url); + objectDelete($this, name, the_url); setTimeout( function () { $data_table.ajax.reload(); }, 3000); diff --git a/apps/assets/views.py b/apps/assets/views.py index 1e112405d..f5bbcd216 100644 --- a/apps/assets/views.py +++ b/apps/assets/views.py @@ -22,12 +22,14 @@ from django.views.decorators.csrf import csrf_protect, csrf_exempt from django.utils.decorators import method_decorator from django.core.cache import cache from django.utils import timezone +from django.contrib.auth.mixins import LoginRequiredMixin from common.mixins import JSONResponseMixin from common.utils import get_object_or_none from . import forms from .models import Asset, AssetGroup, AdminUser, IDC, SystemUser from .hands import AdminUserRequiredMixin +from .tasks import update_assets_hardware_info class AssetListView(AdminUserRequiredMixin, TemplateView): @@ -44,7 +46,7 @@ class AssetListView(AdminUserRequiredMixin, TemplateView): return super(AssetListView, self).get_context_data(**kwargs) -class UserAssetListView(TemplateView): +class UserAssetListView(LoginRequiredMixin, TemplateView): template_name = 'assets/user_asset_list.html' def get_context_data(self, **kwargs): @@ -64,7 +66,7 @@ class AssetCreateView(AdminUserRequiredMixin, CreateView): success_url = reverse_lazy('assets:asset-list') def form_valid(self, form): - asset = form.save() + self.asset = asset = form.save() asset.created_by = self.request.user.username or 'Admin' asset.save() return super(AssetCreateView, self).form_valid(form) @@ -77,6 +79,10 @@ class AssetCreateView(AdminUserRequiredMixin, CreateView): kwargs.update(context) return super(AssetCreateView, self).get_context_data(**kwargs) + def get_success_url(self): + update_assets_hardware_info.delay([self.asset]) + return super(AssetCreateView, self).get_success_url() + class AssetModalCreateView(AdminUserRequiredMixin, ListView): model = Asset @@ -439,16 +445,12 @@ class AdminUserDetailView(AdminUserRequiredMixin, SingleObjectMixin, ListView): context_object_name = 'admin_user' def get(self, request, *args, **kwargs): - self.object = self.get_object(queryset=AdminUser.objects.all()) + self.object = self.get_object(queryset=AdminUser.objects.all()) return super(AdminUserDetailView, self).get(request, *args, **kwargs) - # Todo: queryset default order by connectivity, need ops support def get_queryset(self): return self.object.assets.all() - # def get_asset_groups(self): - # return self.object.asset_groups.all() - def get_context_data(self, **kwargs): asset_groups = AssetGroup.objects.all() assets = self.get_queryset() @@ -457,8 +459,6 @@ class AdminUserDetailView(AdminUserRequiredMixin, SingleObjectMixin, ListView): 'action': 'Admin user detail', 'assets_remain': [asset for asset in Asset.objects.all() if asset not in assets], 'asset_groups': asset_groups, - # 'asset_groups_remain': [asset_group for asset_group in AssetGroup.objects.all() - # if asset_group not in asset_groups] } kwargs.update(context) return super(AdminUserDetailView, self).get_context_data(**kwargs) diff --git a/apps/jumpserver/views.py b/apps/jumpserver/views.py index b6a510fff..044d3fa8f 100644 --- a/apps/jumpserver/views.py +++ b/apps/jumpserver/views.py @@ -1,6 +1,9 @@ from django.views.generic import TemplateView from django.utils import timezone from django.db.models import Count +from django.contrib.auth.mixins import LoginRequiredMixin +from django.shortcuts import redirect + from users.utils import AdminUserRequiredMixin from users.models import User @@ -8,9 +11,14 @@ from assets.models import Asset from audits.models import ProxyLog -class IndexView(AdminUserRequiredMixin, TemplateView): +class IndexView(LoginRequiredMixin, TemplateView): template_name = 'index.html' + def get(self, request, *args, **kwargs): + if not request.user.is_superuser: + return redirect('assets:user-asset-list') + return super(IndexView, self).get(request, *args, **kwargs) + def get_context_data(self, **kwargs): seven_days_ago = timezone.now() - timezone.timedelta(days=7) month_ago = timezone.now() - timezone.timedelta(days=30) diff --git a/apps/templates/_nav_user.html b/apps/templates/_nav_user.html index 77206f1c2..296d8bc89 100644 --- a/apps/templates/_nav_user.html +++ b/apps/templates/_nav_user.html @@ -1,9 +1,4 @@ {% load i18n %} -
  • - - {% trans 'Dashboard' %} - -
  • {% trans 'My assets' %} diff --git a/config_example.py b/config_example.py index 7903d609d..cbe79aa8b 100644 --- a/config_example.py +++ b/config_example.py @@ -100,8 +100,8 @@ class DevelopmentConfig(Config): DB_NAME = os.path.join(BASE_DIR, 'db.sqlite3') EMAIL_HOST = 'smtp.exmail.qq.com' EMAIL_PORT = 465 - EMAIL_HOST_USER = 'ask@jumpserver.org' - EMAIL_HOST_PASSWORD = 'xfDf4x1n' + EMAIL_HOST_USER = 'a@jumpserver.org' + EMAIL_HOST_PASSWORD = 'somepasswrd' EMAIL_USE_SSL = True EMAIL_USE_TLS = False EMAIL_SUBJECT_PREFIX = '[Jumpserver] '