mirror of
				https://github.com/retspen/webvirtcloud
				synced 2025-07-31 12:41:08 +00:00 
			
		
		
		
	Merge pull request #112 from nitmir/user-vnc
Add an option to allow an user to change VNC settings
This commit is contained in:
		
						commit
						346b96b319
					
				
					 6 changed files with 45 additions and 2 deletions
				
			
		
							
								
								
									
										19
									
								
								accounts/migrations/0004_userinstance_is_vnc.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								accounts/migrations/0004_userinstance_is_vnc.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,19 @@ | |||
| # -*- coding: utf-8 -*- | ||||
| from __future__ import unicode_literals | ||||
| 
 | ||||
| from django.db import migrations, models | ||||
| 
 | ||||
| 
 | ||||
| class Migration(migrations.Migration): | ||||
| 
 | ||||
|     dependencies = [ | ||||
|         ('accounts', '0003_usersshkey'), | ||||
|     ] | ||||
| 
 | ||||
|     operations = [ | ||||
|         migrations.AddField( | ||||
|             model_name='userinstance', | ||||
|             name='is_vnc', | ||||
|             field=models.BooleanField(default=False), | ||||
|         ), | ||||
|     ] | ||||
|  | @ -8,6 +8,7 @@ class UserInstance(models.Model): | |||
|     instance = models.ForeignKey(Instance) | ||||
|     is_change = models.BooleanField(default=False) | ||||
|     is_delete = models.BooleanField(default=False) | ||||
|     is_vnc = models.BooleanField(default=False) | ||||
| 
 | ||||
|     def __unicode__(self): | ||||
|         return self.instance.name | ||||
|  |  | |||
|  | @ -29,6 +29,7 @@ | |||
|                                     <tr> | ||||
|                                         <th>#</th> | ||||
|                                         <th>{% trans "Instance" %}</th> | ||||
|                                         <th>{% trans "VNC" %}</th> | ||||
|                                         <th>{% trans "Resize" %}</th> | ||||
|                                         <th>{% trans "Delete" %}</th> | ||||
|                                         <th colspan="2">{% trans "Action" %}</th> | ||||
|  | @ -39,6 +40,7 @@ | |||
|                                         <tr> | ||||
|                                             <td>{{ forloop.counter }}</td> | ||||
|                                             <td><a href="{% url 'instance' inst.instance.compute.id inst.instance.name %}">{{ inst.instance.name }}</a></td> | ||||
|                                             <td>{{ inst.is_vnc }}</td> | ||||
|                                             <td>{{ inst.is_change }}</td> | ||||
|                                             <td>{{ inst.is_delete }}</td> | ||||
|                                             <td style="width:5px;"> | ||||
|  | @ -57,6 +59,15 @@ | |||
|                                                             <div class="modal-body"> | ||||
|                                                                 <form class="form-horizontal" method="post" action="" role="form">{% csrf_token %} | ||||
|                                                                     <input type="hidden" name="user_inst" value="{{ inst.id }}"> | ||||
|                                                                     <div class="form-group"> | ||||
|                                                                         <label class="col-sm-4 control-label">{% trans "VNC" %}</label> | ||||
|                                                                         <div class="col-sm-6"> | ||||
|                                                                             <select type="text" class="form-control" name="inst_vnc"> | ||||
|                                                                                 <option value="">False</option> | ||||
|                                                                                 <option value="1" {% if inst.is_vnc %}selected{% endif %}>True</option> | ||||
|                                                                             </select> | ||||
|                                                                         </div> | ||||
|                                                                     </div> | ||||
|                                                                     <div class="form-group"> | ||||
|                                                                         <label class="col-sm-4 control-label">{% trans "Resize" %}</label> | ||||
|                                                                         <div class="col-sm-6"> | ||||
|  |  | |||
|  | @ -151,11 +151,13 @@ def account(request, user_id): | |||
|             return HttpResponseRedirect(request.get_full_path()) | ||||
|         if 'permission' in request.POST: | ||||
|             user_inst = request.POST.get('user_inst', '') | ||||
|             inst_vnc = request.POST.get('inst_vnc', '') | ||||
|             inst_change = request.POST.get('inst_change', '') | ||||
|             inst_delete = request.POST.get('inst_delete', '') | ||||
|             edit_user_inst = UserInstance.objects.get(id=user_inst) | ||||
|             edit_user_inst.is_change = bool(inst_change) | ||||
|             edit_user_inst.is_delete = bool(inst_delete) | ||||
|             edit_user_inst.is_vnc = bool(inst_vnc) | ||||
|             edit_user_inst.save() | ||||
|             return HttpResponseRedirect(request.get_full_path()) | ||||
|         if 'add' in request.POST: | ||||
|  |  | |||
|  | @ -477,11 +477,15 @@ | |||
|                                                         {% trans "Autostart" %} | ||||
|                                                     </a> | ||||
|                                                 </li> | ||||
|                                             {% endif %} | ||||
|                                             {% if request.user.is_superuser or userinstace.is_vnc %} | ||||
|                                                 <li role="presentation"> | ||||
|                                                     <a href="#vncsettings" aria-controls="vncsettings" role="tab" data-toggle="tab"> | ||||
|                                                         {% trans "VNC" %} | ||||
|                                                     </a> | ||||
|                                                 </li> | ||||
|                                             {% endif %} | ||||
|                                             {% if request.user.is_superuser %} | ||||
|                                                 <li role="presentation"> | ||||
|                                                     <a href="#clone" aria-controls="clone" role="tab" data-toggle="tab"> | ||||
|                                                         {% trans "Clone" %} | ||||
|  | @ -551,6 +555,8 @@ | |||
|                                                     </form> | ||||
|                                                     <div class="clearfix"></div> | ||||
|                                                 </div> | ||||
|                                             {% endif %} | ||||
|                                             {% if request.user.is_superuser or userinstace.is_vnc %} | ||||
|                                                 <div role="tabpanel" class="tab-pane tab-pane-bordered" id="vncsettings"> | ||||
|                                                     <p>{% trans "To set console's type, shutdown the instance." %}</p> | ||||
|                                                     <form class="form-horizontal" method="post" role="form">{% csrf_token %} | ||||
|  | @ -643,6 +649,8 @@ | |||
|                                                     </form> | ||||
|                                                     <div class="clearfix"></div> | ||||
|                                                 </div> | ||||
|                                             {% endif %} | ||||
|                                             {% if request.user.is_superuser %} | ||||
|                                                 <div role="tabpanel" class="tab-pane tab-pane-bordered" id="clone"> | ||||
|                                                     <p style="font-weight:bold;">{% trans "Create a clone" %}</p> | ||||
|                                                     <form class="form-horizontal" action="" method="post" role="form">{% csrf_token %} | ||||
|  |  | |||
|  | @ -260,7 +260,7 @@ def instance(request, compute_id, vname): | |||
|                 addlogmsg(request.user.username, instance.name, msg) | ||||
|                 return HttpResponseRedirect(request.get_full_path() + '#powerforce') | ||||
| 
 | ||||
|             if 'delete' in request.POST: | ||||
|             if 'delete' in request.POST and (request.user.is_superuser or userinstace.is_delete): | ||||
|                 if conn.get_status() == 1: | ||||
|                     conn.force_shutdown() | ||||
|                 if request.POST.get('delete_disk', ''): | ||||
|  | @ -330,7 +330,7 @@ def instance(request, compute_id, vname): | |||
|                     msg = _("Please shutdow down your instance and then try again") | ||||
|                     error_messages.append(msg) | ||||
| 
 | ||||
|             if 'resize' in request.POST: | ||||
|             if 'resize' in request.POST and (request.user.is_superuser or userinstace.is_change): | ||||
|                 vcpu = request.POST.get('vcpu', '') | ||||
|                 cur_vcpu = request.POST.get('cur_vcpu', '') | ||||
|                 memory = request.POST.get('memory', '') | ||||
|  | @ -418,6 +418,7 @@ def instance(request, compute_id, vname): | |||
|                         addlogmsg(request.user.username, instance.name, msg) | ||||
|                         return HttpResponseRedirect(request.get_full_path() + '#xmledit') | ||||
| 
 | ||||
|             if request.user.is_superuser or userinstace.is_vnc: | ||||
|                 if 'set_console_passwd' in request.POST: | ||||
|                     if request.POST.get('auto_pass', ''): | ||||
|                         passwd = randomPasswd() | ||||
|  | @ -456,6 +457,7 @@ def instance(request, compute_id, vname): | |||
|                     addlogmsg(request.user.username, instance.name, msg) | ||||
|                     return HttpResponseRedirect(request.get_full_path() + '#vncsettings') | ||||
| 
 | ||||
|             if request.user.is_superuser: | ||||
|                 if 'migrate' in request.POST: | ||||
|                     compute_id = request.POST.get('compute_id', '') | ||||
|                     live = request.POST.get('live_migrate', False) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue