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