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 %}
+
+ {{ system_user.name }} |
+
+
+ |
+
+ {% endfor %}
+
+
+
+
+
+
+
+
+
+
+
+{% 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 }}
+
+
+
+
+
+
+ {% trans 'Name' %} |
+ {% trans 'Username' %} |
+ {% trans 'Email' %} |
+ {% trans 'Active' %} |
+
+
+
+ {% for user in page_obj %}
+
+ {{ user.name }} |
+ {{ user.username }} |
+ {{ user.email }} |
+
+ {% if user.is_expired and user.is_active %}
+
+ {% else %}
+
+ {% endif %}
+ |
+
+
+ {% endfor %}
+
+
+
+ {% include '_pagination.html' %}
+
+
+
+
+
+
+
+ {% trans 'Add user to asset permission' %}
+
+
+
+
+
+
+ {% trans 'Add user group to asset permission' %}
+
+
+
+
+
+
+ {% for user_group in user_groups %}
+
+ {{ user_group.name }} |
+
+
+ |
+
+ {% endfor %}
+
+
+
+
+
+
+
+
+
+
+
+{% 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