示例#1
0
        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)
示例#2
0
        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)
示例#3
0
        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)
示例#4
0
        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)
示例#5
0
        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)
示例#6
0
    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)
示例#7
0
 def __init__(self, *args, **kwargs):
     Form.__init__(self, *args, **kwargs)
     if not self.next_url.data:
         self.next_url.data = get_redirect_target() or ''
示例#8
0
 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))
示例#9
0
 def get_save_return_url(self, model, is_created=False):
     return get_redirect_target() or self.get_url('.index_view')