diff --git a/circle/dashboard/static/dashboard/vm-common.js b/circle/dashboard/static/dashboard/vm-common.js index 00e6b9a..677be8d 100644 --- a/circle/dashboard/static/dashboard/vm-common.js +++ b/circle/dashboard/static/dashboard/vm-common.js @@ -43,10 +43,10 @@ $(function() { success: function(data, textStatus, xhr) { $('#confirmation-modal').modal("hide"); - if(data.redirect) { + if(data.success) { $('a[href="#activity"]').trigger("click"); - if(data.messages.length > 0) { + if(data.messages && data.messages.length > 0) { addMessage(data.messages.join("<br />"), "danger"); } } diff --git a/circle/dashboard/static/dashboard/vm-details.js b/circle/dashboard/static/dashboard/vm-details.js index 89b0e96..1dde2d4 100644 --- a/circle/dashboard/static/dashboard/vm-details.js +++ b/circle/dashboard/static/dashboard/vm-details.js @@ -341,6 +341,7 @@ function checkNewActivity(only_status, runs) { if(!only_status) { $("#activity-timeline").html(data['activities']); $("#ops").html(data['ops']); + $("#disk-ops").html(data['disk_ops']); $("[title]").tooltip(); } diff --git a/circle/dashboard/templates/dashboard/vm-detail/_disk-operations.html b/circle/dashboard/templates/dashboard/vm-detail/_disk-operations.html new file mode 100644 index 0000000..a803173 --- /dev/null +++ b/circle/dashboard/templates/dashboard/vm-detail/_disk-operations.html @@ -0,0 +1,10 @@ +{% load i18n %} + +{% for op in ops %} +{% if op.is_disk_operation %} + <a href="{{op.get_url}}" class="btn btn-success btn-xs + operation operation-{{op.op}} btn btn-default"> + <i class="icon-{{op.icon}}"></i> + {{op.name}} </a> +{% endif %} +{% endfor %} diff --git a/circle/dashboard/templates/dashboard/vm-detail/resources.html b/circle/dashboard/templates/dashboard/vm-detail/resources.html index 39b77f6..6e8fbca 100644 --- a/circle/dashboard/templates/dashboard/vm-detail/resources.html +++ b/circle/dashboard/templates/dashboard/vm-detail/resources.html @@ -47,18 +47,9 @@ <h3> {% trans "Disks" %} <div class="pull-right"> - {% if op.download_disk %} - <a href="{{op.download_disk.get_url}}" class="btn btn-success btn-xs - operation operation-{{op.download_disk.op}} btn btn-default"> - <i class="icon-{{op.download_disk.icon}}"></i> - {{op.download_disk.name}} </a> - {% endif %} - {% if op.create_disk %} - <a href="{{op.create_disk.get_url}}" class="btn btn-success btn-xs - operation operation-{{op.create_disk.op}} btn btn-default"> - <i class="icon-{{op.create_disk.icon}}"></i> - {{op.create_disk.name}} </a> - {% endif %} + <div id="disk-ops"> + {% include "dashboard/vm-detail/_disk-operations.html" %} + </div> </div> </h3> diff --git a/circle/dashboard/views.py b/circle/dashboard/views.py index bcc29eb..ac2b223 100644 --- a/circle/dashboard/views.py +++ b/circle/dashboard/views.py @@ -579,7 +579,7 @@ class VmOperationView(OperationView): store = messages.get_messages(request) store.used = True return HttpResponse( - json.dumps({'redirect': resp.url, + json.dumps({'success': True, 'messages': [unicode(m) for m in store]}), content_type="application=json" ) @@ -609,7 +609,7 @@ class FormOperationMixin(object): request, extra, *args, **kwargs) if request.is_ajax(): return HttpResponse( - json.dumps({'redirect': resp.url}), + json.dumps({'success': True}), content_type="application=json" ) else: @@ -624,6 +624,7 @@ class VmCreateDiskView(FormOperationMixin, VmOperationView): form_class = VmCreateDiskForm show_in_toolbar = False icon = 'hdd' + is_disk_operation = True class VmDownloadDiskView(FormOperationMixin, VmOperationView): @@ -632,6 +633,7 @@ class VmDownloadDiskView(FormOperationMixin, VmOperationView): form_class = VmDownloadDiskForm show_in_toolbar = False icon = 'download' + is_disk_operation = True class VmMigrateView(VmOperationView): @@ -2135,6 +2137,10 @@ def vm_activity(request, pk): "dashboard/vm-detail/_operations.html", RequestContext(request, context), ) + response['disk_ops'] = render_to_string( + "dashboard/vm-detail/_disk-operations.html", + RequestContext(request, context), + ) return HttpResponse( json.dumps(response),