mirror of
https://github.com/retspen/webvirtcloud
synced 2024-12-24 23:25:24 +00:00
section #template renamed to #options, added title and description fields
This commit is contained in:
parent
510e0e6ee5
commit
2ceb456a4f
3 changed files with 56 additions and 11 deletions
|
@ -517,8 +517,8 @@
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li role="presentation">
|
<li role="presentation">
|
||||||
<a href="#template" aria-controls="template" role="tab" data-toggle="tab">
|
<a href="#options" aria-controls="options" role="tab" data-toggle="tab">
|
||||||
{% trans "Template" %}
|
{% trans "Options" %}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -690,9 +690,20 @@
|
||||||
</form>
|
</form>
|
||||||
<div class="clearfix"></div>
|
<div class="clearfix"></div>
|
||||||
</div>
|
</div>
|
||||||
<div role="tabpanel" class="tab-pane tab-pane-bordered" id="template">
|
<div role="tabpanel" class="tab-pane tab-pane-bordered" id="options">
|
||||||
<p>{% trans "Is this instance template?" %}</p>
|
|
||||||
<form class="form-horizontal" action="" method="post" role="form">{% csrf_token %}
|
<form class="form-horizontal" action="" method="post" role="form">{% csrf_token %}
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-3 control-label">{% trans "Title" %}</label>
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<input type="text" name="title" class="form-control" value="{{ title }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-3 control-label">{% trans "Description" %}</label>
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<textarea name="description" class="form-control">{{ description }}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-sm-3 control-label">{% trans "Is template" %}</label>
|
<label class="col-sm-3 control-label">{% trans "Is template" %}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
|
@ -700,9 +711,9 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% ifequal status 5 %}
|
{% ifequal status 5 %}
|
||||||
<button type="submit" class="btn btn-lg btn-success pull-right" name="change_template">{% trans "Change" %}</button>
|
<button type="submit" class="btn btn-lg btn-success pull-right" name="change_options">{% trans "Change" %}</button>
|
||||||
{% else %}
|
{% else %}
|
||||||
<button class="btn btn-lg btn-success pull-right disabled" name="change_template">{% trans "Change" %}</button>
|
<button class="btn btn-lg btn-success pull-right disabled" name="change_options">{% trans "Change" %}</button>
|
||||||
{% endifequal %}
|
{% endifequal %}
|
||||||
</form>
|
</form>
|
||||||
<div class="clearfix"></div>
|
<div class="clearfix"></div>
|
||||||
|
@ -1207,7 +1218,7 @@
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (~$.inArray(hash, ['#media', '#network', '#clone', '#autostart', '#xmledit', '#vncsettings', '#migrate', '#template'])) {
|
if (~$.inArray(hash, ['#media', '#network', '#clone', '#autostart', '#xmledit', '#vncsettings', '#migrate', '#options'])) {
|
||||||
var btnsect = $('#navbtn>li>a');
|
var btnsect = $('#navbtn>li>a');
|
||||||
$(btnsect).each(function () {
|
$(btnsect).each(function () {
|
||||||
if ($(this).attr('href') === '#settings') {
|
if ($(this).attr('href') === '#settings') {
|
||||||
|
|
|
@ -218,6 +218,7 @@ def instance(request, compute_id, vname):
|
||||||
uuid = conn.get_uuid()
|
uuid = conn.get_uuid()
|
||||||
memory = conn.get_memory()
|
memory = conn.get_memory()
|
||||||
cur_memory = conn.get_cur_memory()
|
cur_memory = conn.get_cur_memory()
|
||||||
|
title = conn.get_title()
|
||||||
description = conn.get_description()
|
description = conn.get_description()
|
||||||
disks = conn.get_disk_device()
|
disks = conn.get_disk_device()
|
||||||
media = conn.get_media_device()
|
media = conn.get_media_device()
|
||||||
|
@ -525,12 +526,19 @@ def instance(request, compute_id, vname):
|
||||||
addlogmsg(request.user.username, instance.name, msg)
|
addlogmsg(request.user.username, instance.name, msg)
|
||||||
return HttpResponseRedirect(request.get_full_path() + '#network')
|
return HttpResponseRedirect(request.get_full_path() + '#network')
|
||||||
|
|
||||||
if 'change_template' in request.POST:
|
if 'change_options' in request.POST:
|
||||||
instance.is_template = request.POST.get('is_template', False)
|
instance.is_template = request.POST.get('is_template', False)
|
||||||
instance.save()
|
instance.save()
|
||||||
msg = _("Edit template %s" % instance.is_template)
|
|
||||||
|
options = {}
|
||||||
|
for post in request.POST:
|
||||||
|
if post in ['title', 'description']:
|
||||||
|
options[post] = request.POST.get(post, '')
|
||||||
|
conn.set_options(options)
|
||||||
|
|
||||||
|
msg = _("Edit options")
|
||||||
addlogmsg(request.user.username, instance.name, msg)
|
addlogmsg(request.user.username, instance.name, msg)
|
||||||
return HttpResponseRedirect(request.get_full_path() + '#template')
|
return HttpResponseRedirect(request.get_full_path() + '#options')
|
||||||
|
|
||||||
conn.close()
|
conn.close()
|
||||||
|
|
||||||
|
|
|
@ -185,8 +185,13 @@ class wvmInstance(wvmConnect):
|
||||||
mem = util.get_xml_path(self._XMLDesc(0), "/domain/currentMemory")
|
mem = util.get_xml_path(self._XMLDesc(0), "/domain/currentMemory")
|
||||||
return int(mem) / 1024
|
return int(mem) / 1024
|
||||||
|
|
||||||
|
def get_title(self):
|
||||||
|
title = util.get_xml_path(self._XMLDesc(0), "/domain/title")
|
||||||
|
return title if title else ''
|
||||||
|
|
||||||
def get_description(self):
|
def get_description(self):
|
||||||
return util.get_xml_path(self._XMLDesc(0), "/domain/description")
|
description = util.get_xml_path(self._XMLDesc(0), "/domain/description")
|
||||||
|
return description if description else ''
|
||||||
|
|
||||||
def get_max_memory(self):
|
def get_max_memory(self):
|
||||||
return self.wvm.getInfo()[1] * 1048576
|
return self.wvm.getInfo()[1] * 1048576
|
||||||
|
@ -703,3 +708,24 @@ class wvmInstance(wvmConnect):
|
||||||
new_xml = ElementTree.tostring(tree)
|
new_xml = ElementTree.tostring(tree)
|
||||||
self._defineXML(new_xml)
|
self._defineXML(new_xml)
|
||||||
|
|
||||||
|
def set_options(self, options):
|
||||||
|
"""
|
||||||
|
Function change description, title
|
||||||
|
"""
|
||||||
|
xml = self._XMLDesc(VIR_DOMAIN_XML_SECURE)
|
||||||
|
tree = ElementTree.fromstring(xml)
|
||||||
|
|
||||||
|
for o in ['title', 'description']:
|
||||||
|
option = tree.find(o)
|
||||||
|
option_value = str(options[o]).strip()
|
||||||
|
if not option_value:
|
||||||
|
if not option is None:
|
||||||
|
tree.remove(option)
|
||||||
|
else:
|
||||||
|
if option is None:
|
||||||
|
option = ElementTree.SubElement(tree, o)
|
||||||
|
option.text = option_value
|
||||||
|
|
||||||
|
new_xml = ElementTree.tostring(tree)
|
||||||
|
self._defineXML(new_xml)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue