Exemple #1
0
        def postp(r, output):

            if isinstance(output, dict):

                # Inject controller name in dt action buttons
                if r.component:
                    action_args = [controller, r.id, r.component.alias, '[id]']
                else:
                    action_args = [controller, '[id]']
                action_url = lambda action: URL(args=action_args + [action], vars={})
                S3CRUD.action_buttons(r,
                                      read_url = action_url('read'),
                                      update_url = action_url('update'),
                                      delete_url = action_url('delete'),
                                      )

                # Inject controller name in CRUD buttons
                buttons = output.get("buttons")
                if buttons:
                    path = "%s/%s" % (r.controller, r.function)
                    full = "%s/%s" % (path, controller)
                    for element in buttons.values():
                        if not hasattr(element, "attributes"):
                            continue
                        url = element.attributes.get("_href")
                        if url:
                            element["_href"] = url.replace(path, full)

            return output
Exemple #2
0
        def custom_postp(r, output):
            # Call standard postp
            if callable(standard_postp):
                output = standard_postp(r, output)

            if r.interactive and isinstance(output, dict):
                # Modify Open Button
                url = URL(c="default",
                          f="index",
                          args=["subscriptions"],
                          vars={"subscription_id": "[id]"})
                if not (has_role("ALERT_EDITOR") or \
                        has_role("ALERT_APPROVER")):
                    S3CRUD.action_buttons(r, read_url=url)
                else:
                    S3CRUD.action_buttons(r, update_url=url)
                # Modify Add Button
                if "form" in output:
                    add_btn = A(T("Create Subscription"),
                                _class="action-btn",
                                _href=URL(c="default",
                                          f="index",
                                          args=["subscriptions"]))
                    output["showadd_btn"] = add_btn

            return output
Exemple #3
0
        def postp(r, output):

            if isinstance(output, dict):

                # Inject controller name in dt action buttons
                if r.component:
                    action_args = [controller, r.id, r.component.alias, '[id]']
                else:
                    action_args = [controller, '[id]']
                action_url = lambda action: URL(args=action_args + [action],
                                                vars={})
                S3CRUD.action_buttons(
                    r,
                    read_url=action_url('read'),
                    update_url=action_url('update'),
                    delete_url=action_url('delete'),
                )

                # Inject controller name in CRUD buttons
                buttons = output.get("buttons")
                if buttons:
                    path = "%s/%s" % (r.controller, r.function)
                    full = "%s/%s" % (path, controller)
                    for element in buttons.values():
                        if not hasattr(element, "attributes"):
                            continue
                        url = element.attributes.get("_href")
                        if url:
                            element["_href"] = url.replace(path, full)

            return output
Exemple #4
0
        def custom_postp(r, output):
            # Call standard postp
            if callable(standard_postp):
                output = standard_postp(r, output)

            if r.interactive and isinstance(output, dict):
                # Modify Open Button
                if manage_recipient and role_check:
                    # Admin based subscription
                    S3CRUD.action_buttons(
                        r,
                        update_url=URL(c="default",
                                       f="index",
                                       args=["subscriptions"],
                                       vars={
                                           "option": "manage_recipient",
                                           "subscription_id": "[id]"
                                       }),
                        delete_url=URL(c="pr",
                                       f="subscription",
                                       args=["[id]", "delete"],
                                       vars={"option": "manage_recipient"}))
                else:
                    # self subscription
                    S3CRUD.action_buttons(
                        r,
                        update_url=URL(c="default",
                                       f="index",
                                       args=["subscriptions"],
                                       vars={"subscription_id": "[id]"}))

                if "form" in output:
                    # Modify Add Button
                    if manage_recipient and role_check:
                        # Admin based subscription
                        add_btn = A(T("Create Subscription"),
                                    _class="action-btn",
                                    _href=URL(
                                        c="default",
                                        f="index",
                                        args=["subscriptions"],
                                        vars={"option": "manage_recipient"}))
                    else:
                        # self subscription
                        add_btn = A(T("Create Subscription"),
                                    _class="action-btn",
                                    _href=URL(c="default",
                                              f="index",
                                              args=["subscriptions"]))
                    output["showadd_btn"] = add_btn

            return output
Exemple #5
0
        def custom_postp(r, output):
            # Call standard postp
            if callable(standard_postp):
                output = standard_postp(r, output)

            if r.interactive and isinstance(output, dict):
                # Modify Open Button
                if manage_recipient and role_check:
                    # Admin based subscription
                    S3CRUD.action_buttons(
                        r,
                        update_url=URL(
                            c="default",
                            f="index",
                            args=["subscriptions"],
                            vars={"option": "manage_recipient", "subscription_id": "[id]"},
                        ),
                        delete_url=URL(
                            c="pr", f="subscription", args=["[id]", "delete"], vars={"option": "manage_recipient"}
                        ),
                    )
                else:
                    # self subscription
                    S3CRUD.action_buttons(
                        r,
                        update_url=URL(
                            c="default", f="index", args=["subscriptions"], vars={"subscription_id": "[id]"}
                        ),
                    )

                if "form" in output:
                    # Modify Add Button
                    if manage_recipient and role_check:
                        # Admin based subscription
                        add_btn = A(
                            T("Create Subscription"),
                            _class="action-btn",
                            _href=URL(
                                c="default", f="index", args=["subscriptions"], vars={"option": "manage_recipient"}
                            ),
                        )
                    else:
                        # self subscription
                        add_btn = A(
                            T("Create Subscription"),
                            _class="action-btn",
                            _href=URL(c="default", f="index", args=["subscriptions"]),
                        )
                    output["showadd_btn"] = add_btn

            return output
Exemple #6
0
        def custom_postp(r, output):
            # Call standard postp
            if callable(standard_postp):
                output = standard_postp(r, output)

            if r.interactive and isinstance(output, dict):
                if r.method == "assign":
                    # No Top Menu
                    current.menu.main = ""
                    # Custom View to waste less space inside popup
                    import os
                    response.view = os.path.join(r.folder, "modules",
                                                 "templates", "WACOP", "views",
                                                 "assign.html")
                else:
                    # Summary or Profile pages
                    # Additional styles
                    s3.external_stylesheets += [
                        "https://cdn.knightlab.com/libs/timeline3/latest/css/timeline.css",
                        "https://fonts.googleapis.com/css?family=Merriweather:400,700|Source+Sans+Pro:400,700",
                    ]

                    if r.method == "summary":
                        # Open the Custom profile page instead of the normal one
                        from gluon import URL
                        from s3 import S3CRUD
                        custom_url = URL(args=["[id]", "custom"])
                        S3CRUD.action_buttons(r,
                                              read_url=custom_url,
                                              update_url=custom_url)

                    # System-wide Alert
                    if current.auth.s3_has_role("ADMIN"):
                        # Admin user can edit system_wide alert
                        output["ADMIN"] = True
                    else:
                        output["ADMIN"] = False

                    ptable = s3db.cms_post
                    system_wide = current.db(
                        ptable.name == "SYSTEM_WIDE").select(
                            ptable.body, limitby=(0, 1)).first()
                    if system_wide:
                        output["system_wide"] = system_wide.body
                    else:
                        output["system_wide"] = False

            return output
Exemple #7
0
        def custom_postp(r, output):
            # Call standard postp
            if callable(standard_postp):
                output = standard_postp(r, output)

            if r.interactive and isinstance(output, dict):
                # Modify Update Button
                update_url = URL(c="default", f="index", args=["subscriptions"],
                                 vars={"subscription_id": "[id]"})
                S3CRUD.action_buttons(r, update_url=update_url)
                # Modify Add Button
                if "form" in output:
                    add_btn = A(T("Create Subscription"),
                                _class="action-btn",
                                _href=URL(c="default", f="index", args=["subscriptions"])
                                )
                    output["showadd_btn"] = add_btn

            return output
Exemple #8
0
        def custom_postp(r, output):
            # Call standard postp
            if callable(standard_postp):
                output = standard_postp(r, output)

            if r.interactive and isinstance(output, dict):
                # Modify Open Button
                url = URL(c="default", f="index", args=["subscriptions"], vars={"subscription_id": "[id]"})
                if not (has_role("ALERT_EDITOR") or has_role("ALERT_APPROVER")):
                    S3CRUD.action_buttons(r, read_url=url)
                else:
                    S3CRUD.action_buttons(r, update_url=url)
                # Modify Add Button
                if "form" in output:
                    add_btn = A(
                        T("Create Subscription"),
                        _class="action-btn",
                        _href=URL(c="default", f="index", args=["subscriptions"]),
                    )
                    output["showadd_btn"] = add_btn

            return output
Exemple #9
0
        def custom_postp(r, output):
            # Call standard postp
            if callable(standard_postp):
                output = standard_postp(r, output)

            if r.interactive and isinstance(output, dict):
                if r.method == "assign":
                    # No Top Menu
                    current.menu.main = ""
                    # Custom View to waste less space inside popup
                    import os
                    response.view = os.path.join(r.folder, "modules",
                                                 "templates", "WACOP", "views",
                                                 "assign.html")
                else:
                    # Summary or Profile pages
                    # Additional styles
                    s3.external_stylesheets += [
                        "https://cdn.knightlab.com/libs/timeline3/latest/css/timeline.css",
                        "https://fonts.googleapis.com/css?family=Merriweather:400,700|Source+Sans+Pro:400,700",
                    ]

                    if r.method == "summary":
                        # Open the Custom profile page instead of the normal one
                        from gluon import URL
                        from s3 import S3CRUD
                        custom_url = URL(args=["[id]", "custom"])
                        S3CRUD.action_buttons(r,
                                              read_url=custom_url,
                                              update_url=custom_url)

                    # System-wide Alert
                    from templates.WACOP.controllers import custom_WACOP
                    custom = custom_WACOP()
                    output["system_wide"] = custom._system_wide_html()

            return output