mirror of
				https://github.com/retspen/webvirtcloud
				synced 2025-07-31 12:41:08 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			175 lines
		
	
	
	
		
			11 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			175 lines
		
	
	
	
		
			11 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| {% extends "base.html" %}
 | |
| {% load i18n %}
 | |
| {% load staticfiles %}
 | |
| {% block title %}{% trans "Users" %}{% endblock %}
 | |
| {% block content %}
 | |
|             <!-- Page Heading -->
 | |
|             <div class="row">
 | |
|                 <div class="col-lg-12">
 | |
|                     {% include 'create_user_block.html' %}
 | |
|                     <div class="float-right search">
 | |
|                         <input id="filter" class="form-control" type="text" placeholder="{% trans 'Search' %}">
 | |
|                     </div>
 | |
|                     <h2 class="page-header">{% trans "Users" %}</h1>
 | |
|                 </div>
 | |
|             </div>
 | |
|             <!-- /.row -->
 | |
| 
 | |
|             {% include 'errors_block.html' %}
 | |
| 
 | |
|             <div class="row">
 | |
|                 {% if not users %}
 | |
|                     <div class="col-lg-12">
 | |
|                         <div class="alert alert-warning alert-dismissable">
 | |
|                             <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
 | |
|                             <i class="fa fa-exclamation-triangle"></i> <strong>{% trans "Warning" %}:</strong> {% trans "You don't have any user" %}
 | |
|                         </div>
 | |
|                     </div>
 | |
|                 {% else %}
 | |
|                     <div class="col-lg-12">
 | |
|                         <table class="table table-striped table-hover">
 | |
|                             <thead>
 | |
|                                 <tr>
 | |
|                                     <th scope="col">{% trans "Username" %}</th>
 | |
|                                     <th scope="col">{% trans "Status" %}</th>
 | |
|                                     <th scope="col">{% trans "Staff" %}</th>
 | |
|                                     <th scope="col">{% trans "Superuser" %}</th>
 | |
|                                     <th scope="col">{% trans "Clone" %}</th>
 | |
|                                 </tr>
 | |
|                             </thead>
 | |
|                             <tbody class="searchable">
 | |
|                             {% for user in users %}
 | |
|                                 <tr class="{% if not user.is_active %}danger{% endif %}">
 | |
|                                     <td>
 | |
|                                         <a href="{% url 'account' user.id %}"><strong>{{ user.username }}</strong></a>
 | |
|                                         <a data-toggle="modal" href="#editUser{{ user.id }}" class="float-right" title="{% trans "Edit" %}">
 | |
|                                             <span class="fa fa-cog"></span>
 | |
|                                         </a>
 | |
|                                     </td>
 | |
|                                     <td>
 | |
|                                         {% if user.is_active %}
 | |
|                                             {% trans "Active" %}
 | |
|                                         {% else %}
 | |
|                                             {% trans "Blocked" %}
 | |
|                                         {% endif %}
 | |
|                                     </td>
 | |
|                                     <td>{% if user.is_staff %}<span class="fa fa-check"></span>{% endif %}</td>
 | |
|                                     <td>{% if user.is_superuser %}<span class="fa fa-check"></span>{% endif %}</td>
 | |
|                                     <td>{% if perms.instances.clone_instances %}<span class="fa fa-check"></span>{% endif %}</td>
 | |
|                                 </tr>
 | |
|                             {% endfor %}
 | |
|                             </tbody>
 | |
|                         </table>
 | |
| 
 | |
|                         {% for user in users %}
 | |
|                         <!-- Modal Edit -->
 | |
|                         <div class="modal fade" id="editUser{{ user.id }}" tabindex="-1" role="dialog" aria-labelledby="editUserLabel" aria-hidden="true">
 | |
|                             <div class="modal-dialog">
 | |
|                                 <div class="modal-content">
 | |
|                                     <form method="post" role="form" aria-label="Edit user form">{% csrf_token %}
 | |
|                                         <div class="modal-header">
 | |
|                                             <h5 class="modal-title">{% trans "Edit user info" %}</h5>
 | |
|                                             <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
 | |
|                                         </div>
 | |
|                                         <div class="modal-body">
 | |
|                                             <div class="form-group row">
 | |
|                                                 <label class="col-sm-4 col-form-label">{% trans "Name" %}</label>
 | |
|                                                 <div class="col-sm-6">
 | |
|                                                     <input type="hidden" name="user_id" value="{{ user.id }}">
 | |
|                                                     <input type="text" name="name" class="form-control" value="{{ user.username }}" disabled>
 | |
|                                                 </div>
 | |
|                                             </div>
 | |
|                                             <div class="form-group row">
 | |
|                                                 <label class="col-sm-4 col-form-label">{% trans "Password" %}</label>
 | |
|                                                 <div class="col-sm-6">
 | |
|                                                     <input type="password" name="user_pass" class="form-control" value="">
 | |
|                                                 </div>
 | |
|                                             </div>
 | |
|                                             <div class="form-group row">
 | |
|                                                 <label class="col-sm-4 col-form-label">{% trans "Is staff" %}</label>
 | |
|                                                 <div class="col-sm-2">
 | |
|                                                     <input type="checkbox" name="user_is_staff" {% if user.is_staff %}checked{% endif %}>
 | |
|                                                 </div>
 | |
|                                             </div>
 | |
|                                             <div class="form-group row">
 | |
|                                                 <label class="col-sm-4 col-form-label">{% trans "Is superuser" %}</label>
 | |
|                                                 <div class="col-sm-2">
 | |
|                                                     <input type="checkbox" name="user_is_superuser" {% if user.is_superuser %}checked{% endif %}>
 | |
|                                                 </div>
 | |
|                                             </div>
 | |
|                                             <div class="form-group row">
 | |
|                                                 <label class="col-sm-4 col-form-label">{% trans "Can clone instances" %}</label>
 | |
|                                                 <div class="col-sm-2">
 | |
|                                                     <input type="checkbox" name="userattributes_can_clone_instances" {% if user.userattributes.can_clone_instances %}checked{% endif %}>
 | |
|                                                 </div>
 | |
|                                             </div>
 | |
|                                             <div class="form-group row">
 | |
|                                                 <label class="col-sm-4 col-form-label">{% trans "Max instances" %}</label>
 | |
|                                                 <div class="col-sm-6">
 | |
|                                                     <input type="text" name="userattributes_max_instances" class="form-control" value="{{ user.userattributes.max_instances }}">
 | |
|                                                 </div>
 | |
|                                             </div>
 | |
|                                             <div class="form-group row">
 | |
|                                                 <label class="col-sm-4 col-form-label">{% trans "Max cpus" %}</label>
 | |
|                                                 <div class="col-sm-6">
 | |
|                                                     <input type="text" name="userattributes_max_cpus" class="form-control" value="{{ user.userattributes.max_cpus }}">
 | |
|                                                 </div>
 | |
|                                             </div>
 | |
|                                             <div class="form-group row">
 | |
|                                                 <label class="col-sm-4 col-form-label">{% trans "Max memory (MB)" %}</label>
 | |
|                                                 <div class="col-sm-6">
 | |
|                                                     <input type="text" name="userattributes_max_memory" class="form-control" value="{{ user.userattributes.max_memory }}">
 | |
|                                                 </div>
 | |
|                                             </div>
 | |
|                                             <div class="form-group row">
 | |
|                                                 <label class="col-sm-4 col-form-label">{% trans "Max disk size (GB)" %}</label>
 | |
|                                                 <div class="col-sm-6">
 | |
|                                                     <input type="text" name="userattributes_max_disk_size" class="form-control" value="{{ user.userattributes.max_disk_size }}">
 | |
|                                                 </div>
 | |
|                                             </div>
 | |
|                                         </div>
 | |
|                                         <div class="modal-footer">
 | |
|                                             <button type="submit" class="float-left btn btn-danger" name="delete">
 | |
|                                                 {% trans "Delete" %}
 | |
|                                             </button>
 | |
|                                             {% if user.is_active %}
 | |
|                                                 <button type="submit" class="btn btn-warning mr-auto" name="block">
 | |
|                                                     {% trans "Block" %}
 | |
|                                                 </button>
 | |
|                                             {% else %}
 | |
|                                                 <button type="submit" class="btn btn-success mr-auto" name="unblock">
 | |
|                                                     {% trans "Unblock" %}
 | |
|                                                 </button>
 | |
|                                             {% endif %}
 | |
|                                             <button type="button" class="btn btn-secondary" data-dismiss="modal">
 | |
|                                                 {% trans "Close" %}
 | |
|                                             </button>
 | |
|                                             <button type="submit" class="btn btn-primary" name="edit">
 | |
|                                                 {% trans "Edit" %}
 | |
|                                             </button>
 | |
|                                         </div>
 | |
|                                     </form>
 | |
|                                 </div><!-- /.modal-content -->
 | |
|                             </div><!-- /.modal-dialog -->
 | |
|                         </div><!-- /.modal -->
 | |
|                     {% endfor %}
 | |
|                     </div>
 | |
|                 {% endif %}
 | |
|             </div>
 | |
| {% endblock %}
 | |
| {% block script %}
 | |
| <script>
 | |
|     function filter_table() {
 | |
|         var rex = new RegExp($(this).val(), 'i');
 | |
|         $('.searchable tr').hide();
 | |
|         $('.searchable tr').filter(function () {
 | |
|             return rex.test($(this).text());
 | |
|         }).show();
 | |
|     }
 | |
|     $(document).ready(function () {
 | |
|         (function ($) {
 | |
|             $('#filter').keyup(filter_table)
 | |
|         }(jQuery));
 | |
|     });
 | |
| </script>
 | |
| {% endblock %}
 |