Skip to content
Snippets Groups Projects
Commit 6e4f63bb authored by Stefano Alberto Russo's avatar Stefano Alberto Russo
Browse files

Added support for editing computing confs.

parent 3f2fa624
No related branches found
No related tags found
No related merge requests found
<table class="dashboard"> <table class="dashboard" style="max-width:500px">
<tr> <tr>
<td><b>ID</b></td> <td><b>ID</b></td>
...@@ -22,12 +22,12 @@ ...@@ -22,12 +22,12 @@
<tr> <tr>
<td><b>Sys Conf</b></td> <td><b>Sys Conf</b></td>
<td>{{ computing.sys_conf_data }}</td> <td>{{ computing.sys_conf_data }} {% if request.user.is_superuser %} &nbsp;[<a href="/edit_computing_conf?type=sys&computing_uuid={{ computing.uuid}}">Edit</a>] {% endif %}</td>
</tr> </tr>
<tr> <tr>
<td><b>User Conf</b></td> <td><b>User Conf</b></td>
<td>{{ computing.user_conf_data }}</td> <td>{{ computing.user_conf_data }} &nbsp;[<a href="/edit_computing_conf?type=user&computing_uuid={{ computing.uuid}}">Edit</a>]</td>
</tr> </tr>
......
...@@ -27,8 +27,8 @@ ...@@ -27,8 +27,8 @@
{% endfor %} {% endfor %}
<br /> <!-- <br />
<a href="/add_computing">Add new...</a> <a href="/add_computing">Add new...</a> -->
{% endif %} {% endif %}
<br /> <br />
......
{% load static %}
{% include "header.html" %}
{% include "navigation.html" with main_path='/main/' %}
<br/>
<br/>
<div class="container">
<div class="dashboard">
<div class="span8 offset2">
<h1>Edit computing conf</h1>
<hr>
<h4>Edit the configuration in JSON format for {{ data.computing }}</h4>
<br/>
<form action="/edit_computing_conf/" method="POST">
{% csrf_token %}
<input type="hidden" name="type" value="{{ data.type }}">
<input type="hidden" name="computing_uuid" value="{{ data.computing.uuid }}">
<table class="dashboard" style="max-width:430px">
<tr>
<td>
<textarea name="new_conf" style="height:300px; width:500px">
{{ data.computing_conf_data}}
</textarea>
</td>
</tr>
{% if data.saved %}
<tr>
<td colspan=2 align=center style="padding:0px">
<font color="green">Saved</font>
</td>
</tr>
{% endif %}
<tr>
<td colspan=2 align=center style="padding:20px">
<input type="submit" value="Save">
</td>
</tr>
</table>
</form>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
</div>
</div>
</div>
{% include "footer.html" %}
import uuid import uuid
import json
import subprocess import subprocess
from django.conf import settings from django.conf import settings
from django.shortcuts import render from django.shortcuts import render
...@@ -6,7 +7,7 @@ from django.contrib.auth import authenticate, login, logout ...@@ -6,7 +7,7 @@ from django.contrib.auth import authenticate, login, logout
from django.http import HttpResponse, HttpResponseRedirect from django.http import HttpResponse, HttpResponseRedirect
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.shortcuts import redirect from django.shortcuts import redirect
from .models import Profile, LoginToken, Task, TaskStatuses, Container, Computing, Keys from .models import Profile, LoginToken, Task, TaskStatuses, Container, Computing, Keys, ComputingSysConf, ComputingUserConf
from .utils import send_email, format_exception, timezonize, os_shell, booleanize, debug_param from .utils import send_email, format_exception, timezonize, os_shell, booleanize, debug_param
from .decorators import public_view, private_view from .decorators import public_view, private_view
from .exceptions import ErrorMessage from .exceptions import ErrorMessage
...@@ -715,7 +716,7 @@ def computings(request): ...@@ -715,7 +716,7 @@ def computings(request):
#========================= #=========================
# Add Compute view # Add Computing view
#========================= #=========================
@private_view @private_view
...@@ -730,3 +731,119 @@ def add_computing(request): ...@@ -730,3 +731,119 @@ def add_computing(request):
return render(request, 'add_computing.html', {'data': data}) return render(request, 'add_computing.html', {'data': data})
#=========================
# Edit Computing conf view
#=========================
@private_view
def edit_computing_conf(request):
# Init data
data={}
data['user'] = request.user
data['profile'] = Profile.objects.get(user=request.user)
data['title'] = 'Add computing'
# Get computing conf type
computing_conf_type = request.GET.get('type', request.POST.get('type', None))
if not computing_conf_type:
raise Exception('Missing type')
# Get computing uuid
computing_uuid = request.GET.get('computing_uuid', request.POST.get('computing_uuid', None))
if not computing_uuid:
raise Exception('Missing computing_uuid')
new_conf = request.POST.get('new_conf', None)
if computing_conf_type == 'sys':
data['type'] = 'sys'
if not request.user.is_superuser:
raise Exception('Cannot edit sys conf as not superuser')
# Get computing
try:
computing = Computing.objects.get(uuid=computing_uuid)
data['computing'] = computing
except ComputingSysConf.DoesNotExist:
raise Exception('Unknown computing "{}"'.format(computing_uuid))
# Get computing conf
computingSysConf = ComputingSysConf.objects.get(computing=computing)
# Edit conf?
if new_conf:
new_conf_data = json.loads(new_conf)
logger.debug('Setting new conf data for sys conf "{}": "{}"'.format(computingSysConf.uuid, new_conf_data))
computingSysConf.data = new_conf_data
computingSysConf.save()
data['saved'] = True
# Dump conf data for the webpage
data['computing_conf_data'] = json.dumps(computingSysConf.data)
elif computing_conf_type == 'user':
data['type'] = 'user'
# Get computing
try:
computing = Computing.objects.get(uuid=computing_uuid)
data['computing'] = computing
except ComputingUserConf.DoesNotExist:
raise Exception('Unknown computing "{}"'.format(computing_uuid))
# Get computing conf
computingUserConf = ComputingUserConf.objects.get(computing=computing)
# Edit conf?
if new_conf:
new_conf_data = json.loads(new_conf)
logger.debug('Setting new conf data for user conf "{}": "{}"'.format(computingUserConf.uuid, new_conf_data))
computingUserConf.data = new_conf_data
computingUserConf.save()
data['saved'] = True
# Dump conf data for the webpage
data['computing_conf_data'] = json.dumps(computingUserConf.data)
else:
raise Exception('Unknown computing conf type "{}"'.format(computing_conf_type))
return render(request, 'edit_computing_conf.html', {'data': data})
...@@ -45,6 +45,7 @@ urlpatterns = [ ...@@ -45,6 +45,7 @@ urlpatterns = [
url(r'^task_log/$', base_app_views.task_log), url(r'^task_log/$', base_app_views.task_log),
url(r'^computings/$', base_app_views.computings), url(r'^computings/$', base_app_views.computings),
url(r'^add_computing/$', base_app_views.add_computing), url(r'^add_computing/$', base_app_views.add_computing),
url(r'^edit_computing_conf/$', base_app_views.edit_computing_conf),
url(r'^containers/$', base_app_views.containers), url(r'^containers/$', base_app_views.containers),
url(r'^add_container/$', base_app_views.add_container), url(r'^add_container/$', base_app_views.add_container),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment