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

Fixed #215, added after_model_change event

parent 57f11713
......@@ -339,12 +339,15 @@ class ModelView(BaseModelView):
form.populate_obj(model)
self.on_model_change(form, model)
model.save()
return True
except Exception, ex:
flash(gettext('Failed to create model. %(error)s', error=str(ex)),
'error')
logging.exception('Failed to create model')
return False
else:
self.after_model_change(form, model, True)
return True
def update_model(self, form, model):
"""
......@@ -359,12 +362,15 @@ class ModelView(BaseModelView):
form.populate_obj(model)
self.on_model_change(form, model)
model.save()
return True
except Exception, ex:
flash(gettext('Failed to update model. %(error)s', error=str(ex)),
'error')
logging.exception('Failed to update model')
return False
else:
self.after_model_change(form, model, False)
return True
def delete_model(self, model):
"""
......
......@@ -342,12 +342,14 @@ class ModelView(BaseModelView):
# For peewee have to save inline forms after model was saved
save_inline(form, model)
return True
except Exception, ex:
flash(gettext('Failed to create model. %(error)s', error=str(ex)), 'error')
logging.exception('Failed to create model')
return False
else:
self.after_model_change(form, model, True)
return True
def update_model(self, form, model):
try:
......@@ -357,12 +359,14 @@ class ModelView(BaseModelView):
# For peewee have to save inline forms after model was saved
save_inline(form, model)
return True
except Exception, ex:
flash(gettext('Failed to update model. %(error)s', error=str(ex)), 'error')
logging.exception('Failed to update model')
return False
else:
self.after_model_change(form, model, False)
return True
def delete_model(self, model):
try:
......
......@@ -269,12 +269,15 @@ class ModelView(BaseModelView):
model = form.data
self.on_model_change(form, model)
self.coll.insert(model)
return True
except Exception, ex:
flash(gettext('Failed to create model. %(error)s', error=str(ex)),
'error')
logging.exception('Failed to create model')
return False
else:
self.after_model_change(form, model, True)
return True
def update_model(self, form, model):
"""
......@@ -291,12 +294,15 @@ class ModelView(BaseModelView):
pk = self.get_pk_value(model)
self.coll.update({'_id': pk}, model)
return True
except Exception, ex:
flash(gettext('Failed to update model. %(error)s', error=str(ex)),
'error')
logging.exception('Failed to update model')
return False
else:
self.after_model_change(form, model, False)
return True
def delete_model(self, model):
"""
......
......@@ -752,12 +752,15 @@ class ModelView(BaseModelView):
self.session.add(model)
self.on_model_change(form, model)
self.session.commit()
return True
except Exception, ex:
flash(gettext('Failed to create model. %(error)s', error=str(ex)), 'error')
logging.exception('Failed to create model')
self.session.rollback()
return False
else:
self.after_model_change(form, model, True)
return True
def update_model(self, form, model):
"""
......@@ -772,12 +775,15 @@ class ModelView(BaseModelView):
form.populate_obj(model)
self.on_model_change(form, model)
self.session.commit()
return True
except Exception, ex:
flash(gettext('Failed to update model. %(error)s', error=str(ex)), 'error')
logging.exception('Failed to update model')
self.session.rollback()
return False
else:
self.after_model_change(form, model, False)
return True
def delete_model(self, model):
"""
......
......@@ -658,7 +658,7 @@ class BaseModelView(BaseView, ActionsMixin):
"""
raise NotImplemented('Please implement get_one method')
# Model handlers
# Model event handlers
def on_model_change(self, form, model):
"""
Perform some actions after a model is created or updated.
......@@ -666,7 +666,30 @@ class BaseModelView(BaseView, ActionsMixin):
Called from create_model and update_model in the same transaction
(if it has any meaning for a store backend).
By default do nothing.
By default does nothing.
:param form:
Form used to create/update model
:param model:
Model that will be created/updated
"""
pass
def after_model_change(self, form, model, is_created):
"""
Perform some actions after a model was created or updated and
committed to the database.
Called from create_model after successful database commit.
By default does nothing.
:param form:
Form used to create/update model
:param model:
Model that was created/updated
:param is_created:
True if model was created, False if model was updated
"""
pass
......
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