Merge "UI: Execution update - update description modal"

This commit is contained in:
Jenkins 2015-11-23 08:37:07 +00:00 committed by Gerrit Code Review
commit 977e0aeafc
6 changed files with 101 additions and 2 deletions

View File

@ -0,0 +1,45 @@
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from django.core.urlresolvers import reverse
from django.utils.translation import ugettext_lazy as _
from horizon import exceptions
from horizon import forms
from horizon import messages
from mistraldashboard import api
class UpdateDescriptionForm(forms.SelfHandlingForm):
execution_id = forms.CharField(label=_("Execution ID"),
widget=forms.HiddenInput(),
required=False)
description = forms.CharField(max_length=255,
label=_("Execution description"))
def handle(self, request, data):
try:
api.execution_update(
request,
data["execution_id"],
"description",
data["description"])
msg = _('Successfully updated execution description.')
messages.success(request, msg)
return True
except Exception:
msg = _('Failed to update execution description.')
redirect = reverse('horizon:mistral:executions:index')
exceptions.handle(request, msg, redirect=redirect)

View File

@ -130,6 +130,13 @@ class ResumeExecution(tables.BatchAction):
api.execution_update(request, obj_id, "state", "RUNNING")
class UpdateDescription(tables.LinkAction):
name = "updateDescription"
verbose_name = _("Update Description")
url = "horizon:mistral:executions:update_description"
classes = ("ajax-modal",)
class ExecutionsTable(tables.DataTable):
id = tables.Column(
"id",
@ -185,5 +192,6 @@ class ExecutionsTable(tables.DataTable):
name = "executions"
verbose_name = _("Executions")
table_actions = (DeleteExecution, tables.FilterAction)
row_actions = (DeleteExecution, PauseExecution,
CancelExecution, ResumeExecution, DeleteExecution)
row_actions = (DeleteExecution, UpdateDescription,
PauseExecution, CancelExecution,
ResumeExecution, DeleteExecution)

View File

@ -0,0 +1,7 @@
{% extends "horizon/common/_modal_form.html" %}
{% load i18n %}
{% block modal-body-right %}
<h3>{% trans "Description:" %}</h3>
<p>{% trans "Enter execution description." %}</p>
{% endblock %}

View File

@ -0,0 +1,11 @@
{% extends 'base.html' %}
{% load i18n %}
{% block title %}{% endblock %}
{% block page_header %}
{% include "horizon/common/_page_header.html" %}
{% endblock page_header %}
{% block main %}
{% include 'mistral/executions/_update_description.html' %}
{% endblock %}

View File

@ -31,4 +31,7 @@ urlpatterns = patterns(
{'column': 'output'}, name='output'),
url(EXECUTIONS % 'input', views.CodeView.as_view(),
{'column': 'input'}, name='input'),
url(EXECUTIONS % 'update_description',
views.UpdateDescriptionView.as_view(),
name='update_description'),
)

View File

@ -26,6 +26,7 @@ from horizon import tables
from mistraldashboard import api
from mistraldashboard.default.utils import prettyprint
from mistraldashboard.executions.forms import UpdateDescriptionForm
from mistraldashboard.executions.tables import ExecutionsTable
from mistraldashboard import forms as mistral_forms
@ -149,3 +150,27 @@ class CodeView(forms.ModalFormView):
context['io'] = io
return context
class UpdateDescriptionView(forms.ModalFormView):
template_name = 'mistral/executions/update_description.html'
modal_header = _("Update Execution Description")
form_id = "update_execution_description"
form_class = UpdateDescriptionForm
submit_label = _("Update")
success_url = reverse_lazy("horizon:mistral:executions:index")
submit_url = "horizon:mistral:executions:update_description"
cancel_url = "horizon:mistral:executions:index"
page_title = _("Update Execution Description")
def get_initial(self):
return {"execution_id": self.kwargs["execution_id"]}
def get_context_data(self, **kwargs):
context = super(UpdateDescriptionView, self).get_context_data(**kwargs)
context['submit_url'] = reverse(
self.submit_url,
args=[self.kwargs["execution_id"]]
)
return context