From 0fecf77a6aeaa8288110a864aeada1a48eee1ef5 Mon Sep 17 00:00:00 2001 From: Kálmán Viktor <kviktor@cloud.bme.hu> Date: Tue, 6 May 2014 13:03:11 +0200 Subject: [PATCH] dashboard: remove template clone functionality --- circle/dashboard/forms.py | 52 ---------------------------------------------------- circle/dashboard/templates/dashboard/template-clone.html | 39 --------------------------------------- circle/dashboard/templates/dashboard/template-list/column-template-actions.html | 3 --- circle/dashboard/urls.py | 4 +--- circle/dashboard/views.py | 32 +------------------------------- 5 files changed, 2 insertions(+), 128 deletions(-) delete mode 100644 circle/dashboard/templates/dashboard/template-clone.html diff --git a/circle/dashboard/forms.py b/circle/dashboard/forms.py index 0d7dd1f..61da289 100644 --- a/circle/dashboard/forms.py +++ b/circle/dashboard/forms.py @@ -30,8 +30,6 @@ from crispy_forms.layout import ( Layout, Div, BaseInput, Field, HTML, Submit, Fieldset, TEMPLATE_PACK, ) -from crispy_forms.bootstrap import UneditableField as UF - from django.shortcuts import get_object_or_404 from crispy_forms.utils import render_field from django import forms @@ -640,56 +638,6 @@ class TemplateForm(forms.ModelForm): } -class TemplateCloneForm(forms.ModelForm): - uneditable_fields = ['num_cores', 'priority', 'ram_size', 'max_ram_size', - 'arch', 'access_method', 'boot_menu', 'raw_data', - 'description', 'system', - 'lease', 'tags'] - - def __init__(self, *args, **kwargs): - self.clone_from = kwargs.pop("clone_from") - self.user = kwargs.pop("user") - super(TemplateCloneForm, self).__init__(*args, **kwargs) - - data = self.data.copy() - template = get_object_or_404(InstanceTemplate, pk=self.clone_from) - for f in self.uneditable_fields: - self.initial[f] = getattr(template, f) - value = getattr(template, f) - if hasattr(value, "pk"): - value = value.pk - data.update({'%s' % f: value}) - - data.update({'owner': self.user.pk}) - self.data = data - - def save(self, *args, **kwargs): - pass - - @property - def helper(self): - helper = FormHelper() - - ufs = [UF(uf) for uf in self.uneditable_fields] - helper.layout = Layout( - Fieldset( - _("Modify these"), - Field("name"), - ), - Fieldset( - _("You can't modify these ..."), - *ufs - ) - ) - - helper.add_input(Submit('submit', _('Clone template'))) - return helper - - class Meta: - model = InstanceTemplate - exclude = ('state', 'disks', ) - - class LeaseForm(forms.ModelForm): def __init__(self, *args, **kwargs): diff --git a/circle/dashboard/templates/dashboard/template-clone.html b/circle/dashboard/templates/dashboard/template-clone.html deleted file mode 100644 index 0a1f2ec..0000000 --- a/circle/dashboard/templates/dashboard/template-clone.html +++ /dev/null @@ -1,39 +0,0 @@ -{% extends "dashboard/base.html" %} -{% load i18n %} -{% load sizefieldtags %} -{% load crispy_forms_tags %} - -{% block title-page %}{% trans "Clone template" %}{% endblock %} - -{% block content %} - -<div class="row"> - <div class="col-md-12"> - <div class="panel panel-default"> - <div class="panel-heading"> - <a class="pull-right btn btn-default btn-xs" href="{% url "dashboard.views.template-list" %}">{% trans "Back" %}</a> - <h3 class="no-margin"><i class="icon-puzzle-piece"></i> {% trans "Clone template" %}</h3> - </div> - <div class="panel-body"> - {% with form=form %} - {% include "display-form-errors.html" %} - {% endwith %} - {% crispy form %} - </div> - </div> - </div> -</div><!-- .row --> - - -<style> - fieldset { - margin-top: 40px; - } - fieldset legend { - font-weight: bold; - } -</style> -{% endblock %} - -{% block extra_js %} -{% endblock %} diff --git a/circle/dashboard/templates/dashboard/template-list/column-template-actions.html b/circle/dashboard/templates/dashboard/template-list/column-template-actions.html index 677188e..0e9c3ef 100644 --- a/circle/dashboard/templates/dashboard/template-list/column-template-actions.html +++ b/circle/dashboard/templates/dashboard/template-list/column-template-actions.html @@ -1,7 +1,4 @@ {% load i18n %} -<a href="{% url "dashboard.views.template-clone" pk=record.pk %}" id="template-list-clone-button" class="btn btn-default btn-xs" title="{% trans "Clone" %}"> - <i class="icon-copy"></i> -</a> <a href="{% url "dashboard.views.template-detail" pk=record.pk%}" id="template-list-edit-button" class="btn btn-default btn-xs" title="{% trans "Edit" %}"> <i class="icon-edit"></i> </a> diff --git a/circle/dashboard/urls.py b/circle/dashboard/urls.py index 9120205..c9fcf85 100644 --- a/circle/dashboard/urls.py +++ b/circle/dashboard/urls.py @@ -30,7 +30,7 @@ from .views import ( TransferOwnershipView, vm_activity, VmCreate, VmDelete, VmDetailView, VmDetailVncTokenView, VmGraphView, VmList, VmMassDelete, VmMigrateView, VmRenewView, DiskRemoveView, get_disk_download_status, InterfaceDeleteView, - TemplateChoose, TemplateClone, + TemplateChoose, ) urlpatterns = patterns( @@ -55,8 +55,6 @@ urlpatterns = patterns( name="dashboard.views.template-list"), url(r"^template/delete/(?P<pk>\d+)/$", TemplateDelete.as_view(), name="dashboard.views.template-delete"), - url(r"^template/clone/(?P<pk>\d+)/$", TemplateClone.as_view(), - name="dashboard.views.template-clone"), url(r'^vm/(?P<pk>\d+)/op/', include('dashboard.vm.urls')), url(r'^vm/(?P<pk>\d+)/remove_port/(?P<rule>\d+)/$', PortDelete.as_view(), diff --git a/circle/dashboard/views.py b/circle/dashboard/views.py index 9c0bdfb..e3f02d6 100644 --- a/circle/dashboard/views.py +++ b/circle/dashboard/views.py @@ -52,7 +52,7 @@ from braces.views._access import AccessMixin from .forms import ( CircleAuthenticationForm, DiskAddForm, HostForm, LeaseForm, MyProfileForm, - NodeForm, TemplateForm, TraitForm, VmCustomizeForm, TemplateCloneForm, + NodeForm, TemplateForm, TraitForm, VmCustomizeForm, CirclePasswordChangeForm ) from .tables import (NodeListTable, NodeVmListTable, @@ -865,36 +865,6 @@ class TemplateChoose(TemplateView): return redirect(instance.get_absolute_url()) -class TemplateClone(CreateView): - template_name = "dashboard/template-clone.html" - form_class = TemplateCloneForm - model = InstanceTemplate - - def get_form_kwargs(self): - kwargs = super(TemplateClone, self).get_form_kwargs() - kwargs['clone_from'] = self.kwargs['pk'] - kwargs['user'] = self.request.user - return kwargs - - def get(self, *args, **kwargs): - if not self.request.user.has_perm('vm.create_template'): - raise PermissionDenied() - - return super(TemplateClone, self).get(*args, **kwargs) - - def post(self, request, *args, **kwargs): - if not self.request.user.has_perm('vm.create_template'): - raise PermissionDenied() - - form = self.form_class(request.POST, clone_from=kwargs['pk'], - user=request.user) - if not form.is_valid(): - return self.get(request, form, *args, **kwargs) - else: - # clone template - return redirect("/") # temp - - class TemplateCreate(SuccessMessageMixin, CreateView): model = InstanceTemplate form_class = TemplateForm -- libgit2 0.26.0