diff --git a/circle/dashboard/forms.py b/circle/dashboard/forms.py index acb3c12..f0dbc9a 100644 --- a/circle/dashboard/forms.py +++ b/circle/dashboard/forms.py @@ -40,9 +40,9 @@ from django.utils.translation import ugettext as _ from sizefield.widgets import FileSizeWidget from firewall.models import Vlan, Host -from storage.models import Disk, DataStore +from storage.models import Disk from vm.models import ( - InstanceTemplate, Lease, InterfaceTemplate, Node, Trait, Instance + InstanceTemplate, Lease, InterfaceTemplate, Node, Trait ) from .models import Profile, GroupProfile @@ -846,20 +846,6 @@ class LeaseForm(forms.ModelForm): model = Lease -class DiskAddForm(forms.Form): - name = forms.CharField() - size = forms.CharField(widget=FileSizeWidget, required=False) - url = forms.CharField(required=False) - is_template = forms.CharField() - object_pk = forms.CharField() - - def __init__(self, *args, **kwargs): - self.is_template = kwargs.pop("is_template") - self.object_pk = kwargs.pop("object_pk") - self.user = kwargs.pop("user") - super(DiskAddForm, self).__init__(*args, **kwargs) - self.initial['is_template'] = 1 if self.is_template else 0 - self.initial['object_pk'] = self.object_pk def clean_size(self): size_in_bytes = self.cleaned_data.get("size") diff --git a/circle/dashboard/templates/dashboard/template-edit.html b/circle/dashboard/templates/dashboard/template-edit.html index cd4a081..ddd3223 100644 --- a/circle/dashboard/templates/dashboard/template-edit.html +++ b/circle/dashboard/templates/dashboard/template-edit.html @@ -105,17 +105,6 @@ </ul> </div> </div> - - <div class="panel panel-default"> - <div class="panel-heading"> - <h4 class="no-margin"><i class="icon-folder-open"></i> {% trans "Create new disk" %}</h4> - </div> - <div class="panel-body"> - <form action="{% url "dashboard.views.disk-add" %}" method="POST"> - {% crispy disk_add_form %} - </form> - </div> - </div> </div><!-- .col-md-4 --> </div><!-- .row --> diff --git a/circle/dashboard/templates/dashboard/vm-detail/resources.html b/circle/dashboard/templates/dashboard/vm-detail/resources.html index c352e46..0257cc4 100644 --- a/circle/dashboard/templates/dashboard/vm-detail/resources.html +++ b/circle/dashboard/templates/dashboard/vm-detail/resources.html @@ -47,9 +47,6 @@ <h3> {% trans "Disks" %} <div class="pull-right"> - <a href="#" id="vm-details-disk-add" class="btn btn-success btn-xs"> - <i class="icon-plus"></i> {% trans "Add new disk" %} - </a> </div> </h3> @@ -68,17 +65,6 @@ </div> </div> -<div class="js-hidden row" id="vm-details-disk-add-form"> - <div class="col-md-12"> - <div> - <hr /> - <form method="POST" action="{% url "dashboard.views.disk-add" %}" style="max-width: 350px;"> - {% crispy forms.disk_add_form %} - </form> - <hr /> - </div> - </div> -</div> {% block extra_js %} <style> diff --git a/circle/dashboard/urls.py b/circle/dashboard/urls.py index 0d03d4c..338d190 100644 --- a/circle/dashboard/urls.py +++ b/circle/dashboard/urls.py @@ -20,7 +20,7 @@ from django.conf.urls import patterns, url, include from vm.models import Instance from .views import ( - AclUpdateView, DiskAddView, FavouriteView, GroupAclUpdateView, GroupDelete, + AclUpdateView, FavouriteView, GroupAclUpdateView, GroupDelete, GroupDetailView, GroupList, IndexView, InstanceActivityDetail, LeaseCreate, LeaseDelete, LeaseDetail, MyPreferencesView, NodeAddTraitView, NodeCreate, NodeDelete, @@ -128,8 +128,6 @@ urlpatterns = patterns( url(r'^notifications/$', NotificationView.as_view(), name="dashboard.views.notifications"), - url(r'^disk/add/$', DiskAddView.as_view(), - name="dashboard.views.disk-add"), url(r'^disk/(?P<pk>\d+)/remove/$', DiskRemoveView.as_view(), name="dashboard.views.disk-remove"), url(r'^disk/(?P<pk>\d+)/status/$', get_disk_download_status, diff --git a/circle/dashboard/views.py b/circle/dashboard/views.py index 6dd78d5..4d72078 100644 --- a/circle/dashboard/views.py +++ b/circle/dashboard/views.py @@ -45,7 +45,6 @@ from django.views.generic import (TemplateView, DetailView, View, DeleteView, from django.contrib import messages from django.utils.translation import ugettext as _ from django.utils.translation import ungettext as __ -from django.template.defaultfilters import title as title_filter from django.template.loader import render_to_string from django.template import RequestContext from django.templatetags.static import static @@ -57,7 +56,7 @@ from braces.views import (LoginRequiredMixin, SuperuserRequiredMixin, from braces.views._access import AccessMixin from .forms import ( - CircleAuthenticationForm, DiskAddForm, HostForm, LeaseForm, MyProfileForm, + CircleAuthenticationForm, HostForm, LeaseForm, MyProfileForm, NodeForm, TemplateForm, TraitForm, VmCustomizeForm, GroupCreateForm, UserCreationForm, GroupProfileUpdateForm, UnsubscribeForm, CirclePasswordChangeForm, VmSaveForm, @@ -277,12 +276,6 @@ class VmDetailView(CheckedDetailView): instance=self.get_object()).values_list("vlan", flat=True) ).all() context['acl'] = get_vm_acl_data(instance) - context['forms'] = { - 'disk_add_form': DiskAddForm( - user=self.request.user, - is_template=False, object_pk=self.get_object().pk, - prefix="disk"), - } context['os_type_icon'] = instance.os_type.replace("unknown", "question") # ipv6 infos @@ -1066,12 +1059,6 @@ class TemplateDetail(LoginRequiredMixin, SuccessMessageMixin, UpdateView): context = super(TemplateDetail, self).get_context_data(**kwargs) context['acl'] = get_vm_acl_data(obj) context['disks'] = obj.disks.all() - context['disk_add_form'] = DiskAddForm( - user=self.request.user, - is_template=True, - object_pk=obj.pk, - prefix="disk", - ) return context def get_success_url(self): @@ -2525,47 +2512,6 @@ def circle_login(request): return response -class DiskAddView(TemplateView): - - def post(self, *args, **kwargs): - is_template = self.request.POST.get("disk-is_template") - object_pk = self.request.POST.get("disk-object_pk") - is_template = int(is_template) == 1 - if is_template: - obj = InstanceTemplate.objects.get(pk=object_pk) - else: - obj = Instance.objects.get(pk=object_pk) - - if not obj.has_level(self.request.user, 'owner'): - raise PermissionDenied() - - form = DiskAddForm( - self.request.POST, - user=self.request.user, - is_template=is_template, object_pk=object_pk, - prefix="disk" - ) - - if form.is_valid(): - if form.cleaned_data.get("size"): - messages.success(self.request, _("Disk successfully added.")) - else: - messages.success(self.request, _("Disk download started.")) - form.save() - else: - error = "<br /> ".join(["<strong>%s</strong>: %s" % - (title_filter(i[0]), i[1][0]) - for i in form.errors.items()]) - messages.error(self.request, error) - - if is_template: - r = obj.get_absolute_url() - else: - r = obj.get_absolute_url() - r = "%s#resources" % r - return redirect(r) - - class MyPreferencesView(UpdateView): model = Profile diff --git a/circle/vm/operations.py b/circle/vm/operations.py index 81ee1b8..e8afca9 100644 --- a/circle/vm/operations.py +++ b/circle/vm/operations.py @@ -100,26 +100,6 @@ class AddInterfaceOperation(InstanceOperation): register_operation(AddInterfaceOperation) -class AddDiskOperation(InstanceOperation): - activity_code_suffix = 'add_disk' - id = 'add_disk' - name = _("add disk") - description = _("Add the specified disk to the VM.") - - def check_precond(self): - super(AddDiskOperation, self).check_precond() - # TODO remove check when hot-attach is implemented - if self.instance.status not in ['STOPPED']: - raise self.instance.WrongStateError(self.instance) - - def _operation(self, activity, user, system, disk): - # TODO implement with hot-attach when it'll be available - return self.instance.disks.add(disk) - - -register_operation(AddDiskOperation) - - class CreateDiskOperation(InstanceOperation): activity_code_suffix = 'create_disk' id = 'create_disk'