diff options
author | Ana Krivokapic <akrivoka@redhat.com> | 2015-04-28 17:18:18 +0200 |
---|---|---|
committer | Ana Krivokapic <akrivoka@redhat.com> | 2015-04-30 13:54:32 +0200 |
commit | bf59764b9a7f14c1f0223b28aa839142cfec3bf3 (patch) | |
tree | 32820cf488ead6273f0f6c7a1df8f36e57a1c3da | |
parent | 64d8c3b82ccaf959d055f45aa98071476d682807 (diff) | |
download | tuskar-ui-bf59764b9a7f14c1f0223b28aa839142cfec3bf3.tar.gz |
Add ability to create images
Change-Id: I1095614a50873d00f5e80ee31e1f358ac9e59416
-rw-r--r-- | tuskar_ui/infrastructure/images/tables.py | 7 | ||||
-rw-r--r-- | tuskar_ui/infrastructure/images/templates/images/_create.html | 14 | ||||
-rw-r--r-- | tuskar_ui/infrastructure/images/templates/images/_update.html | 13 | ||||
-rw-r--r-- | tuskar_ui/infrastructure/images/templates/images/create.html | 12 | ||||
-rw-r--r-- | tuskar_ui/infrastructure/images/tests.py | 43 | ||||
-rw-r--r-- | tuskar_ui/infrastructure/images/urls.py | 1 | ||||
-rw-r--r-- | tuskar_ui/infrastructure/images/views.py | 7 |
7 files changed, 83 insertions, 14 deletions
diff --git a/tuskar_ui/infrastructure/images/tables.py b/tuskar_ui/infrastructure/images/tables.py index e6cb439f..8bd8bbf4 100644 --- a/tuskar_ui/infrastructure/images/tables.py +++ b/tuskar_ui/infrastructure/images/tables.py @@ -27,6 +27,10 @@ class DeleteImage(project_tables.DeleteImage): return True +class CreateImage(project_tables.CreateImage): + url = "horizon:infrastructure:images:create" + + class UpdateRow(tables.Row): ajax = True @@ -65,7 +69,6 @@ class ImagesTable(tables.DataTable): name = "images" row_class = UpdateRow verbose_name = _("Provisioning Images") - table_actions = (DeleteImage, - ImageFilterAction) + table_actions = (CreateImage, DeleteImage, ImageFilterAction) row_actions = (EditImage, DeleteImage) template = "horizon/common/_enhanced_data_table.html" diff --git a/tuskar_ui/infrastructure/images/templates/images/_create.html b/tuskar_ui/infrastructure/images/templates/images/_create.html new file mode 100644 index 00000000..160d975c --- /dev/null +++ b/tuskar_ui/infrastructure/images/templates/images/_create.html @@ -0,0 +1,14 @@ +{% 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 modal_id %}create_image_modal{% endblock %} +{% block modal-header %}{% trans "Create Image" %}{% endblock %} + +{% block modal-body-right %} +<h3>{% trans "Description" %}:</h3> +<p>{% trans "Modify different properties of an image." %}</p> +{% endblock %} diff --git a/tuskar_ui/infrastructure/images/templates/images/_update.html b/tuskar_ui/infrastructure/images/templates/images/_update.html index 3ac3c6c8..4a3e98f9 100644 --- a/tuskar_ui/infrastructure/images/templates/images/_update.html +++ b/tuskar_ui/infrastructure/images/templates/images/_update.html @@ -8,14 +8,7 @@ {% block modal_id %}update_image_modal{% endblock %} {% block modal-header %}{% trans "Update Image" %}{% endblock %} -{% block modal-body %} -<div class="left"> - <fieldset> - {% include "horizon/common/_form_fields.html" %} - </fieldset> -</div> -<div class="right"> - <h3>{% trans "Description" %}:</h3> - <p>{% trans "Modify different properties of an image." %}</p> -</div> +{% block modal-body-right %} +<h3>{% trans "Description" %}:</h3> +<p>{% trans "Modify different properties of an image." %}</p> {% endblock %} diff --git a/tuskar_ui/infrastructure/images/templates/images/create.html b/tuskar_ui/infrastructure/images/templates/images/create.html new file mode 100644 index 00000000..d9d23a02 --- /dev/null +++ b/tuskar_ui/infrastructure/images/templates/images/create.html @@ -0,0 +1,12 @@ +{% extends 'base.html' %} +{% load i18n %} + +{% block title %}{% trans "Create Image" %}{% endblock %} + +{% block page_header %} + {% include "horizon/common/_page_header.html" with title=_("Create Image") %} +{% endblock page_header %} + +{% block main %} + {% include 'infrastructure/images/_create.html' %} +{% endblock %} diff --git a/tuskar_ui/infrastructure/images/tests.py b/tuskar_ui/infrastructure/images/tests.py index 1ac6400e..b7424430 100644 --- a/tuskar_ui/infrastructure/images/tests.py +++ b/tuskar_ui/infrastructure/images/tests.py @@ -22,8 +22,8 @@ from openstack_dashboard.dashboards.project.images.images import forms from tuskar_ui import api from tuskar_ui.test import helpers as test -INDEX_URL = urlresolvers.reverse( - 'horizon:infrastructure:images:index') +INDEX_URL = urlresolvers.reverse('horizon:infrastructure:images:index') +CREATE_URL = 'horizon:infrastructure:images:create' UPDATE_URL = 'horizon:infrastructure:images:update' @@ -48,6 +48,45 @@ class ImagesTest(test.BaseAdminViewTests): self.assertTemplateUsed(res, 'infrastructure/images/index.html') + def test_create_get(self): + res = self.client.get(urlresolvers.reverse(CREATE_URL)) + self.assertTemplateUsed(res, 'infrastructure/images/create.html') + + def test_create_post(self): + image = self.images.list()[0] + data = { + 'name': 'Fedora', + 'description': 'Login with admin/admin', + 'source_type': 'url', + 'image_url': 'http://www.test.com/test.iso', + '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( + urlresolvers.reverse(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='Fedora', container_format='bare', + min_ram=512, disk_format='qcow2', protected=False, + is_public=True, min_disk=15, + location='http://www.test.com/test.iso', + properties={'description': 'Login with admin/admin', + 'architecture': 'x86-64'}) + def test_update_get(self): image = self.images.list()[0] diff --git a/tuskar_ui/infrastructure/images/urls.py b/tuskar_ui/infrastructure/images/urls.py index 766205b1..f67d5576 100644 --- a/tuskar_ui/infrastructure/images/urls.py +++ b/tuskar_ui/infrastructure/images/urls.py @@ -19,6 +19,7 @@ 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<image_id>[^/]+)/update/$', views.UpdateView.as_view(), name='update'), ) diff --git a/tuskar_ui/infrastructure/images/views.py b/tuskar_ui/infrastructure/images/views.py index 04666d46..b18e0634 100644 --- a/tuskar_ui/infrastructure/images/views.py +++ b/tuskar_ui/infrastructure/images/views.py @@ -85,6 +85,13 @@ class IndexView(infrastructure_views.ItemCountMixin, return filters +class CreateView(views.CreateView): + submit_url = "horizon:infrastructure:images:create" + template_name = 'infrastructure/images/create.html' + success_url = reverse_lazy("horizon:infrastructure:images:index") + page_title = _("Create Image") + + class UpdateView(views.UpdateView): template_name = 'infrastructure/images/update.html' form_class = forms.UpdateImageForm |