Commit 1c60b1c0 authored by Serge S. Koval's avatar Serge S. Koval

Merge pull request #380 from wilsaj/fix-model-edit-view-non-root

Fixed #379. Redirect using request.url when using "save and continue" in model edit_view
parents f1c5db1c 815e37b9
...@@ -1246,7 +1246,7 @@ class BaseModelView(BaseView, ActionsMixin): ...@@ -1246,7 +1246,7 @@ class BaseModelView(BaseView, ActionsMixin):
if self.update_model(form, model): if self.update_model(form, model):
if '_continue_editing' in request.form: if '_continue_editing' in request.form:
flash(gettext('Model was successfully saved.')) flash(gettext('Model was successfully saved.'))
return redirect(request.full_path) return redirect(request.url)
else: else:
return redirect(return_url) return redirect(return_url)
......
...@@ -2,6 +2,9 @@ from nose.tools import eq_, ok_ ...@@ -2,6 +2,9 @@ from nose.tools import eq_, ok_
from flask import Flask from flask import Flask
from werkzeug.wsgi import DispatcherMiddleware
from werkzeug.test import Client
from wtforms import fields from wtforms import fields
from flask.ext.admin import Admin, form from flask.ext.admin import Admin, form
...@@ -175,6 +178,21 @@ def test_mockview(): ...@@ -175,6 +178,21 @@ def test_mockview():
eq_(rv.status_code, 302) eq_(rv.status_code, 302)
eq_(rv.headers['location'], 'http://localhost/admin/modelview/') eq_(rv.headers['location'], 'http://localhost/admin/modelview/')
# Create a dispatched application to test that edit view's "save and
# continue" functionality works when app is not located at root
dummy_app = Flask('dummy_app')
dispatched_app = DispatcherMiddleware(dummy_app, {'/dispatched': app})
dispatched_client = Client(dispatched_app)
app_iter, status, headers = dispatched_client.post(
'/dispatched/admin/modelview/edit/?id=3',
data=dict(col1='another test!', col2='test@', col3='test#', _continue_editing='True'))
eq_(status, '302 FOUND')
eq_(headers['Location'], 'http://localhost/dispatched/admin/modelview/edit/?id=3')
model = view.updated_models.pop()
eq_(model.col1, 'another test!')
def test_permissions(): def test_permissions():
app, admin = setup() app, admin = setup()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment