Clean modal forms for Images panel

Refactoring Images modals.
Based on merged patch: https://review.openstack.org/#/c/123472/

Co-Authored-By: Rob Cresswell <rcresswe@cisco.com>
Co-Authored-By: Cindy Lu <clu@us.ibm.com>
Change-Id: I289dd4876e85f0ea1aa9f1d88c4915c897e8ea5b
Partially-Implements: blueprint form-template-to-view
This commit is contained in:
Cindy Lu 2015-02-12 13:57:23 -08:00 committed by Rob Cresswell
parent 64aa2420d9
commit 2415de13a2
9 changed files with 38 additions and 101 deletions

View File

@ -1,36 +1,17 @@
{% extends "horizon/common/_modal_form.html" %} {% extends "horizon/common/_modal_form.html" %}
{% load i18n %} {% load i18n %}
{% load url from future %}
{% block form_id %}create_image_form{% endblock %}
{% block ng_controller %}ImageFormCtrl{% endblock %} {% block ng_controller %}ImageFormCtrl{% endblock %}
{% block form_action %}{% url 'horizon:admin:images:create' %}{% endblock %}
{% block form_attrs %}enctype="multipart/form-data"{% endblock %} {% block form_attrs %}enctype="multipart/form-data"{% endblock %}
{% block modal-header %}{% trans "Create An Image" %}{% endblock %} {% block modal-body-right %}
<h3>{% trans "Description:" %}</h3>
{% block modal-body %} <p>{% trans "Specify an image to upload to the Image Service." %}</p>
<div class="left"> <p>
<fieldset> {% 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.)" %}
{% include "horizon/common/_form_fields.html" %} </p>
</fieldset> <p>
</div> <strong>{% trans "Please note: " %}</strong>
<div class="right"> {% 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." %}
<h3>{% trans "Description:" %}</h3> </p>
<p>
{% trans "Specify an image to upload to the Image Service." %}
</p>
<p>
{% 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.)" %}
</p>
<p>
<strong>{% trans "Please note: " %}</strong>
{% 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." %}
</p>
</div>
{% endblock %}
{% block modal-footer %}
<input class="btn btn-primary pull-right" type="submit" value="{% trans "Create Image" %}" />
<a href="{% url 'horizon:admin:images:index' %}" class="btn btn-default secondary cancel close">{% trans "Cancel" %}</a>
{% endblock %} {% endblock %}

View File

@ -1,26 +1,7 @@
{% extends "horizon/common/_modal_form.html" %} {% extends "horizon/common/_modal_form.html" %}
{% load i18n %} {% load i18n %}
{% load url from future %}
{% block form_id %}update_image_form{% endblock %} {% block modal-body-right %}
{% block form_action %}{% url 'horizon:admin:images:update' image.id %}{% endblock %}
{% 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> <h3>{% trans "Description:" %}</h3>
<p>{% trans "Edit the image details." %}</p> <p>{% trans "Edit the image details." %}</p>
</div>
{% endblock %}
{% block modal-footer %}
<input class="btn btn-primary pull-right" type="submit" value="{% trans "Update Image" %}" />
<a href="{% url 'horizon:admin:images:index' %}" class="btn btn-default secondary cancel close">{% trans "Cancel" %}</a>
{% endblock %} {% endblock %}

View File

@ -1,11 +1 @@
{% extends 'horizon/common/_modal_form_update_metadata.html' %} {% 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:admin:images:update_metadata' id %}{% endblock %}
{% block modal-header %}{% trans "Update Metadata" %}{% endblock %}

View File

@ -110,6 +110,7 @@ class IndexView(tables.DataTableView):
class CreateView(views.CreateView): class CreateView(views.CreateView):
template_name = 'admin/images/create.html' template_name = 'admin/images/create.html'
form_class = project_forms.AdminCreateImageForm form_class = project_forms.AdminCreateImageForm
submit_url = reverse_lazy('horizon:admin:images:create')
success_url = reverse_lazy('horizon:admin:images:index') success_url = reverse_lazy('horizon:admin:images:index')
page_title = _("Create An Image") page_title = _("Create An Image")
@ -117,6 +118,7 @@ class CreateView(views.CreateView):
class UpdateView(views.UpdateView): class UpdateView(views.UpdateView):
template_name = 'admin/images/update.html' template_name = 'admin/images/update.html'
form_class = project_forms.AdminUpdateImageForm form_class = project_forms.AdminUpdateImageForm
submit_url = "horizon:admin:images:update"
success_url = reverse_lazy('horizon:admin:images:index') success_url = reverse_lazy('horizon:admin:images:index')
page_title = _("Update Image") page_title = _("Update Image")
@ -128,7 +130,10 @@ class DetailView(views.DetailView):
class UpdateMetadataView(forms.ModalFormView): class UpdateMetadataView(forms.ModalFormView):
template_name = "admin/images/update_metadata.html" template_name = "admin/images/update_metadata.html"
modal_header = _("Update Image")
form_id = "update_image_form"
form_class = project_forms.UpdateMetadataForm form_class = project_forms.UpdateMetadataForm
submit_url = "horizon:admin:images:update_metadata"
success_url = reverse_lazy('horizon:admin:images:index') success_url = reverse_lazy('horizon:admin:images:index')
page_title = _("Update Image Metadata") page_title = _("Update Image Metadata")
@ -146,6 +151,8 @@ class UpdateMetadataView(forms.ModalFormView):
for (k, v) in image.properties.iteritems() for (k, v) in image.properties.iteritems()
if k not in reserved_props) if k not in reserved_props)
context['existing_metadata'] = json.dumps(image.properties) context['existing_metadata'] = json.dumps(image.properties)
args = (self.kwargs['id'],)
context['submit_url'] = reverse(self.submit_url, args=args)
resource_type = 'OS::Glance::Image' resource_type = 'OS::Glance::Image'
namespaces = [] namespaces = []

View File

@ -40,6 +40,10 @@ from openstack_dashboard.dashboards.project.images.images \
class CreateView(forms.ModalFormView): class CreateView(forms.ModalFormView):
form_class = project_forms.CreateImageForm form_class = project_forms.CreateImageForm
form_id = "create_image_form"
modal_header = _("Create An Image")
submit_label = _("Create Image")
submit_url = reverse_lazy('horizon:project:images:images:create')
template_name = 'project/images/images/create.html' template_name = 'project/images/images/create.html'
context_object_name = 'image' context_object_name = 'image'
success_url = reverse_lazy("horizon:project:images:index") success_url = reverse_lazy("horizon:project:images:index")
@ -48,6 +52,10 @@ class CreateView(forms.ModalFormView):
class UpdateView(forms.ModalFormView): class UpdateView(forms.ModalFormView):
form_class = project_forms.UpdateImageForm form_class = project_forms.UpdateImageForm
form_id = "update_image_form"
modal_header = _("Update Image")
submit_label = _("Update Image")
submit_url = "horizon:project:images:images:update"
template_name = 'project/images/images/update.html' template_name = 'project/images/images/update.html'
success_url = reverse_lazy("horizon:project:images:index") success_url = reverse_lazy("horizon:project:images:index")
page_title = _("Update Image") page_title = _("Update Image")
@ -64,6 +72,8 @@ class UpdateView(forms.ModalFormView):
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = super(UpdateView, self).get_context_data(**kwargs) context = super(UpdateView, self).get_context_data(**kwargs)
context['image'] = self.get_object() context['image'] = self.get_object()
args = (self.kwargs['image_id'],)
context['submit_url'] = reverse(self.submit_url, args=args)
return context return context
def get_initial(self): def get_initial(self):

View File

@ -35,6 +35,11 @@ from openstack_dashboard.dashboards.project.images.snapshots \
class CreateView(forms.ModalFormView): class CreateView(forms.ModalFormView):
form_class = project_forms.CreateSnapshot form_class = project_forms.CreateSnapshot
form_id = "create_snapshot_form"
modal_id = "create_snapshot_modal"
modal_header = _("Create Snapshot")
submit_label = _("Create Snapshot")
submit_url = "horizon:project:images:snapshots:create"
template_name = 'project/images/snapshots/create.html' template_name = 'project/images/snapshots/create.html'
success_url = reverse_lazy("horizon:project:images:index") success_url = reverse_lazy("horizon:project:images:index")
page_title = _("Create a Snapshot") page_title = _("Create a Snapshot")
@ -56,4 +61,6 @@ class CreateView(forms.ModalFormView):
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = super(CreateView, self).get_context_data(**kwargs) context = super(CreateView, self).get_context_data(**kwargs)
context['instance'] = self.get_object() context['instance'] = self.get_object()
args = (self.kwargs['instance_id'],)
context['submit_url'] = reverse(self.submit_url, args=args)
return context return context

View File

@ -1,13 +1,9 @@
{% extends "horizon/common/_modal_form.html" %} {% extends "horizon/common/_modal_form.html" %}
{% load i18n %} {% load i18n %}
{% load url from future %}
{% block form_id %}create_image_form{% endblock %}
{% block ng_controller %}ImageFormCtrl{% endblock %} {% block ng_controller %}ImageFormCtrl{% endblock %}
{% block form_action %}{% url 'horizon:project:images:images:create' %}{% endblock %}
{% block form_attrs %}enctype="multipart/form-data"{% endblock %} {% block form_attrs %}enctype="multipart/form-data"{% endblock %}
{% block modal-header %}{% trans "Create An Image" %}{% endblock %}
{% block modal-body-right %} {% block modal-body-right %}
<h3>{% trans "Description:" %}</h3> <h3>{% trans "Description:" %}</h3>
@ -27,8 +23,3 @@
{% endif %} {% endif %}
</p> </p>
{% endblock %} {% endblock %}
{% block modal-footer %}
<input class="btn btn-primary pull-right" type="submit" value="{% trans 'Create Image' %}" />
<a href="{% url 'horizon:project:images:index' %}" class="btn btn-default secondary cancel close">{% trans "Cancel" %}</a>
{% endblock %}

View File

@ -1,18 +1,7 @@
{% extends "horizon/common/_modal_form.html" %} {% extends "horizon/common/_modal_form.html" %}
{% load i18n %} {% load i18n %}
{% load url from future %}
{% block form_id %}update_image_form{% endblock %}
{% block form_action %}{% url 'horizon:project:images:images:update' image.id %}{% endblock %}
{% block modal-header %}{% trans "Update Image" %}{% endblock %}
{% block modal-body-right %} {% block modal-body-right %}
<h3>{% trans "Description:" %}</h3> <h3>{% trans "Description:" %}</h3>
<p>{% trans "Edit the image details." %}</p> <p>{% trans "Edit the image details." %}</p>
{% endblock %} {% endblock %}
{% block modal-footer %}
<input class="btn btn-primary pull-right" type="submit" value="{% trans "Update Image" %}" />
<a href="{% url 'horizon:project:images:index' %}" class="btn btn-default secondary cancel close">{% trans "Cancel" %}</a>
{% endblock %}

View File

@ -1,26 +1,7 @@
{% extends "horizon/common/_modal_form.html" %} {% extends "horizon/common/_modal_form.html" %}
{% load i18n %} {% load i18n %}
{% load url from future %}
{% block form_id %}create_snapshot_form{% endblock %} {% block modal-body-right %}
{% block form_action %}{% url 'horizon:project:images:snapshots:create' instance.id %}{% endblock %} <h3>{% trans "Description:" %}</h3>
<p>{% trans "A snapshot is an image which preserves the disk state of a running instance." %}</p>
{% block modal_id %}create_snapshot_modal{% endblock %}
{% block modal-header %}{% trans "Create Snapshot" %}{% 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 "A snapshot is an image which preserves the disk state of a running instance." %}</p>
</div>
{% endblock %}
{% block modal-footer %}
<input class="btn btn-primary pull-right" type="submit" value="{% trans "Create Snapshot" %}" />
<a href="{% url 'horizon:project:images:index' %}" class="btn btn-default secondary cancel close">{% trans "Cancel" %}</a>
{% endblock %} {% endblock %}