Commit b6c8c836 authored by Serge S. Koval's avatar Serge S. Koval

Fixed #247. on_model_change now accepts third parameter is_created

parent 8f1aec03
- Python 3
- Test for raw wtforms form
- Model backends
- Contribute field declaratively with sort
- model_changed callback to accept 3rd parameter
- MongoEngine
- ImageField support
......@@ -343,7 +343,7 @@ class ModelView(BaseModelView):
try:
model = self.model()
form.populate_obj(model)
self.on_model_change(form, model)
self._on_model_change(form, model, True)
model.save()
except Exception as ex:
flash(gettext('Failed to create model. %(error)s', error=str(ex)),
......@@ -366,7 +366,7 @@ class ModelView(BaseModelView):
"""
try:
form.populate_obj(model)
self.on_model_change(form, model)
self._on_model_change(form, model, False)
model.save()
except Exception as ex:
flash(gettext('Failed to update model. %(error)s', error=str(ex)),
......
......@@ -335,7 +335,7 @@ class ModelView(BaseModelView):
try:
model = self.model()
form.populate_obj(model)
self.on_model_change(form, model)
self._on_model_change(form, model, True)
model.save()
# For peewee have to save inline forms after model was saved
......@@ -352,7 +352,7 @@ class ModelView(BaseModelView):
def update_model(self, form, model):
try:
form.populate_obj(model)
self.on_model_change(form, model)
self._on_model_change(form, model, False)
model.save()
# For peewee have to save inline forms after model was saved
......
......@@ -255,7 +255,7 @@ class ModelView(BaseModelView):
"""
try:
model = form.data
self.on_model_change(form, model)
self._on_model_change(form, model, True)
self.coll.insert(model)
except Exception as ex:
flash(gettext('Failed to create model. %(error)s', error=str(ex)),
......@@ -278,7 +278,7 @@ class ModelView(BaseModelView):
"""
try:
model.update(form.data)
self.on_model_change(form, model)
self._on_model_change(form, model, False)
pk = self.get_pk_value(model)
self.coll.update({'_id': pk}, model)
......
......@@ -764,7 +764,7 @@ class ModelView(BaseModelView):
model = self.model()
form.populate_obj(model)
self.session.add(model)
self.on_model_change(form, model)
self._on_model_change(form, model, True)
self.session.commit()
except Exception as ex:
flash(gettext('Failed to create model. %(error)s', error=str(ex)), 'error')
......@@ -787,7 +787,7 @@ class ModelView(BaseModelView):
"""
try:
form.populate_obj(model)
self.on_model_change(form, model)
self._on_model_change(form, model, False)
self.session.commit()
except Exception as ex:
flash(gettext('Failed to update model. %(error)s', error=str(ex)), 'error')
......
......@@ -707,7 +707,7 @@ class BaseModelView(BaseView, ActionsMixin):
raise NotImplemented('Please implement get_one method')
# Model event handlers
def on_model_change(self, form, model):
def on_model_change(self, form, model, is_created):
"""
Perform some actions after a model is created or updated.
......@@ -720,9 +720,24 @@ class BaseModelView(BaseView, ActionsMixin):
Form used to create/update model
:param model:
Model that will be created/updated
:param is_created:
Will be set to True if model was created and to False if edited
"""
pass
def _on_model_change(self, form, model, is_created):
"""
Compatibility helper.
"""
try:
self.on_model_change(form, model, is_created)
except TypeError:
msg = ('%s.on_model_change() now accepts third ' +
'parameter is_created. Please update your code') % self.model
warnings.warn(msg)
self.on_model_change(form, model)
def after_model_change(self, form, model, is_created):
"""
Perform some actions after a model was created or updated and
......
......@@ -502,7 +502,7 @@ def test_on_model_change_delete():
db.create_all()
class ModelView(CustomModelView):
def on_model_change(self, form, model):
def on_model_change(self, form, model, is_created):
model.test1 = model.test1.upper()
def on_model_delete(self, model):
......
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