diff --git a/apps/common/templatetags/common_tags.py b/apps/common/templatetags/common_tags.py index ca928c1c0..22f5133be 100644 --- a/apps/common/templatetags/common_tags.py +++ b/apps/common/templatetags/common_tags.py @@ -32,4 +32,14 @@ def pagination_range(total_page, current_num=1, display=5): start = current_num - display/2 if current_num > display/2 else 1 end = start + display if start + display <= total_page else total_page + 1 - return range(start, end) \ No newline at end of file + return range(start, end) + + +@register.filter +def join_attr(seq, attr=None, sep=None): + if sep is None: + sep = ', ' + if attr is not None: + seq = [getattr(obj, attr) for obj in seq] + print(seq) + return sep.join(seq) diff --git a/apps/users/hands.py b/apps/users/hands.py index 38d211df4..5f0eb93be 100644 --- a/apps/users/hands.py +++ b/apps/users/hands.py @@ -11,6 +11,4 @@ """ from perms.models import AssetPermission - - - +from perms.utils import get_user_granted_assets, get_user_granted_asset_groups diff --git a/apps/users/templates/users/user_asset_permission.html b/apps/users/templates/users/user_asset_permission.html index da819ef5f..4240ecb0b 100644 --- a/apps/users/templates/users/user_asset_permission.html +++ b/apps/users/templates/users/user_asset_permission.html @@ -20,7 +20,7 @@ {% trans 'User detail' %}
  • - {% trans 'Asset permission list' %} + {% trans 'Asset permission' %}
  • {% trans 'Asset granted' %} diff --git a/apps/users/templates/users/user_detail.html b/apps/users/templates/users/user_detail.html index b4f265802..6f26c57da 100644 --- a/apps/users/templates/users/user_detail.html +++ b/apps/users/templates/users/user_detail.html @@ -21,7 +21,7 @@ {% trans 'User detail' %}
  • - {% trans 'Asset permission list' %} + {% trans 'Asset permission' %}
  • {% trans 'Asset granted' %}
  • {% trans 'Login history' %}
  • @@ -193,7 +193,7 @@ {{ group.name }} - + {% endfor %} diff --git a/apps/users/templates/users/user_granted_asset.html b/apps/users/templates/users/user_granted_asset.html new file mode 100644 index 000000000..9db6ce952 --- /dev/null +++ b/apps/users/templates/users/user_granted_asset.html @@ -0,0 +1,186 @@ +{% extends 'base.html' %} +{% load common_tags %} +{% load users_tags %} +{% load bootstrap %} +{% load static %} +{% load i18n %} + +{% block custom_head_css_js %} + + +{% endblock %} +{% block content %} +
    +
    +
    +
    + +
    +
    +
    +
    + {% trans 'Granted assets of ' %} {{ user_object.name }} +
    + + + + + + + + + + +
    +
    +
    + + + + + + + + + + + + + {% for asset in object_list %} + + + + + + + + + + {% endfor %} + +
    {% trans 'Hostname' %}{% trans 'IP' %}{% trans 'Port' %}{% trans 'System user' %} + {% trans 'Is valid' %} +
    + + {{ asset.hostname }} + + {{ asset.ip }}{{ asset.port }}{{ assets.asset }} + {% if asset.is_valid %} + + {% else %} + + {% endif %} + + +
    +
    + {% include '_pagination.html' %} +
    +
    +
    +
    +
    +
    +
    + {% trans 'Asset groups granted of ' %} {{ user_object.name }} +
    + + + + + + + + + + +
    +
    +
    + + + + + + + + + + + {% for asset_group in asset_groups %} + + + + + + + {% endfor %} + +
    {% trans 'Name' %}{% trans 'Asset count' %}{% trans 'System user' %}
    + + {{ asset_group.name }} + + {{ asset_group.assets.count }}{{ asset_group.name }} + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +{% endblock %} +{% block custom_foot_js %} + +{% endblock %} \ No newline at end of file diff --git a/apps/users/urls.py b/apps/users/urls.py index c02c16cb5..d2a6690e0 100644 --- a/apps/users/urls.py +++ b/apps/users/urls.py @@ -20,7 +20,7 @@ urlpatterns = [ name='user-asset-permission'), url(r'^user/(?P[0-9]+)/asset-permission/create$', views.UserAssetPermissionCreateView.as_view(), name='user-asset-permission-create'), - url(r'^user/(?P[0-9]+)/asset-granted', views.UserDetailView.as_view(), name='user-granted-asset'), + url(r'^user/(?P[0-9]+)/granted-asset', views.UserGrantedAssetView.as_view(), name='user-granted-asset'), url(r'^user/(?P[0-9]+)/login-history', views.UserDetailView.as_view(), name='user-login-history'), url(r'^first-login/$', views.UserFirstLoginView.as_view(), name='user-first-login'), url(r'^user/(?P[0-9]+)/assets-perm$', views.UserDetailView.as_view(), name='user-detail'), diff --git a/apps/users/views.py b/apps/users/views.py index f5f651798..160fff42d 100644 --- a/apps/users/views.py +++ b/apps/users/views.py @@ -28,7 +28,7 @@ from .models import User, UserGroup from .forms import UserCreateForm, UserUpdateForm, UserGroupForm, UserLoginForm, UserInfoForm, UserKeyForm, \ UserPrivateAssetPermissionForm from .utils import AdminUserRequiredMixin, user_add_success_next, send_reset_password_mail -from .hands import AssetPermission +from .hands import AssetPermission, get_user_granted_asset_groups, get_user_granted_assets logger = get_logger(__name__) @@ -416,3 +416,26 @@ class UserAssetPermissionCreateView(AdminUserRequiredMixin, CreateView): def get_success_url(self): return reverse('users:user-asset-permission', kwargs={'pk': self.user_object.id}) + +class UserGrantedAssetView(AdminUserRequiredMixin, SingleObjectMixin, ListView): + paginate_by = settings.CONFIG.DISPLAY_PER_PAGE + template_name = 'users/user_granted_asset.html' + context_object_name = 'user_object' + + def get(self, request, *args, **kwargs): + self.object = self.get_object(queryset=User.objects.all()) + return super(UserGrantedAssetView, self).get(request, *args, **kwargs) + + def get_queryset(self): + self.assets_granted = get_user_granted_assets(self.object) + return self.assets_granted.keys() + + def get_context_data(self, **kwargs): + context = { + 'app': 'User', + 'action': 'User granted asset', + 'asset_groups': get_user_granted_asset_groups(self.object), + 'assets': self.assets_granted, + } + kwargs.update(context) + return super(UserGrantedAssetView, self).get_context_data(**kwargs)