diff --git a/apps/perms/models.py b/apps/perms/models.py index dbd1996ee..3a1cb53ce 100644 --- a/apps/perms/models.py +++ b/apps/perms/models.py @@ -22,10 +22,10 @@ class AssetPermission(models.Model): asset_groups = models.ManyToManyField(AssetGroup, related_name='granted_by_permissions', blank=True) system_users = models.ManyToManyField(SystemUser, related_name='granted_by_permissions') action = models.CharField(choices=ACTION_CHOICE, max_length=8, default='1') - is_active = models.BooleanField(default=True) + is_active = models.BooleanField(default=True, verbose_name=_('Active')) date_expired = models.DateTimeField(default=date_expired_default, verbose_name=_('Date expired')) - created_by = models.CharField(max_length=128, blank=True) - date_created = models.DateTimeField(auto_now=True) + created_by = models.CharField(max_length=128, blank=True, verbose_name=_('Created by')) + date_created = models.DateTimeField(auto_now=True, verbose_name=_('Date created')) comment = models.TextField(verbose_name=_('Comment'), blank=True) def __unicode__(self): @@ -33,7 +33,7 @@ class AssetPermission(models.Model): @property def is_valid(self): - if self.date_expired < timezone.now() and is_active: + if self.date_expired < timezone.now() and self.is_active: return True return True diff --git a/apps/perms/templates/perms/asset_permission_detail.html b/apps/perms/templates/perms/asset_permission_detail.html new file mode 100644 index 000000000..c8de5ec44 --- /dev/null +++ b/apps/perms/templates/perms/asset_permission_detail.html @@ -0,0 +1,224 @@ +{% extends 'base.html' %} +{% load common_tags %} +{% load users_tags %} +{% load static %} +{% load i18n %} + +{% block custom_head_css_js %} + + +{% endblock %} + +{% block content %} +
+
+
+
+ +
+
+
+
+ {{ asset_permission.name }} +
+ + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{% trans 'Name' %}:{{ asset_permission.name }}
{% trans 'User count' %}:{{ asset_permission.users.count }}
{% trans 'User group count' %}:{{ asset_permission.users.count }}
{% trans 'Asset count' %}:{{ asset_permission.assets.count }}
{% trans 'Asset group count' %}:{{ asset_permission.asset_groups.count }}
{% trans 'System user count' %}:{{ asset_permission.system_users.count }}
{% trans 'Action' %}:{{ asset_permission.get_action_display }}
{% trans 'Is active' %}:{{ asset_permission.is_active|yesno:'Yes, No, Unkown' }}
{% trans 'Date expired' %}:{{ asset_permission.date_expired }}
{% trans 'Date created' %}:{{ asset_permission.date_created }}
{% trans 'Created by' %}:{{ asset_permission.created_by }}
{% trans 'Comment' %}:{{ asset_permission.comment }}
+
+
+
+ +
+
+
+ {% trans 'Quick update' %} +
+
+ + + + + + + + + + + + + + + + +
Active: +
+
+ + +
+
+
{% trans 'Retest asset connectivity' %}: + + + +
{% trans 'Repush system user' %}: + + + +
+
+
+ +
+
+ {% trans 'System user' %} +
+
+ + + + + + + + + + + + {% for system_user in system_users %} + + + + + {% endfor %} + +
+ +
+ +
{{ system_user.name }} + +
+
+
+
+
+
+
+
+
+ +{% endblock %} +{% block custom_foot_js %} + +{% endblock %} \ No newline at end of file diff --git a/apps/perms/templates/perms/asset_permission_list.html b/apps/perms/templates/perms/asset_permission_list.html index c186d9dd8..d6e30a35b 100644 --- a/apps/perms/templates/perms/asset_permission_list.html +++ b/apps/perms/templates/perms/asset_permission_list.html @@ -20,31 +20,31 @@ {% endblock %} {% block table_body %} - {% for permission in asset_permission_list %} + {% for asset_permission in asset_permission_list %} - + - - {{ permission.name }} + + {{ asset_permission.name }} - {{ permission.users.count}} - {{ permission.user_groups.count}} - {{ permission.assets.count }} - {{ permission.asset_groups.count }} - {{ permission.system_users.count }} + {{ asset_permission.users.count}} + {{ asset_permission.user_groups.count}} + {{ asset_permission.assets.count }} + {{ asset_permission.asset_groups.count }} + {{ asset_permission.system_users.count }} - {% if permission.is_valid %} + {% if asset_permission.is_valid %} {% else %} {% endif %} - {% trans 'Update' %} - {% trans 'Delete' %} + {% trans 'Update' %} + {% trans 'Delete' %} {% endfor %} diff --git a/apps/perms/templates/perms/asset_permission_user_list.html b/apps/perms/templates/perms/asset_permission_user_list.html new file mode 100644 index 000000000..ec138c401 --- /dev/null +++ b/apps/perms/templates/perms/asset_permission_user_list.html @@ -0,0 +1,186 @@ +{% extends 'base.html' %} +{% load common_tags %} +{% load users_tags %} +{% load static %} +{% load i18n %} + +{% block custom_head_css_js %} + + +{% endblock %} +{% block content %} +
+
+
+
+ +
+
+
+
+ {% trans 'User list of ' %} {{ asset_permission.name }} +
+ + + + + + + + + + +
+
+
+ + + + + + + + + + + {% for user in page_obj %} + + + + + + + + {% endfor %} + +
{% trans 'Name' %}{% trans 'Username' %}{% trans 'Email' %}{% trans 'Active' %}
{{ user.name }}{{ user.username }}{{ user.email }} + {% if user.is_expired and user.is_active %} + + {% else %} + + {% endif %} +
+
+ {% include '_pagination.html' %} +
+
+
+
+
+
+
+ {% trans 'Add user to asset permission' %} +
+
+ + + + + + + + + + + +
+ +
+ +
+
+
+ +
+
+ {% trans 'Add user group to asset permission' %} +
+
+ + + + + + + + + + + + {% for user_group in user_groups %} + + + + + {% endfor %} + +
+ +
+ +
{{ user_group.name }} + +
+
+
+
+
+
+
+
+
+ +{% endblock %} +{% block custom_foot_js %} + +{% endblock %} \ No newline at end of file diff --git a/apps/perms/urls.py b/apps/perms/urls.py index 794ee4884..2749ff36c 100644 --- a/apps/perms/urls.py +++ b/apps/perms/urls.py @@ -14,5 +14,9 @@ urlpatterns = [ name='asset-permission-detail'), url(r'^asset-permission/(?P[0-9]+)/delete$', views.AssetPermissionDeleteView.as_view(), name='asset-permission-delete'), + url(r'^asset-permission/(?P[0-9]+)/user$', views.AssetPermissionUserListView.as_view(), + name='asset-permission-user-list'), + url(r'^asset-permission/(?P[0-9]+)/asset$', views.AssetPermissionAssetListView.as_view(), + name='asset-permission-asset-list'), ] diff --git a/apps/perms/views.py b/apps/perms/views.py index 709eca7d9..37ecca9d7 100644 --- a/apps/perms/views.py +++ b/apps/perms/views.py @@ -11,7 +11,7 @@ from django.urls import reverse_lazy from django.contrib.messages.views import SuccessMessageMixin from django.views.generic.detail import DetailView, SingleObjectMixin -from .hands import AdminUserRequiredMixin, User, UserGroup +from .hands import AdminUserRequiredMixin, User, UserGroup, SystemUser from .models import AssetPermission from .forms import AssetPermissionForm @@ -95,14 +95,17 @@ class AssetPermissionUpdateView(AdminUserRequiredMixin, UpdateView): class AssetPermissionDetailView(AdminUserRequiredMixin, DetailView): - template_name = 'assets/system_user_detail.html' - context_object_name = 'system_user' + template_name = 'perms/asset_permission_detail.html' + context_object_name = 'asset_permission' model = AssetPermission def get_context_data(self, **kwargs): context = { - 'app': _('Assets'), - 'action': _('System user detail') + 'app': _('Perms'), + 'action': _('Asset permission detail'), + 'system_users_remain': [system_user for system_user in SystemUser.objects.all() + if system_user not in self.object.system_users.all()], + 'system_users': self.object.system_users.all(), } kwargs.update(context) return super(AssetPermissionDetailView, self).get_context_data(**kwargs) @@ -112,3 +115,32 @@ class AssetPermissionDeleteView(AdminUserRequiredMixin, DeleteView): model = AssetPermission template_name = 'perms/delete_confirm.html' success_url = reverse_lazy('perms:asset-permission-list') + + +class AssetPermissionUserListView(AdminUserRequiredMixin, SingleObjectMixin, ListView): + template_name = 'perms/asset_permission_user_list.html' + context_object_name = 'asset_permission' + paginate_by = settings.CONFIG.DISPLAY_PER_PAGE + + def get(self, request, *args, **kwargs): + self.object = self.get_object(queryset=AssetPermission.objects.all()) + return super(AssetPermissionUserListView, self).get(request, *args, **kwargs) + + def get_queryset(self): + return self.object.users.all() + + def get_context_data(self, **kwargs): + context = { + 'app': _('Perms'), + 'action': _('Asset permission user list'), + 'users_remain': [user for user in User.objects.all() if user not in self.get_queryset()], + 'user_groups': self.object.user_groups.all(), + 'user_groups_remain': [user_group for user_group in UserGroup.objects.all() + if user_group not in self.object.user_groups.all()] + } + kwargs.update(context) + return super(AssetPermissionUserListView, self).get_context_data(**kwargs) + + +class AssetPermissionAssetListView(AdminUserRequiredMixin, ListView): + pass