From 5172c82b18cecd6edda69453e127bb5e1c06238e Mon Sep 17 00:00:00 2001 From: Lennart Regebro Date: Tue, 30 Sep 2014 16:45:58 +0200 Subject: [PATCH] Removing image forms Removing the forms for creating images and updating image metadata, as discussed. Change-Id: Iaa2c625957ef4dc15741b44d1880946c424e62ae --- tuskar_ui/infrastructure/images/forms.py | 9 -- tuskar_ui/infrastructure/images/tables.py | 16 +--- .../images/templates/images/_create.html | 35 ------- .../templates/images/_update_metadata.html | 11 --- .../images/templates/images/create.html | 11 --- .../templates/images/update_metadata.html | 11 --- tuskar_ui/infrastructure/images/tests.py | 93 ------------------- tuskar_ui/infrastructure/images/urls.py | 3 - tuskar_ui/infrastructure/images/views.py | 13 --- 9 files changed, 2 insertions(+), 200 deletions(-) delete mode 100644 tuskar_ui/infrastructure/images/templates/images/_create.html delete mode 100644 tuskar_ui/infrastructure/images/templates/images/_update_metadata.html delete mode 100644 tuskar_ui/infrastructure/images/templates/images/create.html delete mode 100644 tuskar_ui/infrastructure/images/templates/images/update_metadata.html diff --git a/tuskar_ui/infrastructure/images/forms.py b/tuskar_ui/infrastructure/images/forms.py index 6902d809a..0d14befbf 100644 --- a/tuskar_ui/infrastructure/images/forms.py +++ b/tuskar_ui/infrastructure/images/forms.py @@ -10,17 +10,8 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack_dashboard.dashboards.admin.images import forms as admin_forms from openstack_dashboard.dashboards.project.images.images import forms -class CreateImageForm(forms.CreateImageForm): - pass - - class UpdateImageForm(forms.UpdateImageForm): pass - - -class UpdateMetadataForm(admin_forms.UpdateMetadataForm): - pass diff --git a/tuskar_ui/infrastructure/images/tables.py b/tuskar_ui/infrastructure/images/tables.py index 95d1a2f17..4827a384f 100644 --- a/tuskar_ui/infrastructure/images/tables.py +++ b/tuskar_ui/infrastructure/images/tables.py @@ -19,10 +19,6 @@ from openstack_dashboard.dashboards.project.images.images import ( tables as project_tables) -class CreateImage(project_tables.CreateImage): - url = "horizon:infrastructure:images:create" - - class DeleteImage(project_tables.DeleteImage): def allowed(self, request, image=None): if image and image.protected: @@ -55,14 +51,6 @@ class EditImage(project_tables.EditImage): return True -class UpdateMetadata(tables.LinkAction): - url = "horizon:infrastructure:images:update_metadata" - name = "update_metadata" - verbose_name = _("Update Metadata") - classes = ("ajax-modal",) - icon = "pencil" - - class ImagesTable(tables.DataTable): name = tables.Column('name', @@ -78,6 +66,6 @@ class ImagesTable(tables.DataTable): row_class = UpdateRow verbose_name = _("Provisioning Images") multi_select = False - table_actions = (CreateImage, DeleteImage, + table_actions = (DeleteImage, ImageFilterAction) - row_actions = (EditImage, UpdateMetadata, DeleteImage) + row_actions = (EditImage, DeleteImage) diff --git a/tuskar_ui/infrastructure/images/templates/images/_create.html b/tuskar_ui/infrastructure/images/templates/images/_create.html deleted file mode 100644 index 3c0c373bd..000000000 --- a/tuskar_ui/infrastructure/images/templates/images/_create.html +++ /dev/null @@ -1,35 +0,0 @@ -{% extends "horizon/common/_modal_form.html" %} -{% load i18n %} -{% load url from future %} - -{% block form_id %}create_image_form{% endblock %} -{% block form_action %}{% url 'horizon:infrastructure:images:create' %}{% endblock %} -{% block form_attrs %}enctype="multipart/form-data"{% endblock %} - -{% block modal-header %}{% trans "Create An Image" %}{% endblock %} - -{% block modal-body %} -
-
- {% include "horizon/common/_form_fields.html" %} -
-
-
-

{% trans "Description:" %}

-

- {% trans "Specify an image to upload to the Image Service." %} -

-

- {% trans "Currently only images available via an HTTP URL are supported. The image location must be accessible to the Image Service. Compressed image binaries are supported (.zip and .tar.gz.)" %} -

-

- {% trans "Please note: " %} - {% trans "The Image Location field MUST be a valid and direct URL to the image binary. URLs that redirect or serve error pages will result in unusable images." %} -

-
-{% endblock %} - -{% block modal-footer %} - - {% trans "Cancel" %} -{% endblock %} diff --git a/tuskar_ui/infrastructure/images/templates/images/_update_metadata.html b/tuskar_ui/infrastructure/images/templates/images/_update_metadata.html deleted file mode 100644 index f666adcdc..000000000 --- a/tuskar_ui/infrastructure/images/templates/images/_update_metadata.html +++ /dev/null @@ -1,11 +0,0 @@ -{% extends 'horizon/common/_modal_form_update_metadata.html' %} -{% load i18n %} -{% load url from future %} -{% block title %}{% trans "Update Image Metadata" %}{% endblock %} - -{% block page_header %} - {% include "horizon/common/_page_header.html" with title=_("Update Image Metadata") %} -{% endblock page_header %} - -{% block form_action %}{% url 'horizon:infrastructure:images:update_metadata' id %}{% endblock %} -{% block modal-header %}{% trans "Update Metadata" %}{% endblock %} diff --git a/tuskar_ui/infrastructure/images/templates/images/create.html b/tuskar_ui/infrastructure/images/templates/images/create.html deleted file mode 100644 index a78633e66..000000000 --- a/tuskar_ui/infrastructure/images/templates/images/create.html +++ /dev/null @@ -1,11 +0,0 @@ -{% extends 'base.html' %} -{% load i18n %} -{% block title %}{% trans "Create An Image" %}{% endblock %} - -{% block page_header %} - {% include "horizon/common/_page_header.html" with title=_("Create An Image") %} -{% endblock page_header %} - -{% block main %} - {% include 'infrastructure/images/_create.html' %} -{% endblock %} diff --git a/tuskar_ui/infrastructure/images/templates/images/update_metadata.html b/tuskar_ui/infrastructure/images/templates/images/update_metadata.html deleted file mode 100644 index 39e0fe7b1..000000000 --- a/tuskar_ui/infrastructure/images/templates/images/update_metadata.html +++ /dev/null @@ -1,11 +0,0 @@ -{% extends 'base.html' %} -{% load i18n %} -{% block title %}{% trans "Update Image Metadata" %}{% endblock %} - -{% block page_header %} - {% include "horizon/common/_page_header.html" with title=_("Update Image Metadata") %} -{% endblock page_header %} - -{% block main %} - {% include 'infrastructure/images/_update_metadata.html' %} -{% endblock %} diff --git a/tuskar_ui/infrastructure/images/tests.py b/tuskar_ui/infrastructure/images/tests.py index bb037e36c..27275d53f 100644 --- a/tuskar_ui/infrastructure/images/tests.py +++ b/tuskar_ui/infrastructure/images/tests.py @@ -13,7 +13,6 @@ # under the License. import contextlib -import json import mock from mock import patch, call # noqa @@ -25,10 +24,7 @@ from tuskar_ui.test import helpers as test INDEX_URL = urlresolvers.reverse( 'horizon:infrastructure:images:index') -CREATE_URL = urlresolvers.reverse( - 'horizon:infrastructure:images:create') UPDATE_URL = 'horizon:infrastructure:images:update' -IMAGE_METADATA_URL = 'horizon:infrastructure:images:update_metadata' class ImagesTest(test.BaseAdminViewTests): @@ -51,11 +47,6 @@ class ImagesTest(test.BaseAdminViewTests): self.assertTemplateUsed(res, 'infrastructure/images/index.html') - def test_create_get(self): - res = self.client.get(CREATE_URL) - - self.assertTemplateUsed(res, 'infrastructure/images/create.html') - def test_update_get(self): image = self.images.list()[0] @@ -69,39 +60,6 @@ class ImagesTest(test.BaseAdminViewTests): mocked_get.assert_called_once_with(mock.ANY, image.id) self.assertTemplateUsed(res, 'infrastructure/images/update.html') - def test_create_post(self): - image = self.images.list()[0] - data = { - 'name': 'Fedora', - 'description': 'Login with admin/admin', - 'source_type': 'url', - 'copy_from': 'http://test_url.com', - 'disk_format': 'qcow2', - 'architecture': 'x86-64', - 'minimum_disk': 15, - 'minimum_ram': 512, - 'is_public': True, - 'protected': False} - - forms.IMAGE_FORMAT_CHOICES = [('qcow2', 'qcow2')] - - with contextlib.nested( - patch('openstack_dashboard.api.glance.image_create', - return_value=image),) as (mocked_create,): - - res = self.client.post(CREATE_URL, data) - - self.assertNoFormErrors(res) - self.assertEqual(res.status_code, 302) - self.assertRedirectsNoFollow(res, INDEX_URL) - - mocked_create.assert_called_once_with( - mock.ANY, name=u'Fedora', container_format='bare', min_ram=512, - disk_format=u'qcow2', copy_from=u'http://test_url.com', - protected=False, min_disk=15, is_public=True, - properties={'description': u'Login with admin/admin', - 'architecture': u'x86-64'}) - def test_update_post(self): image = self.images.list()[0] data = { @@ -168,54 +126,3 @@ class ImagesTest(test.BaseAdminViewTests): call(mock.ANY, images[1].id)) self.assertNoFormErrors(res) self.assertRedirectsNoFollow(res, INDEX_URL) - - def test_images_metadata_get(self): - image = self.images.first() - namespaces = self.metadata_defs.list() - - with contextlib.nested( - patch('openstack_dashboard.api.glance.image_get', - return_value=image), - patch('openstack_dashboard.api.glance.metadefs_namespace_list', - return_value=(namespaces, False, False)), - patch('openstack_dashboard.api.glance.metadefs_namespace_get', - return_value=namespaces[0]),) as ( - mocked_get, mocked_namespaces_list, mocked_namespace_get,): - - res = self.client.get( - urlresolvers.reverse(IMAGE_METADATA_URL, args=(image.id,))) - - mocked_get.assert_called_once_with(mock.ANY, image.id) - mocked_namespaces_list.assert_called_once_with( - mock.ANY, filters={'resource_types': ['OS::Glance::Image']}) - - self.assertEqual(mocked_namespace_get.call_count, 4) - - self.assertTemplateUsed( - res, 'infrastructure/images/update_metadata.html') - - def test_images_metadata_update(self): - image = self.images.first() - - metadata = [{"value": "mock_value", "key": "hw_machine_type"}] - formData = {"metadata": json.dumps(metadata)} - - with contextlib.nested( - patch('openstack_dashboard.api.glance.image_get', - return_value=image), - patch('openstack_dashboard.api.glance.image_update_properties', - return_value=None),) as ( - - mocked_get, mocked_update,): - - res = self.client.post( - urlresolvers.reverse(IMAGE_METADATA_URL, args=(image.id,)), - formData) - - mocked_get.assert_called_once_with(mock.ANY, image.id) - mocked_update.assert_called_once_with( - mock.ANY, image.id, ['image_type'], hw_machine_type='mock_value') - - self.assertEqual(res.status_code, 302) - self.assertNoFormErrors(res) - self.assertRedirectsNoFollow(res, INDEX_URL) diff --git a/tuskar_ui/infrastructure/images/urls.py b/tuskar_ui/infrastructure/images/urls.py index f9582d638..766205b1c 100644 --- a/tuskar_ui/infrastructure/images/urls.py +++ b/tuskar_ui/infrastructure/images/urls.py @@ -19,9 +19,6 @@ from tuskar_ui.infrastructure.images import views urlpatterns = urls.patterns( '', urls.url(r'^$', views.IndexView.as_view(), name='index'), - urls.url(r'^create/$', views.CreateView.as_view(), name='create'), - urls.url(r'^(?P[^/]+)/update_metadata/$', - views.UpdateMetadataView.as_view(), name='update_metadata'), urls.url(r'^(?P[^/]+)/update/$', views.UpdateView.as_view(), name='update'), ) diff --git a/tuskar_ui/infrastructure/images/views.py b/tuskar_ui/infrastructure/images/views.py index a06753e2c..775e873e3 100644 --- a/tuskar_ui/infrastructure/images/views.py +++ b/tuskar_ui/infrastructure/images/views.py @@ -20,7 +20,6 @@ from horizon import exceptions from horizon import tables as horizon_tables from horizon.utils import memoized from openstack_dashboard import api -from openstack_dashboard.dashboards.admin.images import views as admin_views from openstack_dashboard.dashboards.project.images.images import views from tuskar_ui import api as tuskar_api @@ -102,12 +101,6 @@ class IndexView(horizon_tables.DataTableView): return filters -class CreateView(views.CreateView): - template_name = 'infrastructure/images/create.html' - form_class = forms.CreateImageForm - success_url = reverse_lazy('horizon:infrastructure:images:index') - - class UpdateView(views.UpdateView): template_name = 'infrastructure/images/update.html' form_class = forms.UpdateImageForm @@ -121,9 +114,3 @@ class UpdateView(views.UpdateView): msg = _('Unable to retrieve image.') url = reverse_lazy('horizon:infrastructure:images:index') exceptions.handle(self.request, msg, redirect=url) - - -class UpdateMetadataView(admin_views.UpdateMetadataView): - template_name = "infrastructure/images/update_metadata.html" - form_class = forms.UpdateMetadataForm - success_url = reverse_lazy('horizon:infrastructure:images:index')