From db8b0022fc32ce21a520354220a33479c05cb04c Mon Sep 17 00:00:00 2001 From: ibuler Date: Tue, 15 Nov 2016 19:33:04 +0800 Subject: [PATCH] Update usergroup detail --- apps/assets/forms.py | 2 - apps/assets/serializers.py | 2 +- .../templates/assets/asset_group_create.html | 11 +- .../templates/assets/asset_modal_list.html | 2 - apps/assets/views.py | 8 +- apps/common/views.py | 3 - apps/perms/api.py | 82 ++++++-- apps/perms/hands.py | 2 +- apps/perms/urls.py | 17 +- apps/users/forms.py | 27 ++- apps/users/templates/users/user_detail.html | 60 +++--- .../users/user_group_asset_permission.html | 182 +++++++++++++++++ ...ate.html => user_group_create_update.html} | 14 +- .../templates/users/user_group_detail.html | 185 +++++------------- .../users/user_group_granted_asset.html | 158 +++++++++++++++ apps/users/templates/users/user_update.html | 8 - apps/users/urls.py | 6 + apps/users/views.py | 82 ++++++-- 18 files changed, 615 insertions(+), 236 deletions(-) create mode 100644 apps/users/templates/users/user_group_asset_permission.html rename apps/users/templates/users/{user_group_create.html => user_group_create_update.html} (78%) create mode 100644 apps/users/templates/users/user_group_granted_asset.html diff --git a/apps/assets/forms.py b/apps/assets/forms.py index 62460146e..09fcc9a24 100644 --- a/apps/assets/forms.py +++ b/apps/assets/forms.py @@ -24,12 +24,10 @@ from common.utils import validate_ssh_private_key, ssh_pubkey_gen # class AssetCreateForm(forms.ModelForm): - def __init__(self, *args, **kwargs): instance = kwargs.get('instance', None) if instance: initial = kwargs.get('initial', {}) - #tags = instance.tags.all() initial['tags'] = [t.pk for t in kwargs['instance'].tags.all()] super(AssetCreateForm, self).__init__(*args, **kwargs) diff --git a/apps/assets/serializers.py b/apps/assets/serializers.py index be4183619..86acbff37 100644 --- a/apps/assets/serializers.py +++ b/apps/assets/serializers.py @@ -8,7 +8,7 @@ from rest_framework_bulk import BulkListSerializer, BulkSerializerMixin class AssetGroupSerializer(serializers.ModelSerializer): assets_amount = serializers.SerializerMethodField() - assets = serializers.PrimaryKeyRelatedField(many=True, read_only=True) + # assets = serializers.PrimaryKeyRelatedField(many=True, read_only=True) class Meta: model = AssetGroup diff --git a/apps/assets/templates/assets/asset_group_create.html b/apps/assets/templates/assets/asset_group_create.html index f1df67d53..f2dbfd3ee 100644 --- a/apps/assets/templates/assets/asset_group_create.html +++ b/apps/assets/templates/assets/asset_group_create.html @@ -5,13 +5,6 @@ {% block custom_head_css_js %} - {% endblock %} {% block content %}
@@ -94,7 +87,7 @@ div.dataTables_wrapper div.dataTables_filter, $(document).ready(function () { $('.select2').select2(); $('.select2-system-user').select2(); - }) + }); $('#add_asset').on('click',function(){ $('#modal').modal('show'); @@ -104,7 +97,7 @@ div.dataTables_wrapper div.dataTables_filter, show: false, backdrop: 'static', keyboard: 'false', - remote:"{% url 'assets:asset-modal-list' %}?group_id={{ group_id }}", + remote:"{% url 'assets:asset-modal-list' %}?group_id={{ group_id }}" }); $('#modal').on('show.bs.modal',function(){ diff --git a/apps/assets/templates/assets/asset_modal_list.html b/apps/assets/templates/assets/asset_modal_list.html index f408149f5..c24452c0e 100644 --- a/apps/assets/templates/assets/asset_modal_list.html +++ b/apps/assets/templates/assets/asset_modal_list.html @@ -46,9 +46,7 @@
+{% endblock %} +{% block content %} +
+
+
+
+ +
+
+
+
+ {% trans 'Asset permission of ' %} {{ user_group.name }} +
+ + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + +
+ + {% trans 'Name' %}{% trans 'Asset' %}{% trans 'Asset group' %}{% trans 'System user' %}{% trans 'Valid' %}
+
+
+
+
+
+
+ {% trans 'Quick create permission for user group' %} +
+
+
+ + + {% csrf_token %} + + + + + + + + + + + + + + + + +
+ {{ form.name|bootstrap }} +
+ {{ form.assets|bootstrap }} +
+ {{ form.asset_groups|bootstrap }} +
+ {{ form.system_users|bootstrap }} +
+ +
+
+
+
+
+
+
+
+
+
+ +{% endblock %} +{% block custom_foot_js %} + +{% endblock %} \ No newline at end of file diff --git a/apps/users/templates/users/user_group_create.html b/apps/users/templates/users/user_group_create_update.html similarity index 78% rename from apps/users/templates/users/user_group_create.html rename to apps/users/templates/users/user_group_create_update.html index 2cc835ee4..abb18a239 100644 --- a/apps/users/templates/users/user_group_create.html +++ b/apps/users/templates/users/user_group_create_update.html @@ -19,20 +19,21 @@
{% csrf_token %} {{ form.name|bootstrap_horizontal }} -
- {% for user in users %} - + {% if user.id in group_users %} + + {% else %} + + {% endif %} {% endfor %}
- {{ form.comment|bootstrap_horizontal }} -
@@ -45,11 +46,12 @@
+ {% include "users/_select_user_modal.html" %} {% endblock %} {% block custom_foot_js %} {% endblock %} diff --git a/apps/users/templates/users/user_group_detail.html b/apps/users/templates/users/user_group_detail.html index 349233efc..cffa9930a 100644 --- a/apps/users/templates/users/user_group_detail.html +++ b/apps/users/templates/users/user_group_detail.html @@ -10,54 +10,6 @@ - {% endblock %} {% block content %}
@@ -110,7 +71,7 @@
-
+
{% trans 'User' %}
@@ -120,7 +81,7 @@ - {% for user in users %} {% endfor %} @@ -129,7 +90,7 @@ - + @@ -138,7 +99,7 @@ {{ user.name }} - + {% endfor %} @@ -152,33 +113,32 @@
- {% include "users/_select_user_modal.html" %} {% endblock %} {% block custom_foot_js %} {% endblock %} diff --git a/apps/users/templates/users/user_group_granted_asset.html b/apps/users/templates/users/user_group_granted_asset.html new file mode 100644 index 000000000..dbe031904 --- /dev/null +++ b/apps/users/templates/users/user_group_granted_asset.html @@ -0,0 +1,158 @@ +{% extends 'base.html' %} +{% load common_tags %} +{% load users_tags %} +{% load bootstrap %} +{% load static %} +{% load i18n %} + +{% block custom_head_css_js %} + + +{% endblock %} +{% block content %} +
+
+
+
+ +
+
+
+
+ {% trans 'Assets granted of ' %} {{ user_group.name }} +
+ + + + + + + + + + +
+
+
+ + + + + + + + + + + + + +
{% trans 'Hostname' %}{% trans 'IP' %}{% trans 'Port' %}{% trans 'System user' %}{% trans 'Valid' %}
+
+
+
+
+
+
+ {% trans 'Asset groups granted of ' %} {{ user_group.name }} +
+ + + + + + + + + + +
+
+
+ + + + + + + + + + +
{% trans 'Name' %}{% trans 'Asset' %}
+
+
+
+
+
+
+
+
+ +{% endblock %} +{% block custom_foot_js %} + +{% endblock %} \ No newline at end of file diff --git a/apps/users/templates/users/user_update.html b/apps/users/templates/users/user_update.html index b431fb013..95dbb680f 100644 --- a/apps/users/templates/users/user_update.html +++ b/apps/users/templates/users/user_update.html @@ -1,14 +1,6 @@ {% extends 'users/_user.html' %} {% load i18n %} {% block user_template_title %}{% trans "Update user" %}{% endblock %} -{#{% block username %}#} -{#
#} -{# #} -{#
#} -{# #} -{#
#} -{#
#} -{#{% endblock %}#} {% block password %}

{% trans 'Password' %}

diff --git a/apps/users/urls.py b/apps/users/urls.py index a4af64bd1..7ede4e38c 100644 --- a/apps/users/urls.py +++ b/apps/users/urls.py @@ -34,6 +34,12 @@ urlpatterns = [ url(r'^user-group/(?P[0-9]+)$', views.UserGroupDetailView.as_view(), name='user-group-detail'), url(r'^user-group/create$', views.UserGroupCreateView.as_view(), name='user-group-create'), url(r'^user-group/(?P[0-9]+)/update$', views.UserGroupUpdateView.as_view(), name='user-group-update'), + url(r'^user-group/(?P[0-9]+)/asset-permission$', views.UserGroupAssetPermissionView.as_view(), + name='user-group-asset-permission'), + url(r'^user-group/(?P[0-9]+)/asset-permission/create$', views.UserAssetPermissionCreateView.as_view(), + name='user-group-asset-permission-create'), + url(r'^user-group/(?P[0-9]+)/assets', views.UserGroupGrantedAssetView.as_view(), + name='user-group-granted-asset'), ] diff --git a/apps/users/views.py b/apps/users/views.py index 90468e5bb..0a0f4ff75 100644 --- a/apps/users/views.py +++ b/apps/users/views.py @@ -166,7 +166,7 @@ class UserGroupListView(AdminUserRequiredMixin, TemplateView): class UserGroupCreateView(AdminUserRequiredMixin, CreateView): model = UserGroup form_class = forms.UserGroupForm - template_name = 'users/user_group_create.html' + template_name = 'users/user_group_create_update.html' success_url = reverse_lazy('users:user-group-list') def get_context_data(self, **kwargs): @@ -188,14 +188,14 @@ class UserGroupCreateView(AdminUserRequiredMixin, CreateView): class UserGroupUpdateView(AdminUserRequiredMixin, UpdateView): model = UserGroup form_class = forms.UserGroupForm - template_name = 'users/user_group_create.html' + template_name = 'users/user_group_create_update.html' success_url = reverse_lazy('users:user-group-list') def get_context_data(self, **kwargs): - self.object = self.get_object() + # self.object = self.get_object() context = super(UserGroupUpdateView, self).get_context_data(**kwargs) users = User.objects.all() - group_users = ",".join([str(u.id) for u in self.object.users.all()]) + group_users = [user.id for user in self.object.users.all()] context.update({ 'app': _('Users'), 'action': _('Update User Group'), @@ -370,29 +370,71 @@ class UserAssetPermissionView(AdminUserRequiredMixin, FormMixin, SingleObjectMix return super(UserAssetPermissionView, self).get_context_data(**kwargs) +class UserGroupAssetPermissionView(AdminUserRequiredMixin, FormMixin, SingleObjectMixin, ListView): + model = UserGroup + template_name = 'users/user_group_asset_permission.html' + context_object_name = 'user_group' + form_class = forms.UserPrivateAssetPermissionForm + + def get(self, request, *args, **kwargs): + self.object = self.get_object(queryset=UserGroup.objects.all()) + return super(UserGroupAssetPermissionView, self).get(request, *args, **kwargs) + + def get_context_data(self, **kwargs): + context = { + 'app': 'Users', + 'action': 'User group asset permissions', + } + kwargs.update(context) + return super(UserGroupAssetPermissionView, self).get_context_data(**kwargs) + + class UserAssetPermissionCreateView(AdminUserRequiredMixin, CreateView): form_class = forms.UserPrivateAssetPermissionForm model = AssetPermission def get(self, request, *args, **kwargs): - user_object = self.get_object(queryset=User.objects.all()) - return redirect(reverse('users:user-asset-permission', kwargs={'pk': user_object.id})) + user = self.get_object(queryset=User.objects.all()) + return redirect(reverse('users:user-asset-permission', kwargs={'pk': user.id})) def post(self, request, *args, **kwargs): - self.user_object = self.get_object(queryset=User.objects.all()) + self.user = self.get_object(queryset=User.objects.all()) return super(UserAssetPermissionCreateView, self).post(request, *args, **kwargs) def get_form(self, form_class=None): form = super(UserAssetPermissionCreateView, self).get_form(form_class=form_class) - form.user = self.user_object + form.user = self.user + return form + + def form_invalid(self, form): + return redirect(reverse('users:user-asset-permission', kwargs={'pk': self.user.id})) + + def get_success_url(self): + return reverse('users:user-asset-permission', kwargs={'pk': self.user.id}) + + +class UserGroupAssetPermissionCreateView(AdminUserRequiredMixin, CreateView): + form_class = forms.UserPrivateAssetPermissionForm + model = AssetPermission + + def get(self, request, *args, **kwargs): + user_group = self.get_object(queryset=UserGroup.objects.all()) + return redirect(reverse('users:user-group-asset-permission', kwargs={'pk': user_group.id})) + + def post(self, request, *args, **kwargs): + self.user_group = self.get_object(queryset=UserGroup.objects.all()) + return super(UserGroupAssetPermissionCreateView, self).post(request, *args, **kwargs) + + def get_form(self, form_class=None): + form = super(UserGroupAssetPermissionCreateView, self).get_form(form_class=form_class) + form.user_group = self.user_group return form def form_invalid(self, form): - print(form.errors) - return redirect(reverse('users:user-asset-permission', kwargs={'pk': self.user_object.id})) + return redirect(reverse('users:user-group-asset-permission', kwargs={'pk': self.user_group.id})) def get_success_url(self): - return reverse('users:user-asset-permission', kwargs={'pk': self.user_object.id}) + return reverse('users:user-group-asset-permission', kwargs={'pk': self.user_group.id}) class UserGrantedAssetView(AdminUserRequiredMixin, DetailView): @@ -413,6 +455,24 @@ class UserGrantedAssetView(AdminUserRequiredMixin, DetailView): return super(UserGrantedAssetView, self).get_context_data(**kwargs) +class UserGroupGrantedAssetView(AdminUserRequiredMixin, DetailView): + model = User + template_name = 'users/user_group_granted_asset.html' + context_object_name = 'user_group' + + def get(self, request, *args, **kwargs): + self.object = self.get_object(queryset=UserGroup.objects.all()) + return super(UserGroupGrantedAssetView, self).get(request, *args, **kwargs) + + def get_context_data(self, **kwargs): + context = { + 'app': 'User', + 'action': 'User group granted asset', + } + kwargs.update(context) + return super(UserGroupGrantedAssetView, self).get_context_data(**kwargs) + + class BulkImportUserView(AdminUserRequiredMixin, JSONResponseMixin, FormView): form_class = forms.FileForm -- GitLab