mirror of https://github.com/jumpserver/jumpserver
Finish asset permission detail and add user or user group list
parent
7b99a33a2f
commit
4c4f598552
|
@ -22,10 +22,10 @@ class AssetPermission(models.Model):
|
||||||
asset_groups = models.ManyToManyField(AssetGroup, related_name='granted_by_permissions', blank=True)
|
asset_groups = models.ManyToManyField(AssetGroup, related_name='granted_by_permissions', blank=True)
|
||||||
system_users = models.ManyToManyField(SystemUser, related_name='granted_by_permissions')
|
system_users = models.ManyToManyField(SystemUser, related_name='granted_by_permissions')
|
||||||
action = models.CharField(choices=ACTION_CHOICE, max_length=8, default='1')
|
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'))
|
date_expired = models.DateTimeField(default=date_expired_default, verbose_name=_('Date expired'))
|
||||||
created_by = models.CharField(max_length=128, blank=True)
|
created_by = models.CharField(max_length=128, blank=True, verbose_name=_('Created by'))
|
||||||
date_created = models.DateTimeField(auto_now=True)
|
date_created = models.DateTimeField(auto_now=True, verbose_name=_('Date created'))
|
||||||
comment = models.TextField(verbose_name=_('Comment'), blank=True)
|
comment = models.TextField(verbose_name=_('Comment'), blank=True)
|
||||||
|
|
||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
|
@ -33,7 +33,7 @@ class AssetPermission(models.Model):
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def is_valid(self):
|
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
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,224 @@
|
||||||
|
{% extends 'base.html' %}
|
||||||
|
{% load common_tags %}
|
||||||
|
{% load users_tags %}
|
||||||
|
{% load static %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
|
{% block custom_head_css_js %}
|
||||||
|
<link href="{% static "css/plugins/select2/select2.min.css" %}" rel="stylesheet">
|
||||||
|
<script src="{% static "js/plugins/select2/select2.full.min.js" %}"></script>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<div class="wrapper wrapper-content animated fadeInRight">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<div class="ibox float-e-margins">
|
||||||
|
<div class="panel-options">
|
||||||
|
<ul class="nav nav-tabs">
|
||||||
|
<li class="active">
|
||||||
|
<a href="{% url 'perms:asset-permission-detail' pk=asset_permission.id %}" class="text-center"><i class="fa fa-laptop"></i> {% trans 'Detail' %} </a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="{% url 'perms:asset-permission-user-list' pk=asset_permission.id %}" class="text-center">
|
||||||
|
<i class="fa fa-bar-chart-o"></i> {% trans 'Users and user groups' %}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="{% url 'perms:asset-permission-asset-list' pk=asset_permission.id %}" class="text-center">
|
||||||
|
<i class="fa fa-bar-chart-o"></i> {% trans 'Assets and asset gruops' %}</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="tab-content">
|
||||||
|
<div class="col-sm-7" style="padding-left: 0;">
|
||||||
|
<div class="ibox float-e-margins">
|
||||||
|
<div class="ibox-title">
|
||||||
|
<span class="label"><b>{{ asset_permission.name }}</b></span>
|
||||||
|
<div class="ibox-tools">
|
||||||
|
<a class="collapse-link">
|
||||||
|
<i class="fa fa-chevron-up"></i>
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||||
|
<i class="fa fa-wrench"></i>
|
||||||
|
</a>
|
||||||
|
<ul class="dropdown-menu dropdown-user">
|
||||||
|
<li><a href="#"></a>
|
||||||
|
</li>
|
||||||
|
<li><a href="#"></a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<a class="close-link">
|
||||||
|
<i class="fa fa-times"></i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="ibox-content">
|
||||||
|
<table class="table">
|
||||||
|
<tbody>
|
||||||
|
<tr class="no-borders-tr">
|
||||||
|
<td>{% trans 'Name' %}:</td>
|
||||||
|
<td><b>{{ asset_permission.name }}</b></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>{% trans 'User count' %}:</td>
|
||||||
|
<td><b>{{ asset_permission.users.count }}</b></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>{% trans 'User group count' %}:</td>
|
||||||
|
<td><b>{{ asset_permission.users.count }}</b></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>{% trans 'Asset count' %}:</td>
|
||||||
|
<td><b>{{ asset_permission.assets.count }}</b></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>{% trans 'Asset group count' %}:</td>
|
||||||
|
<td><b>{{ asset_permission.asset_groups.count }}</b></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>{% trans 'System user count' %}:</td>
|
||||||
|
<td><b>{{ asset_permission.system_users.count }}</b></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>{% trans 'Action' %}:</td>
|
||||||
|
<td><b>{{ asset_permission.get_action_display }}</b></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>{% trans 'Is active' %}:</td>
|
||||||
|
<td><b>{{ asset_permission.is_active|yesno:'Yes, No, Unkown' }}</b></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>{% trans 'Date expired' %}:</td>
|
||||||
|
<td><b>{{ asset_permission.date_expired }}</b></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>{% trans 'Date created' %}:</td>
|
||||||
|
<td><b>{{ asset_permission.date_created }}</b></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>{% trans 'Created by' %}:</td>
|
||||||
|
<td><b>{{ asset_permission.created_by }}</b></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>{% trans 'Comment' %}:</td>
|
||||||
|
<td><b>{{ asset_permission.comment }}</b></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-sm-5" style="padding-left: 0;padding-right: 0">
|
||||||
|
<div class="panel panel-primary">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<i class="fa fa-info-circle"></i> {% trans 'Quick update' %}
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<table class="table">
|
||||||
|
<tbody>
|
||||||
|
<tr class="no-borders-tr">
|
||||||
|
<td width="50%">Active:</td>
|
||||||
|
<td><span style="float: right">
|
||||||
|
<div class="switch">
|
||||||
|
<div class="onoffswitch">
|
||||||
|
<input type="checkbox" {% if asset_permission.is_active %} checked {% endif %} class="onoffswitch-checkbox" id="is_active">
|
||||||
|
<label class="onoffswitch-label" for="is_active">
|
||||||
|
<span class="onoffswitch-inner"></span>
|
||||||
|
<span class="onoffswitch-switch"></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="50%">{% trans 'Retest asset connectivity' %}:</td>
|
||||||
|
<td>
|
||||||
|
<span style="float: right">
|
||||||
|
<button type="button" class="btn btn-primary btn-xs" style="width: 54px">{% trans 'Start' %}</button>
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td width="50%">{% trans 'Repush system user' %}:</td>
|
||||||
|
<td>
|
||||||
|
<span style="float: right">
|
||||||
|
<button type="button" class="btn btn-primary btn-xs" style="width: 54px">{% trans 'Push' %}</button>
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="panel panel-info">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<i class="fa fa-info-circle"></i> {% trans 'System user' %}
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<table class="table group_edit">
|
||||||
|
<tbody>
|
||||||
|
<form>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2" class="no-borders">
|
||||||
|
<select data-placeholder="{% trans 'Select system users' %}" class="select2" style="width: 100%" multiple="" tabindex="4">
|
||||||
|
{% for system_user in system_users_remain %}
|
||||||
|
<option value="{{ system_user.id }}" id="opt_{{ system_user.id }}">{{ system_user.name }}: {{ system_user.username }}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2" class="no-borders">
|
||||||
|
<button type="button" class="btn btn-info btn-small" id="btn_add_user_group">{% trans 'Join' %}</button>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
{% for system_user in system_users %}
|
||||||
|
<tr>
|
||||||
|
<td ><b class="bdg_user_group" data-gid={{ system_user.id }}>{{ system_user.name }}</b></td>
|
||||||
|
<td>
|
||||||
|
<button class="btn btn-danger btn-xs btn_delete_user_group" type="button" style="float: right;"><i class="fa fa-minus"></i></button>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
|
{% block custom_foot_js %}
|
||||||
|
<script>
|
||||||
|
{# function switch_user_status(obj) {#}
|
||||||
|
{# var status = $(obj).prop('checked');#}
|
||||||
|
{##}
|
||||||
|
{# $.ajax({#}
|
||||||
|
{# url: "{% url 'users:user-active-api' pk=user.id %}",#}
|
||||||
|
{# type: "PUT",#}
|
||||||
|
{# data: {#}
|
||||||
|
{# 'is_active': status#}
|
||||||
|
{# },#}
|
||||||
|
{# success: function (data, status) {#}
|
||||||
|
{# console.log(data)#}
|
||||||
|
{# },#}
|
||||||
|
{# error: function () {#}
|
||||||
|
{# console.log('error')#}
|
||||||
|
{# }#}
|
||||||
|
{# })#}
|
||||||
|
{# }#}
|
||||||
|
$(document).ready(function () {
|
||||||
|
$('.select2').select2();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
{% endblock %}
|
|
@ -20,31 +20,31 @@
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block table_body %}
|
{% block table_body %}
|
||||||
{% for permission in asset_permission_list %}
|
{% for asset_permission in asset_permission_list %}
|
||||||
<tr class="gradeX">
|
<tr class="gradeX">
|
||||||
<td class="text-center">
|
<td class="text-center">
|
||||||
<input type="checkbox" name="checked" value="{{ permission.id }}">
|
<input type="checkbox" name="checked" value="{{ asset_permission.id }}">
|
||||||
</td>
|
</td>
|
||||||
<td class="text-center">
|
<td class="text-center">
|
||||||
<a href="">
|
<a href="{% url 'perms:asset-permission-detail' pk=asset_permission.id %}">
|
||||||
{{ permission.name }}
|
{{ asset_permission.name }}
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
<td class="text-center">{{ permission.users.count}}</td>
|
<td class="text-center">{{ asset_permission.users.count}}</td>
|
||||||
<td class="text-center">{{ permission.user_groups.count}}</td>
|
<td class="text-center">{{ asset_permission.user_groups.count}}</td>
|
||||||
<td class="text-center">{{ permission.assets.count }}</td>
|
<td class="text-center">{{ asset_permission.assets.count }}</td>
|
||||||
<td class="text-center">{{ permission.asset_groups.count }}</td>
|
<td class="text-center">{{ asset_permission.asset_groups.count }}</td>
|
||||||
<td class="text-center">{{ permission.system_users.count }}</td>
|
<td class="text-center">{{ asset_permission.system_users.count }}</td>
|
||||||
<td class="text-center">
|
<td class="text-center">
|
||||||
{% if permission.is_valid %}
|
{% if asset_permission.is_valid %}
|
||||||
<i class="fa fa-check text-navy"></i>
|
<i class="fa fa-check text-navy"></i>
|
||||||
{% else %}
|
{% else %}
|
||||||
<i class="fa fa-times text-danger"></i>
|
<i class="fa fa-times text-danger"></i>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
<td class="text-center">
|
<td class="text-center">
|
||||||
<a href="{% url 'perms:asset-permission-update' pk=permission.id %}" class="btn btn-xs btn-info">{% trans 'Update' %}</a>
|
<a href="{% url 'perms:asset-permission-update' pk=asset_permission.id %}" class="btn btn-xs btn-info">{% trans 'Update' %}</a>
|
||||||
<a href="{% url 'perms:asset-permission-delete' pk=permission.id %}" class="btn btn-xs btn-danger del">{% trans 'Delete' %}</a>
|
<a href="{% url 'perms:asset-permission-delete' pk=asset_permission.id %}" class="btn btn-xs btn-danger del">{% trans 'Delete' %}</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
|
@ -0,0 +1,186 @@
|
||||||
|
{% extends 'base.html' %}
|
||||||
|
{% load common_tags %}
|
||||||
|
{% load users_tags %}
|
||||||
|
{% load static %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
|
{% block custom_head_css_js %}
|
||||||
|
<link href="{% static "css/plugins/select2/select2.min.css" %}" rel="stylesheet">
|
||||||
|
<script src="{% static "js/plugins/select2/select2.full.min.js" %}"></script>
|
||||||
|
{% endblock %}
|
||||||
|
{% block content %}
|
||||||
|
<div class="wrapper wrapper-content animated fadeInRight">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<div class="ibox float-e-margins">
|
||||||
|
<div class="panel-options">
|
||||||
|
<ul class="nav nav-tabs">
|
||||||
|
<li>
|
||||||
|
<a href="{% url 'perms:asset-permission-detail' pk=asset_permission.id %}" class="text-center">
|
||||||
|
<i class="fa fa-laptop"></i> {% trans 'Detail' %} </a>
|
||||||
|
</li>
|
||||||
|
<li class="active">
|
||||||
|
<a href="{% url 'perms:asset-permission-user-list' pk=asset_permission.id %}" class="text-center">
|
||||||
|
<i class="fa fa-bar-chart-o"></i> {% trans 'Users and user groups' %}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="{% url 'perms:asset-permission-asset-list' pk=asset_permission.id %}" class="text-center">
|
||||||
|
<i class="fa fa-bar-chart-o"></i> {% trans 'Assets and asset gruops' %}</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="tab-content">
|
||||||
|
<div class="col-sm-7" style="padding-left: 0;">
|
||||||
|
<div class="ibox float-e-margins">
|
||||||
|
<div class="ibox-title">
|
||||||
|
<span style="float: left">{% trans 'User list of ' %} <b>{{ asset_permission.name }}</b></span>
|
||||||
|
<div class="ibox-tools">
|
||||||
|
<a class="collapse-link">
|
||||||
|
<i class="fa fa-chevron-up"></i>
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||||
|
<i class="fa fa-wrench"></i>
|
||||||
|
</a>
|
||||||
|
<ul class="dropdown-menu dropdown-user">
|
||||||
|
<li><a href="#"></a>
|
||||||
|
</li>
|
||||||
|
<li><a href="#"></a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<a class="close-link">
|
||||||
|
<i class="fa fa-times"></i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="ibox-content">
|
||||||
|
<table class="table table-hover">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>{% trans 'Name' %}</th>
|
||||||
|
<th>{% trans 'Username' %}</th>
|
||||||
|
<th>{% trans 'Email' %}</th>
|
||||||
|
<th>{% trans 'Active' %}</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{% for user in page_obj %}
|
||||||
|
<tr>
|
||||||
|
<td>{{ user.name }}</td>
|
||||||
|
<td>{{ user.username }}</td>
|
||||||
|
<td>{{ user.email }}</td>
|
||||||
|
<td>
|
||||||
|
{% if user.is_expired and user.is_active %}
|
||||||
|
<i class="fa fa-times text-danger"></i>
|
||||||
|
{% else %}
|
||||||
|
<i class="fa fa-check text-navy"></i>
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<div class="row">
|
||||||
|
{% include '_pagination.html' %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-5" style="padding-left: 0;padding-right: 0">
|
||||||
|
<div class="panel panel-primary">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<i class="fa fa-info-circle"></i> {% trans 'Add user to asset permission' %}
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<table class="table">
|
||||||
|
<tbody>
|
||||||
|
<form>
|
||||||
|
<tr class="no-borders-tr">
|
||||||
|
<td colspan="2">
|
||||||
|
<select data-placeholder="{% trans 'Select user' %}" class="select2" style="width: 100%" multiple="" tabindex="4">
|
||||||
|
{% for user in users_remain %}
|
||||||
|
<option value="{{ user.id }}">{{ user.name }}: {{ user.username }}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="no-borders-tr">
|
||||||
|
<td colspan="2">
|
||||||
|
<button type="button" class="btn btn-primary btn-sm">{% trans 'Add' %}</button>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</form>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="panel panel-info">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<i class="fa fa-info-circle"></i> {% trans 'Add user group to asset permission' %}
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<table class="table group_edit">
|
||||||
|
<tbody>
|
||||||
|
<form>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2" class="no-borders">
|
||||||
|
<select data-placeholder="{% trans 'Select user groups' %}" class="select2" style="width: 100%" multiple="" tabindex="4">
|
||||||
|
{% for user_group in user_groups_remain %}
|
||||||
|
<option value="{{ user_group.id }}" id="opt_{{ user_group.id }}">{{ user_group.name }}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2" class="no-borders">
|
||||||
|
<button type="button" class="btn btn-info btn-small" id="btn_add_user_group">{% trans 'Join' %}</button>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
{% for user_group in user_groups %}
|
||||||
|
<tr>
|
||||||
|
<td ><b class="bdg_user_group" data-gid={{ user_group.id }}>{{ user_group.name }}</b></td>
|
||||||
|
<td>
|
||||||
|
<button class="btn btn-danger btn-xs btn_delete_user_group" type="button" style="float: right;"><i class="fa fa-minus"></i></button>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
|
{% block custom_foot_js %}
|
||||||
|
<script>
|
||||||
|
{# function switch_user_status(obj) {#}
|
||||||
|
{# var status = $(obj).prop('checked');#}
|
||||||
|
{##}
|
||||||
|
{# $.ajax({#}
|
||||||
|
{# url: "{% url 'users:user-active-api' pk=user.id %}",#}
|
||||||
|
{# type: "PUT",#}
|
||||||
|
{# data: {#}
|
||||||
|
{# 'is_active': status#}
|
||||||
|
{# },#}
|
||||||
|
{# success: function (data, status) {#}
|
||||||
|
{# console.log(data)#}
|
||||||
|
{# },#}
|
||||||
|
{# error: function () {#}
|
||||||
|
{# console.log('error')#}
|
||||||
|
{# }#}
|
||||||
|
{# })#}
|
||||||
|
{# }#}
|
||||||
|
$(document).ready(function () {
|
||||||
|
$('.select2').select2();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
{% endblock %}
|
|
@ -14,5 +14,9 @@ urlpatterns = [
|
||||||
name='asset-permission-detail'),
|
name='asset-permission-detail'),
|
||||||
url(r'^asset-permission/(?P<pk>[0-9]+)/delete$', views.AssetPermissionDeleteView.as_view(),
|
url(r'^asset-permission/(?P<pk>[0-9]+)/delete$', views.AssetPermissionDeleteView.as_view(),
|
||||||
name='asset-permission-delete'),
|
name='asset-permission-delete'),
|
||||||
|
url(r'^asset-permission/(?P<pk>[0-9]+)/user$', views.AssetPermissionUserListView.as_view(),
|
||||||
|
name='asset-permission-user-list'),
|
||||||
|
url(r'^asset-permission/(?P<pk>[0-9]+)/asset$', views.AssetPermissionAssetListView.as_view(),
|
||||||
|
name='asset-permission-asset-list'),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ from django.urls import reverse_lazy
|
||||||
from django.contrib.messages.views import SuccessMessageMixin
|
from django.contrib.messages.views import SuccessMessageMixin
|
||||||
from django.views.generic.detail import DetailView, SingleObjectMixin
|
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 .models import AssetPermission
|
||||||
from .forms import AssetPermissionForm
|
from .forms import AssetPermissionForm
|
||||||
|
|
||||||
|
@ -95,14 +95,17 @@ class AssetPermissionUpdateView(AdminUserRequiredMixin, UpdateView):
|
||||||
|
|
||||||
|
|
||||||
class AssetPermissionDetailView(AdminUserRequiredMixin, DetailView):
|
class AssetPermissionDetailView(AdminUserRequiredMixin, DetailView):
|
||||||
template_name = 'assets/system_user_detail.html'
|
template_name = 'perms/asset_permission_detail.html'
|
||||||
context_object_name = 'system_user'
|
context_object_name = 'asset_permission'
|
||||||
model = AssetPermission
|
model = AssetPermission
|
||||||
|
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
context = {
|
context = {
|
||||||
'app': _('Assets'),
|
'app': _('Perms'),
|
||||||
'action': _('System user detail')
|
'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)
|
kwargs.update(context)
|
||||||
return super(AssetPermissionDetailView, self).get_context_data(**kwargs)
|
return super(AssetPermissionDetailView, self).get_context_data(**kwargs)
|
||||||
|
@ -112,3 +115,32 @@ class AssetPermissionDeleteView(AdminUserRequiredMixin, DeleteView):
|
||||||
model = AssetPermission
|
model = AssetPermission
|
||||||
template_name = 'perms/delete_confirm.html'
|
template_name = 'perms/delete_confirm.html'
|
||||||
success_url = reverse_lazy('perms:asset-permission-list')
|
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
|
||||||
|
|
Loading…
Reference in New Issue