如何将 ondelete 函数重定向到页面以要求输入密码然后返回到 SQLFORM.grid 页面?

杰马托斯

有谁知道如何将 ondelete 重定向到一个页面以要求输入密码,然后返回到 SQLFORM.grid 页面?

在我下面的代码中(对于非经理和非主管),您可以看到我已将 ondelete 配置为调用 on_delete 函数。这有效。

on_delete 函数也执行到get_approval 的重定向,get_approval 代码运行,但是返回grid 页面,没有显示get_approval 表单页面。

如果我评论 ondelete 并取消评论链接和删除一切正常。视图 get_approval.html 存在。

@auth.requires(lambda: (auth.requires_login() and request.env.http_referer
                        and ('/client' in request.env.http_referer
                             or '/client/get_approval' in request.env.http_referer)))
def get_approval():
    """."""
    rec_id = request.args[0]

    rows_dic = {**general.get_members(db, SUPERVISOR_ROLE),
                **general.get_members(db, MANAGER_ROLE)}

    form = SQLFORM.factory(
        Field('user_id', label=T('Supervisor/Manager'),
              requires=IS_IN_SET(rows_dic, zero=T('Choose one...'))),
        Field('password', 'password', label=T('Password'), requires=IS_NOT_EMPTY()),
              buttons=[BUTTON(T('Submit'), _type='submit', _class='btn btn-primary')],
              formstyle='table3cols',
    )

    if form.process(keepvalues=True).accepted:
        # If passwords match it is approved.
        if (db.auth_user.password.validate(form.vars.password)[0]
                == db.auth_user(form.vars.user_id).password):
            row = db.client[rec_id]
            row.update_record(cancel_approved_by=form.vars.user_id,
                              canceled_by=session.auth.user.id, canceled_on=request.now,
                              is_active=False)
            redirect(URL('index', user_signature=True))
        else:
            response.flash = T('Wrong password')

    return dict(form=form)


@auth.requires_login()
def index():
    """."""
    # DON'T uncomment without testing.
    # session.forget(response)  # Recommended in Efficiency tricks.

    # Hidden fields in grid/view form.
    db.client.id.readable = False
    db.client.canceled_on.readable = False
    db.client.canceled_by.readable = False
    db.client.cancel_approved_by.readable = False
    # Hidden fields in create/edit form.
    db.client.canceled_on.writable = False
    db.client.canceled_by.writable = False
    db.client.cancel_approved_by.writable = False

    # ondelete is used in the grid and on_validation/on_update are used
    # in the edit form.
    if auth.has_membership(SUPERVISOR_ROLE) or auth.has_membership(MANAGER_ROLE):
        grid = SQLFORM.grid(db.client, csv=False, details=False,
                            # noconfirm=True,  # Grid only.
                            ondelete=on_delete,  # Grid only.
                            onvalidation=on_validation,  # Form only.
                            represent_none='',  # Grid/view form only.
        )
    else:
        grid = SQLFORM.grid(
            db.client, create=False, csv=False, # deletable=False,
            details=False,
            editable=False,
            # links=[lambda row: A(
                # SPAN(_class='icon trash icon-trash glyphicon glyphicon-trash') + ' '
                # + SPAN(T('Delete'), _class='buttontext button', _title='Delete'),
                # _href=URL('get_approval', args=[row.id], user_signature=True),
                # _class='button btn btn-default btn-secondary')],
            ondelete=on_delete,  # Grid only.
            represent_none='',  # Grid/view form only.
        )

    return dict(grid=grid)


@auth.requires(lambda: (auth.requires_login() and request.env.http_referer
                        and '/client' in request.env.http_referer))
def on_delete(table, rec_id):
    """Used in the grid."""
    if auth.has_membership(SUPERVISOR_ROLE) or auth.has_membership(MANAGER_ROLE):
        row = table[rec_id]
        row.update_record(cancel_approved_by=session.auth.user.id,
                          canceled_by=session.auth.user.id, canceled_on=request.now,
                          is_active=False)
        redirect(URL(user_signature=True))
    else:
        redirect(URL('get_approval', args=[rec_id], user_signature=True))

提前致谢,

JM

杰马托斯

重定向命令必须与 client_side=True 一起使用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从两个SQLFORM.grid中选择记录,然后将记录插入第三个表中

来自分类Dev

如何将访客重定向到登录页面?

来自分类Dev

如何将特定的动态页面重定向到主页

来自分类Dev

如何将特定页面重定向到http

来自分类Dev

如何将页面重定向到heroku应用

来自分类Dev

如何将页面重定向到父框架?

来自分类Dev

如何将联系表单重定向到索引页面?

来自分类Dev

如何将状态从页面传递到组件并返回页面?

来自分类Dev

如果发生数据库错误,如何将页面重定向到其他页面

来自分类Dev

如何将Drupal 7的已删除页面重定向到视图页面

来自分类Dev

如何将Drupal 7的已删除页面重定向到视图页面

来自分类Dev

如何将.ASPX页面重定向到.NET Core Razor页面

来自分类Dev

magento如何将结帐页面重定向到“编辑个人资料”页面

来自分类Dev

如何将子文件夹中的所有页面重定向到单个页面

来自分类Dev

Hugo:如何将 list.html 页面重定向到 single.html 页面

来自分类Dev

将 Shopify 主页重定向到密码页面

来自分类Dev

如果使用的电子邮件地址和密码错误,我如何将客户重定向到“注册”页面?

来自分类Dev

如何将一个页面重定向到另一个页面,然后将所有剩余页面重定向到一个新站点

来自分类Dev

MVC,如何将数据发布到控制器并重定向到 aspx 页面

来自分类Dev

如何将Internet Explorer用户重定向到新页面?

来自分类Dev

如何将一个页面网址重定向到另一个

来自分类Dev

如何将所有请求重定向到JSP中的特定页面

来自分类Dev

登录Wordpress后如何将具有特定“角色”的用户重定向到特定页面

来自分类Dev

如何将链接重定向到其他页面,而不是默认的WordPress

来自分类Dev

如何将子域的所有页面永久重定向到www域的子路径?

来自分类Dev

默认情况下如何将Kentico重定向到CMS管理页面

来自分类Dev

如何将选择加入的表单重定向到“谢谢”页面?

来自分类Dev

如何将已通过身份验证的用户从登录页面重定向到主页

来自分类Dev

如何将多个重定向到单个页面但使用不同的URL

Related 相关文章

  1. 1

    从两个SQLFORM.grid中选择记录,然后将记录插入第三个表中

  2. 2

    如何将访客重定向到登录页面?

  3. 3

    如何将特定的动态页面重定向到主页

  4. 4

    如何将特定页面重定向到http

  5. 5

    如何将页面重定向到heroku应用

  6. 6

    如何将页面重定向到父框架?

  7. 7

    如何将联系表单重定向到索引页面?

  8. 8

    如何将状态从页面传递到组件并返回页面?

  9. 9

    如果发生数据库错误,如何将页面重定向到其他页面

  10. 10

    如何将Drupal 7的已删除页面重定向到视图页面

  11. 11

    如何将Drupal 7的已删除页面重定向到视图页面

  12. 12

    如何将.ASPX页面重定向到.NET Core Razor页面

  13. 13

    magento如何将结帐页面重定向到“编辑个人资料”页面

  14. 14

    如何将子文件夹中的所有页面重定向到单个页面

  15. 15

    Hugo:如何将 list.html 页面重定向到 single.html 页面

  16. 16

    将 Shopify 主页重定向到密码页面

  17. 17

    如果使用的电子邮件地址和密码错误,我如何将客户重定向到“注册”页面?

  18. 18

    如何将一个页面重定向到另一个页面,然后将所有剩余页面重定向到一个新站点

  19. 19

    MVC,如何将数据发布到控制器并重定向到 aspx 页面

  20. 20

    如何将Internet Explorer用户重定向到新页面?

  21. 21

    如何将一个页面网址重定向到另一个

  22. 22

    如何将所有请求重定向到JSP中的特定页面

  23. 23

    登录Wordpress后如何将具有特定“角色”的用户重定向到特定页面

  24. 24

    如何将链接重定向到其他页面,而不是默认的WordPress

  25. 25

    如何将子域的所有页面永久重定向到www域的子路径?

  26. 26

    默认情况下如何将Kentico重定向到CMS管理页面

  27. 27

    如何将选择加入的表单重定向到“谢谢”页面?

  28. 28

    如何将已通过身份验证的用户从登录页面重定向到主页

  29. 29

    如何将多个重定向到单个页面但使用不同的URL

热门标签

归档