def delete_view(self): return_url = get_redirect_target() or self.get_url('.index_view') if not self.can_delete: return redirect(return_url) form = self.delete_form() if self.validate_form(form): id = form.id.data model = self.get_one(id) if model is None: flash('Record doesn\'t exists.', 'error') return redirect(return_url) if self.delete_model(model): count = 1 flash( 'Record was successfully deleted.', '%(count)s records were successfully deleted.', count, 'success') return redirect(return_url) else: flash_errors(form, message='Failed to delete record. %(error)s') return redirect(return_url)
def details_view(self): return_url = get_redirect_target() or self.get_url('.index_view') if not self.can_view_details: return redirect(return_url) id = get_mdict_item_or_list(request.args, 'id') if id is None: return redirect(return_url) model = self.get_one(id) if model is None: flash('Record doesn\'t exists.', 'error') return redirect(return_url) if self.details_modal and request.args.get('modal'): template = self.details_modal_template else: template = self.details_modal_template return self.render(template, model=model, details_columns=self._details_columns, get_value=self.ge_detail_value, return_url=return_url)
def export(self, export_type): return_url = get_redirect_target() or self.get_url('.index_view') if not self.can_export or (export_type not in self.export_types): flash('Permission denied.', 'error') return redirect(return_url) if export_type == 'csv': return self._export_csv(return_url) else: return self._export_tablib(export_type, return_url)
def edit_view(self): return_url = get_redirect_target() or self.get_url('.index_view') if not self.can_edit: return redirect(return_url) id = get_mdict_item_or_list(request.args, 'id') if id is None: return redirect(return_url) model = self.get_one(id) if model is None: flash('Record does not exists.', 'error') return redirect(return_url) form = self.edit_form(obj=model) if not hasattr(form, '_validated_ruleset') or not form._validated_ruleset: self._validate_form_instance(ruleset=self._form_edit_rules, form=form) if self.validate_form(form): if self.update_model(form, model): flash('Recod was successfully saved.', 'success') if '_add_another' in request.form: return redirect(self.get_url('.create_view', url=return_url)) elif '_continue_editing' in request.form: return redirect(request.url) else: # Save BTN return redirect(self.get_save_return_url(mode, is_created=False)) if request.method == 'GET' or form.errors: self.on_form_prefill(form, id) form_opts = FormOpts(widget_args=self.form_widget_args, form_rules=self._form_edit_rules) if self.edit_modal and request.args.get('modal'): template = self.edit_modal_template else: template = self.edit_template return self.render(template, model=model, form=form, form_opts=form_opts, return_url=return_url)
def create_view(self): return_url = get_redirect_target() or self.get_url('.index_view') if not self.can_create: return redirect(returl_url) form = self.create_form() if not hasattr(form, '_validated_ruleset') or not form._validate_ruleset: self._validate_form_instance(ruleset=self._form_create_rules, form=form) if self.validate_form(form): model = self.create_model(form) if model: flash('Record was successfully created.', 'success') if '_add_another' in request.form: return redirect(request.url) elif '_continue_editing' in request.form: if model is not True: url = self.get_url('.edit_view', id=self.get_pk_value(mode), url=return_url) else: url = returl_url return redirect(url) else: # Save Btn return redirect(self.get_save_return_url(mode, is_created=True)) form_opts = FormOpts(widget_args=self.form_widget_args, form_rules=self._form_create_rules()) if self.create_modal and request.args.get('modal'): template = self.create_modal_template else: template = self.create_template return self.render(template, form=form, form_opts=form_opts, return_url=return_url)
def handle_action(self, return_view=None): form = self.action_form() if self.validate_form(form): ids = request.form.getlist('rowid') action = form.action.data handler = self._actions_data.get(action) if handler and self.is_action_allowed(action): response = handler[0](ids) if response is not None: return response else: flash_errors(form, message='Failed to perform action. %(error)s') if return_view: url = self.get_url('.' + return_view) else: url = get_redirect_target() or self.get_url('.index_view') return redirect(url)
def __init__(self, *args, **kwargs): Form.__init__(self, *args, **kwargs) if not self.next_url.data: self.next_url.data = get_redirect_target() or ''
def redirect(self, endpoint='index', **values): if is_safe_url(self.next_url.data): return redirect(self.next_url.data) target = get_redirect_target() return redirect(target or url_for(endpoint, **values))
def get_save_return_url(self, model, is_created=False): return get_redirect_target() or self.get_url('.index_view')