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
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
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
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
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
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
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
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
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