Loading services/webapp/code/rosetta/base_app/templates/components/computing.html +3 −3 Original line number Diff line number Diff line <table class="dashboard"> <table class="dashboard" style="max-width:500px"> <tr> <td><b>ID</b></td> Loading @@ -22,12 +22,12 @@ <tr> <td><b>Sys Conf</b></td> <td>{{ computing.sys_conf_data }}</td> <td>{{ computing.sys_conf_data }} {% if request.user.is_superuser %} [<a href="/edit_computing_conf?type=sys&computing_uuid={{ computing.uuid}}">Edit</a>] {% endif %}</td> </tr> <tr> <td><b>User Conf</b></td> <td>{{ computing.user_conf_data }}</td> <td>{{ computing.user_conf_data }} [<a href="/edit_computing_conf?type=user&computing_uuid={{ computing.uuid}}">Edit</a>]</td> </tr> Loading services/webapp/code/rosetta/base_app/templates/computings.html +2 −2 Original line number Diff line number Diff line Loading @@ -27,8 +27,8 @@ {% endfor %} <br /> <a href="/add_computing">Add new...</a> <!-- <br /> <a href="/add_computing">Add new...</a> --> {% endif %} <br /> Loading services/webapp/code/rosetta/base_app/templates/edit_computing_conf.html 0 → 100644 +70 −0 Original line number Diff line number Diff line {% 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" %} services/webapp/code/rosetta/base_app/views.py +119 −2 Original line number Diff line number Diff line import uuid import json import subprocess from django.conf import settings from django.shortcuts import render Loading @@ -6,7 +7,7 @@ from django.contrib.auth import authenticate, login, logout from django.http import HttpResponse, HttpResponseRedirect from django.contrib.auth.models import User 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 .decorators import public_view, private_view from .exceptions import ErrorMessage Loading Loading @@ -715,7 +716,7 @@ def computings(request): #========================= # Add Compute view # Add Computing view #========================= @private_view Loading @@ -730,3 +731,119 @@ def add_computing(request): 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}) services/webapp/code/rosetta/urls.py +1 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ urlpatterns = [ url(r'^task_log/$', base_app_views.task_log), url(r'^computings/$', base_app_views.computings), 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'^add_container/$', base_app_views.add_container), Loading Loading
services/webapp/code/rosetta/base_app/templates/components/computing.html +3 −3 Original line number Diff line number Diff line <table class="dashboard"> <table class="dashboard" style="max-width:500px"> <tr> <td><b>ID</b></td> Loading @@ -22,12 +22,12 @@ <tr> <td><b>Sys Conf</b></td> <td>{{ computing.sys_conf_data }}</td> <td>{{ computing.sys_conf_data }} {% if request.user.is_superuser %} [<a href="/edit_computing_conf?type=sys&computing_uuid={{ computing.uuid}}">Edit</a>] {% endif %}</td> </tr> <tr> <td><b>User Conf</b></td> <td>{{ computing.user_conf_data }}</td> <td>{{ computing.user_conf_data }} [<a href="/edit_computing_conf?type=user&computing_uuid={{ computing.uuid}}">Edit</a>]</td> </tr> Loading
services/webapp/code/rosetta/base_app/templates/computings.html +2 −2 Original line number Diff line number Diff line Loading @@ -27,8 +27,8 @@ {% endfor %} <br /> <a href="/add_computing">Add new...</a> <!-- <br /> <a href="/add_computing">Add new...</a> --> {% endif %} <br /> Loading
services/webapp/code/rosetta/base_app/templates/edit_computing_conf.html 0 → 100644 +70 −0 Original line number Diff line number Diff line {% 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" %}
services/webapp/code/rosetta/base_app/views.py +119 −2 Original line number Diff line number Diff line import uuid import json import subprocess from django.conf import settings from django.shortcuts import render Loading @@ -6,7 +7,7 @@ from django.contrib.auth import authenticate, login, logout from django.http import HttpResponse, HttpResponseRedirect from django.contrib.auth.models import User 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 .decorators import public_view, private_view from .exceptions import ErrorMessage Loading Loading @@ -715,7 +716,7 @@ def computings(request): #========================= # Add Compute view # Add Computing view #========================= @private_view Loading @@ -730,3 +731,119 @@ def add_computing(request): 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})
services/webapp/code/rosetta/urls.py +1 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ urlpatterns = [ url(r'^task_log/$', base_app_views.task_log), url(r'^computings/$', base_app_views.computings), 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'^add_container/$', base_app_views.add_container), Loading