Commit 815e37b9 authored by wilsaj's avatar wilsaj

Fixed #379. Redirect using request.url when using "save and continue" in model edit_view

this will work for apps located at places other than the server root
parent f1c5db1c
...@@ -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