Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions instances/templates/instances/instance_form.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<div class="card" id="config_card">
{% load material_form %}
<h5 style="font-weight:bold">Instance config</h5>
<form name="instance_form" action="start" method="POST"
onsubmit="return (document.forms['instance_form']['cfg'].value.length>0)">{% csrf_token %}
{% form form=form %}{% endform %}
<ul class="collapsible" data-collapsible="accordion">
<li class="active">
<div class="collapsible-header" style="font-weight:bold">Settings</div>
<div class="collapsible-body">
{% form form=form.settings %}{% endform %}
</div>
</li>
<li>
<div class="collapsible-header" style="font-weight:bold">Configuration</div>
<div class="collapsible-body">
{% form form=form.configuration %}{% endform %}
</div>
</li>
<li>
<div class="collapsible-header" style="font-weight:bold">AssistRules</div>
<div class="collapsible-body">
{% form form=form.assistRules %}{% endform %}
</div>
</li>
<li>
<div class="collapsible-header" style="font-weight:bold">EventRules</div>
<div class="collapsible-body">
{% form form=form.eventRules %}{% endform %}
</div>
</li>
</ul>
</ul>

<button class="btn green" type="submit" id="create_instance">Create and Start</button>
</form>
</div>
51 changes: 14 additions & 37 deletions instances/templates/instances/instances.html
Original file line number Diff line number Diff line change
Expand Up @@ -21,44 +21,8 @@
{% endfor %}
{% endif %}

<div class="card">
{% load material_form %}
<h5 style="font-weight:bold">Instance config</h5>
<form name="instance_form" action="start" method="POST"
onsubmit="return (document.forms['instance_form']['cfg'].value.length>0)">{% csrf_token %}
{% form form=form %}{% endform %}
<ul class="collapsible" data-collapsible="accordion">
<li class="active">
<div class="collapsible-header" style="font-weight:bold">Settings</div>
<div class="collapsible-body">
{% form form=form.settings %}{% endform %}
</div>
</li>
<li>
<div class="collapsible-header" style="font-weight:bold">Configuration</div>
<div class="collapsible-body">
{% form form=form.configuration %}{% endform %}
</div>
</li>
<li>
<div class="collapsible-header" style="font-weight:bold">AssistRules</div>
<div class="collapsible-body">
{% form form=form.assistRules %}{% endform %}
</div>
</li>
<li>
<div class="collapsible-header" style="font-weight:bold">EventRules</div>
<div class="collapsible-body">
{% form form=form.eventRules %}{% endform %}
</div>
</li>
</ul>
</ul>

<button class="btn green" type="submit">Start</button>
</form>
{% include "instances/instance_form.html" %}

</div>
</div>

<div class="container">
Expand Down Expand Up @@ -90,6 +54,8 @@ <h5 style="font-weight:bold">Server instances</h5><br>
<button id="restart{{forloop.counter0}}" class="btn green" onclick="start(this, '{{name}}')">Start</button>
</td><td>
<button id="delete{{forloop.counter0}}" class="btn red" onclick="del(this, '{{name}}')">Delete</button>
</td><td>
<button id="edit{{forloop.counter0}}" class="btn blue" onclick="edit(this, '{{name}}')">Edit</button>
</td>
{% endif %}
</tr>
Expand Down Expand Up @@ -134,5 +100,16 @@ <h5 style="font-weight:bold">Server instances</h5><br>
$('tr#row'+el.id.replace('delete','')).remove();
});
}
function edit(el, name) {
//el.disabled = true;
$.post("/instances/"+name+"/edit", function(html) {
$('div#config_card').replaceWith(html);
$('button#create_instance').text('Save Changes')
$('.collapsible').collapsible();
$('form[name=instance_form]').attr('action', 'edit_instance')

})

}
</script>
{% endblock %}
4 changes: 3 additions & 1 deletion instances/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,12 @@
urlpatterns = [
path('', views.index, name='instances'),
path('start', views.create, name='start'),
path('<name>/', views.instance, name='instance'),
path('edit_instance', views.edit_instance, name='edit_instance'),
path('<name>/', views.instance, name='instance'),
path('<name>/start', views.start, name='start'),
path('<name>/stop', views.stop, name='stop'),
path('<name>/delete', views.delete, name='delete'),
path('<name>/edit', views.edit, name='edit'),
path('<name>/stderr', views.stderr, name='stderr'),
path('<name>/stdout', views.stdout, name='stdout'),
path('<name>/serverlog', views.serverlog, name='serverlog'),
Expand Down
30 changes: 29 additions & 1 deletion instances/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,14 @@ def render_from(request, form):
}
return HttpResponse(template.render(context, request))

#TODO: change name to better suit this
def render_settings(request, form):
template = loader.get_template('instances/instance_form.html')
context = {
'form': form,
'executors': executors
}
return HttpResponse(template.render(context, request))

def write_config(name, inst_dir, form):
### use the values of the default *.json as basis
Expand Down Expand Up @@ -291,7 +299,7 @@ def random_word():
return s


def index(request):
def index(request, name=None):
# read defaults from files
cfg = json.load(open(os.path.join(
settings.ACCSERVER, 'cfg', 'configuration.json'), 'r', encoding='utf-16'))
Expand Down Expand Up @@ -325,3 +333,23 @@ def index(request):

return render_from(request, InstanceForm(cfg))

@login_required
def edit(request, name):

cfg = json.load(open(os.path.join(
settings.DATA_DIR, 'instances', name, 'cfg', 'configuration.json'), 'r', encoding='utf-16'
))
cfg.update(json.load(open(os.path.join(
settings.DATA_DIR, 'instances', name, 'cfg', 'settings.json'), 'r', encoding='utf-16')))
cfg.update(json.load(open(os.path.join(
settings.DATA_DIR, 'instances', name, 'cfg', 'assistRules.json'), 'r', encoding='utf-16')))
cfg.update(json.load(open(os.path.join(
settings.DATA_DIR, 'instances', name, 'cfg', 'eventRules.json'), 'r', encoding='utf-16')))

cfg['instanceName'] = name
return render_settings(request, InstanceForm(cfg))

@login_required
def edit_instance(request, name):
#TODO: basic methodology - validate config, stop running instance, unlink/delete exiting config dirs, call create method, restart server
pass