Change the way 'do_redirect' flag is passed into WizardView
This change eliminates the need to have a specific url for each combination of optional parameters passed to WizardView, thus making possible to pass more than optional parameter to WizardView. Change-Id: Id5a636d006a3a1170d76c617083f8641aaf1a3eb
This commit is contained in:
parent
3269374769
commit
9f0fc0331d
|
@ -33,9 +33,6 @@ urlpatterns = patterns(
|
|||
url(r'^add/(?P<environment_id>[^/]+)/(?P<app_id>[^/]+)$',
|
||||
env_views.Wizard.as_view(services.get_app_forms),
|
||||
name='add'),
|
||||
url(r'^add_redirect/(?P<environment_id>[^/]+)/(?P<app_id>[^/]+)$',
|
||||
env_views.Wizard.as_view(services.get_app_forms, do_redirect=True),
|
||||
name='add_redirect'),
|
||||
url(r'^quick-add/(?P<app_id>[^/]+)$',
|
||||
'quick_deploy',
|
||||
name='quick_add'),
|
||||
|
|
|
@ -99,8 +99,8 @@ def create_quick_environment(request):
|
|||
def quick_deploy(request, app_id):
|
||||
env = create_quick_environment(request)
|
||||
try:
|
||||
return views.Wizard.as_view(services.get_app_forms, do_redirect=True)(
|
||||
request, app_id=app_id, environment_id=env.id)
|
||||
return views.Wizard.as_view(services.get_app_forms)(
|
||||
request, app_id=app_id, environment_id=env.id, do_redirect=True)
|
||||
except:
|
||||
api.environment_delete(request, env.id)
|
||||
raise
|
||||
|
|
|
@ -133,7 +133,7 @@ class Wizard(hz_views.ModalFormMixin, LazyWizard):
|
|||
|
||||
messages.success(self.request, message)
|
||||
|
||||
if self.do_redirect:
|
||||
if self._get_wizard_flag('do_redirect'):
|
||||
return HttpResponseRedirect(url)
|
||||
else:
|
||||
srv_id = getattr(srv, '?')['id']
|
||||
|
@ -151,14 +151,22 @@ class Wizard(hz_views.ModalFormMixin, LazyWizard):
|
|||
return HttpResponse('Done')
|
||||
|
||||
def get_form_initial(self, step):
|
||||
init_dict = {}
|
||||
if step != 'service_choice':
|
||||
init_dict.update({
|
||||
'request': self.request,
|
||||
'environment_id': self.kwargs.get('environment_id')
|
||||
})
|
||||
init_dict = {'request': self.request,
|
||||
'environment_id': self.kwargs.get('environment_id')}
|
||||
|
||||
return self.initial_dict.get(step, init_dict)
|
||||
|
||||
def _get_wizard_param(self, key):
|
||||
param = self.kwargs.get(key)
|
||||
return param if param is not None else self.request.POST.get(key)
|
||||
|
||||
def _get_wizard_flag(self, key):
|
||||
value = self._get_wizard_param(key)
|
||||
if isinstance(value, basestring):
|
||||
return value.lower() == 'true'
|
||||
else:
|
||||
return value
|
||||
|
||||
def get_context_data(self, form, **kwargs):
|
||||
context = super(Wizard, self).get_context_data(form=form, **kwargs)
|
||||
app_id = self.kwargs.get('app_id')
|
||||
|
@ -169,8 +177,8 @@ class Wizard(hz_views.ModalFormMixin, LazyWizard):
|
|||
'service_name': app.name,
|
||||
'app_id': app_id,
|
||||
'environment_id': self.kwargs.get('environment_id'),
|
||||
'do_redirect': self._get_wizard_flag('do_redirect'),
|
||||
'prefix': self.prefix,
|
||||
'do_redirect': self.do_redirect
|
||||
})
|
||||
return context
|
||||
|
||||
|
|
|
@ -6,11 +6,7 @@
|
|||
{% load i18n humanize %}
|
||||
{% load url from future %} {# fix for django 1.4.9 on CentOS #}
|
||||
{% block form_action %}
|
||||
{% if do_redirect %}
|
||||
{% url 'horizon:murano:catalog:add_redirect' environment_id app_id %}
|
||||
{% else %}
|
||||
{% url 'horizon:murano:catalog:add' environment_id app_id %}
|
||||
{% endif %}
|
||||
{% url 'horizon:murano:catalog:add' environment_id app_id %}
|
||||
{% endblock %}
|
||||
{% block form_id %}create_service_form{% endblock %}
|
||||
{% block modal_id %}create_service{% endblock %}
|
||||
|
@ -61,6 +57,7 @@
|
|||
{{ wizard.form.media }}
|
||||
|
||||
<input type="hidden" name="wizard_goto_step" id="{{ prefix }}_val"/>
|
||||
<input type="hidden" name="do_redirect" value="{{ do_redirect }}"/>
|
||||
{% if wizard.steps.next %}
|
||||
{% trans "Next" as next %}
|
||||
{% else %}
|
||||
|
|
Loading…
Reference in New Issue