def project(): """ PROJECT / Project/Task Management """ return M(c="project", f="task")(M("Tasks", f="task")( M("Create", m="create"), M("My Open Tasks", vars={"mine": 1}), ), )
def project(): """ PROJECT / Project Management """ return M(c="project") ( M("Projects", f="project")( M("Create", m="create") ) )
def req(): return M(c="req", f="need")( M("Recruitment", link=False)( M("Open Requests", f="need"), M("Assigned Staff", f="need"), ) )
def event(): """ EVENT / Event Management """ return M(c="event")(M("Events", f="event")(M("Create", m="create", restrict=("EVENT_MANAGER", )), ), M("Administration", restrict=("ADMIN", ))(M("Event Types", f="event_type"), ))
def transport(): """ Transport """ return M(c="transport")( M("Airports", f="airport")( M("Create", m="create"), M("Map", m="map"), ), M("Flights", f="flight")( M("Create", m="create"), M("Map", m="map"), ), M("Airplane Types", f="airplane")( M("Create", m="create"), M("Map", m="map"), ), )
def org(): """ ORG / Organization Registry """ sysroles = current.auth.get_system_roles() ADMIN = sysroles.ADMIN ORG_GROUP_ADMIN = sysroles.ORG_GROUP_ADMIN return M(c="org")(M("Organizations", f="organisation")( M("Hierarchy", m="hierarchy"), M("Create", m="create", restrict=(ADMIN, ORG_GROUP_ADMIN)), ), M("Facilities", f="facility")(M("Create", m="create"), ), M("Administration", restrict=(ADMIN, ORG_GROUP_ADMIN))( M("Facility Types", f="facility_type"), M("Organization Types", f="organisation_type"), M("Sectors", f="sector"), ))
def hrm(): """ HRM / Human Resources Management """ #settings = current.deployment_settings #teams = settings.get_hrm_teams() #use_teams = lambda i: teams return M(c="hrm")( M("Staff", f="staff")( # settings.get_hrm_staff_label() # Always create via User #M("Create", m="create"), ), #M(teams, f="group", check=use_teams)( # M("Create", m="create"), # ), #M("Job Titles", f="job_title")( # M("Create", m="create"), # ), )
def med(): """ Medical """ ADMIN = current.auth.get_system_roles().ADMIN return M(c="med")( M("Medical Facilities", f="hospital", m="summary")( M("Create", m="create"), ), M("Medical Personnel", f="contact")( M("Create", m="create"), ), M("Pharmacies", f="pharmacy")( M("Create", m="create"), M("Map", m="map"), ), M("Administration", link=False, restrict=ADMIN)( M("Qualifications", c="hrm", f="skill"), ), )
def disease(): has_role = current.auth.s3_has_role daily_report = lambda i: has_role("ORG_ADMIN") and \ has_role("TEST_PROVIDER", include_admin=False) return M(c="disease")( M("Test Results", f="case_diagnostics", restrict="TEST_PROVIDER")( M("Registrieren", m="register"), M("Statistics", m="report"), ), M("Daily Reports", f="testing_report")( M("Create", m="create", check=daily_report), M("Statistics", m="report"), ), M("Administration", restrict="ADMIN")( M("Diseases", f="disease"), ) )
def fin(): """ FIN / Finance """ return M(c="fin")( M("Voucher Programs", f="voucher_program")(M("Create", m="create", restrict=("PROGRAM_MANAGER")), ), M("Vouchers", f="voucher")(M("Create Voucher", m="create", restrict=("VOUCHER_ISSUER")), ), M("Accepted Vouchers", f="voucher_debit")( M("Accept Voucher", m="create", restrict=("VOUCHER_PROVIDER")), M("Statistics", m="report"), ), )
def vol(): """ VOL / Volunteer Management """ settings = current.deployment_settings teams = settings.get_hrm_teams() use_teams = lambda i: teams return M(c="vol")( M("Volunteers", f="volunteer")(M("Create", m="create"), ), M(teams, f="group", check=use_teams)(M("Create", m="create"), ), M("Job Titles", f="job_title")(M("Create", m="create"), ), )
def disease(): s3db = current.s3db report_results = lambda i: s3db.get_config("disease_case_diagnostics", "insertable", True) return M(c="disease")(M("Test Results", f="case_diagnostics")( M("Registrieren", m="create", check=report_results), M("Statistics", m="report"), ), M("Administration", restrict="ADMIN")(M("Diseases", f="disease"), ))
def hrm(): """ HRM / Human Resources Management """ settings = current.deployment_settings teams = settings.get_hrm_teams() use_teams = lambda i: teams return M(c="hrm")( M(settings.get_hrm_staff_label(), f="staff")(M("Create", m="create"), ), M(teams, f="group", check=use_teams)(M("Create", m="create"), ), M("Job Titles", f="job_title")(M("Create", m="create"), ), )
def cr(): """ CR / Shelter Registry """ ADMIN = current.auth.get_system_roles().ADMIN return M(c="cr")( M("Shelters", f="shelter")(M("Create", m="create"), ), M("Administration", link=False, restrict=(ADMIN, ))( M("Shelter Types", f="shelter_type"), M("Shelter Services", f="shelter_service"), ), )
def org(): """ ORG / Organization Registry """ auth = current.auth sysroles = auth.get_system_roles() ADMIN = sysroles.ADMIN ORG_GROUP_ADMIN = sysroles.ORG_GROUP_ADMIN has_roles = auth.s3_has_roles is_org_user = not has_roles((ADMIN, ORG_GROUP_ADMIN)) and \ has_roles(("RELIEF_PROVIDER", "ORG_ADMIN")) return M(c="org")(M("Organizations", c="org", f="organisation")( M("Create", m="create", restrict=(ADMIN, ORG_GROUP_ADMIN)), M("My Organizations", vars={"mine": "1"}, check=is_org_user), M("All Organizations", check=is_org_user), ), M("Administration", restrict=ADMIN)( M("Organization Types", f="organisation_type"), M("Sectors", f="sector"), ))
def cr(): """ CR / Shelter Registry """ ADMIN = current.auth.get_system_roles().ADMIN return M(c="cr")( M("Accommodation", f="shelter")( M("Create", m="create"), M("Map", m="map"), ), M("Administration", link=False, restrict=ADMIN)( M("Shelter Types", f="shelter_type"), ), )
def org(): """ ORG / Organization Registry """ org_menu = M("Organizations", f="organisation", link=False) if current.auth.s3_has_role("ORG_GROUP_ADMIN"): realms = current.auth.permission.permitted_realms( "org_group", "update") gtable = current.s3db.org_group query = (gtable.deleted == False) if realms is not None: query = (gtable.pe_id.belongs(realms)) & query groups = current.db(query).select( gtable.id, gtable.name, orderby=gtable.name, ) for group in groups: org_menu( M( group.name, f="organisation", vars={"g": group.id}, translate=False, )) org_menu( M("My Organizations", vars={"mine": 1}, restrict="ORG_ADMIN"), M("Create Organization", m="create", restrict="ORG_GROUP_ADMIN"), ) return M(c="org")( org_menu, M("Administration", restrict=("ADMIN"))( M("Facility Types", f="facility_type"), M("Organization Types", f="organisation_type"), # M("Sectors", f="sector"), ))
def org(): """ ORG / Organization Registry """ ADMIN = current.auth.get_system_roles().ADMIN return M()( M("Organizations", c="org", f="organisation")( #M("Hierarchy", m="hierarchy"), M("Create", m="create", restrict=ADMIN), ), M("Staff", c="hrm", f="staff")( # Always create via User #M("Create", m="create"), ), M("Administration", restrict=ADMIN)( M("Organization Types", c="org", f="organisation_type"), ) )
def vol(): """ VOL / Volunteer Management """ pending_label = current.T("Pending Requests") if current.auth.s3_has_role("COORDINATOR"): from s3 import FS query = (FS("end_date") >= current.request.utcnow) & \ (FS("status") == "REQ") resource = current.s3db.resource("hrm_delegation", filter = query, ) num_pending_requests = resource.count() if num_pending_requests: pending_label = "%s (%s)" % (pending_label, num_pending_requests) return M(c=("vol", "hrm"))( M("Volunteers", c="vol", f="person")( M("Create", m="create", t="pr_person"), M("Currently Deployed", vars = {"deployed_now": 1}, ), M("Archive", vars = {"active": "0"}, restrict = "COORDINATOR", ), ), M("Deployments", c="hrm", f="delegation")( M(pending_label, vars = {"workflow": "p"}, translate = False, ), M("Processed Requests", vars = {"workflow": "d"}, ), M("Archive", vars = {"workflow": "o"}, ), M("Organizer", m="organize", restrict="HRMANAGER"), ), M("Statistics", link=False)( M("Deployments", c="hrm", f="delegation", m="report"), M("Volunteers", c="vol", f="person", m="report", restrict = "COORDINATOR", ), ), M("Administration", link=False, restrict="ADMIN")( M("Occupation Types", c="pr", f="occupation_type"), M("Skills / Resources", c="hrm", f="skill"), #M("Competency Levels", c="hrm", f="competency_rating"), ) )
def br(): """ Beneficiary Registry """ s3db = current.s3db labels = s3db.br_terminology() crud_strings = s3db.br_crud_strings("pr_person") f = current.request.function auth = current.auth is_event_manager = auth.s3_has_role("EVENT_MANAGER") is_relief_provider = auth.s3_has_role("RELIEF_PROVIDER", include_admin=False) is_case_manager = auth.s3_has_role("CASE_MANAGER", include_admin=False) org_role = is_event_manager or is_relief_provider or is_case_manager if org_role: # Org Users: separate menus per function if is_event_manager and f in ("offers", "assistance_type"): # Relief Offers menu = [ M("Current Relief Offers", f="offers")( M("Statistics", m="report"), # TODO enable when implemented #M("Map", m="map"), ), M("Approval", f="offers", link=False, restrict="EVENT_MANAGER")( M("Pending Approvals", vars={"pending": "1"}), M("Blocked Entries", vars={"blocked": 1}), M("All Offers", vars={"all": 1}), ), M("Administration", link=False, restrict="ADMIN")(M("Assistance Types", f="assistance_type"), ) ] elif f in ("person", "case_activity", "offers"): # Cases, needs and relief offers menu = [ M(labels.CURRENT, f="person", vars={"closed": "0"}, restrict=("EVENT_MANAGER", "RELIEF_PROVIDER", "CASE_MANAGER"))(M(crud_strings.label_create, m="create"), ), M("Our Needs", f="case_activity", check=lambda i: is_relief_provider or is_case_manager)(M( "Statistic", m="report"), ), M("Current Relief Offers", f="offers", check=lambda i: not is_event_manager)( M("Statistics", m="report"), # TODO enable when implemented #M("Map", m="map"), ), M("Archive", link=False)( M(labels.CLOSED, f="person", vars={"closed": "1"}), M("Invalid Cases", f="person", vars={"invalid": "1"}, restrict=["ADMIN"]), ), ] elif f in ("assistance_offer", "assistance_type"): # Our Offers menu = [ M("Our Relief Offers", f="assistance_offer", restrict="RELIEF_PROVIDER")(M("Create", m="create"), ), ] else: # Needs menu = [ M("Current Needs", f="activities")(M("Statistic", m="report"), ), M("Administration", link=False, restrict="ADMIN")(M("Need Types", f="need"), ) ] else: # Private Citizen: combined menu menu = [ M("My Needs", f="case_activity")( M("Report Need", m="create"), M("Matching Offers", f="offers", vars={"match": "1"}), M("All Relief Offers", f="offers"), ), M("My Relief Offers", f="assistance_offer")(M("New Offer", m="create"), ), M("All Current Needs", f="activities")(M("Statistic", m="report"), ), ] return M(c="br")(menu)
def admin(self): """ ADMIN menu """ if not current.auth.s3_has_role("ADMIN"): # OrgAdmin: No Side-menu return None settings = current.deployment_settings consent_tracking = lambda i: settings.get_auth_consent_tracking() # NB: Do not specify a controller for the main menu to allow # re-use of this menu by other controllers return M()( M("User Management", c="admin", f="user")( M("Create User", m="create"), M("List All Users"), M("Import Users", m="import"), M("List All Roles", f="role"), ), M("Consent Tracking", c="admin", link=False, check=consent_tracking)( M("Processing Types", f="processing_type"), M("Consent Options", f="consent_option"), ), M("CMS", c="cms", f="post"), M("Database", c="appadmin", f="index")( M("Raw Database access", c="appadmin", f="index") ), M("Scheduler", c="admin", f="task"), M("Error Tickets", c="admin", f="errors"), )
def req(): """ REQ / Request Management """ has_role = current.auth.s3_has_role supply_coordinator = lambda i: has_role("SUPPLY_COORDINATOR") supply_distributor = lambda i: has_role( "SUPPLY_DISTRIBUTOR", include_admin=False, ) supply_requester = lambda i: bool(get_managed_requester_orgs()) order_access = lambda i: supply_coordinator(i) or \ supply_requester(i) return M()( M("Orders##delivery", c="req", f="req", vars={"type": 1}, check=order_access)(M("Create", m="create", vars={"type": 1}, check=supply_requester), ), M("Shipment##process", c="inv", f="send", restrict="SUPPLY_COORDINATOR"), M("Shipments", c="inv", f="send", check=supply_distributor), M("Deliveries", "inv", "recv", check=supply_requester), M("Statistics", link=False, restrict="SUPPLY_COORDINATOR")( M("Orders##delivery", c="req", f="req", m="report"), M("Shipments", c="inv", f="send", m="report"), ), M("Items", c="supply", f="item")(M("Create", m="create"), ), M("Warehouses", c="inv", f="warehouse", restrict="ADMIN"), )
def disease(): return M(c="disease")(M("Test Results", f="case_diagnostics")( M("Registrieren", m="create"), M("Statistics", m="report"), ), M("Administration", restrict="ADMIN")(M("Diseases", f="disease"), ))
def br(): """ Beneficiary Registry """ auth = current.auth has_role = auth.s3_has_role sysroles = auth.get_system_roles() ADMIN = sysroles.ADMIN ORG_GROUP_ADMIN = sysroles.ORG_GROUP_ADMIN s3db = current.s3db labels = s3db.br_terminology() crud_strings = s3db.br_crud_strings("pr_person") settings = current.deployment_settings use_activities = settings.get_br_case_activities() urgent_activities = use_activities and settings.get_br_case_activity_urgent_option( ) manage_assistance = settings.get_br_manage_assistance() menu = M(c="br") # Statistics sub-memnu (common for all roles) statistics = M("Statistics", link=False)( M("Cases", f="person", m="report"), M("Activities", f="case_activity", m="report", check=use_activities), M("Measures", f="assistance_measure", m="report", check=manage_assistance), ) # Registry sub-menu human_resource_id = auth.s3_logged_in_human_resource() if human_resource_id and has_role("CASE_MANAGEMENT"): # Side menu for case managers (including "my"-sections) menu( M(labels.CURRENT_MINE, f="person", vars={ "closed": "0", "mine": "1" })( M(crud_strings.label_create, m="create"), M( "My Activities", f="case_activity", vars={"mine": "1"}, check=use_activities, ), M("Emergencies", f="case_activity", vars={ "mine": "1", "~.priority": "0" }, check=urgent_activities), ), M("My Measures", f="assistance_measure", vars={"mine": "1"}, check=manage_assistance)(M("Calendar", m="organize", vars={"mine": "1"}), ), #M("Appointments"), statistics, M("Compilations", link=False)( M("Current Cases", f="person", vars={"closed": "0"}), M("All Cases", f="person"), M("All Activities", f="case_activity", check=use_activities), M("All Measures", f="assistance_measure", check=manage_assistance), ), ) else: # Default side menu (without "my"-sections) menu( M(labels.CURRENT, f="person", vars={"closed": "0"})( M(crud_strings.label_create, m="create"), M( "Activities", f="case_activity", check=use_activities, ), M( "Emergencies", f="case_activity", vars={"~.priority": "0"}, check=urgent_activities, ), ), M("Measures", f="assistance_measure", check=manage_assistance)( #M("Overview"), ), #M("Appointments"), statistics, M("Compilations", link=False)(M("All Cases", f="person"), ), ) # Archive- and Administration sub-menus (common for all roles) menu(M("Archive", link=False)( M(labels.CLOSED, f="person", vars={"closed": "1"}), M("Invalid Cases", f="person", vars={"invalid": "1"}, restrict=[ADMIN]), ), M("Administration", link=False, restrict=[ADMIN, ORG_GROUP_ADMIN])( M("Case Statuses", f="case_status"), M("Case Activity Statuses", f="case_activity_status", check = lambda i: use_activities and settings.get_br_case_activity_status(), ), M("Need Types", f="need", check = lambda i: not settings.get_br_needs_org_specific(), ), M("Assistance Statuses", f="assistance_status", check = manage_assistance, ), M("Assistance Types", f="assistance_type", check = lambda i: manage_assistance and \ settings.get_br_assistance_types(), ), M(labels.THEMES, f="assistance_theme", check = lambda i: manage_assistance and \ settings.get_br_assistance_themes() and \ not settings.get_br_assistance_themes_org_specific(), ), ), ) return menu
def fin(): """ FIN / Finance """ auth = current.auth s3db = current.s3db voucher_create = lambda i: s3db.get_config("fin_voucher", "insertable", True) voucher_accept = lambda i: s3db.get_config("fin_voucher_debit", "insertable", True) is_program_accountant = lambda i: auth.s3_has_role( "PROGRAM_ACCOUNTANT", include_admin=False, ) return M(c="fin")( M("Voucher Programs", f="voucher_program")(M("Create", m="create", restrict=("PROGRAM_MANAGER")), ), M("Vouchers", f="voucher")( M( "Create Voucher", m="create", restrict=("VOUCHER_ISSUER"), check=voucher_create, ), M( "Create Group Voucher", m="create", restrict=("VOUCHER_ISSUER"), vars={"g": "1"}, check=voucher_create, ), M("Statistics", m="report", restrict=("PROGRAM_MANAGER")), ), M("Accepted Vouchers", f="voucher_debit")( M( "Accept Voucher", m="create", restrict=("VOUCHER_PROVIDER"), check=voucher_accept, ), M( "Accept Group Voucher", m="create", restrict=("VOUCHER_PROVIDER"), vars={"g": "1"}, check=voucher_accept, ), M("Statistics", m="report"), ), M("Billing", link=False)( M("Compensation Claims", f="voucher_claim"), M("Invoices", f="voucher_invoice"), M( "My Work List", f="voucher_invoice", vars={"mine": "1"}, check=is_program_accountant, ), ), )
def admin(self): """ ADMIN menu """ ADMIN = current.session.s3.system_roles.ADMIN settings_messaging = self.settings_messaging() settings = current.deployment_settings consent_tracking = lambda i: settings.get_auth_consent_tracking() is_data_repository = lambda i: settings.get_sync_data_repository() translate = settings.has_module("translate") # NB: Do not specify a controller for the main menu to allow # re-use of this menu by other controllers return M(restrict=[ADMIN])( #M("Setup", c="setup", f="deployment")( # #M("Create", m="create"), # #M("Servers", f="server")( # #), # #M("Instances", f="instance")( # #), #), #M("Settings", c="admin", f="setting")( # settings_messaging, #), M("User Management", c="admin", f="user")( M("Create User", m="create"), M("List All Users"), M("Import Users", m="import"), M("List All Roles", f="role"), #M("List All Organization Approvers & Whitelists", f="organisation"), #M("Roles", f="group"), #M("Membership", f="membership"), ), M("Organizations", c="org", f="organisation")( M("Types", f="organisation_type"), M("Job Titles", c="hrm", f="job_title"), ), M("Consent Tracking", c="admin", link=False, check=consent_tracking)( M("Processing Types", f="processing_type"), M("Consent Options", f="consent_option"), ), #M("CMS", c="cms", f="post")( #), M("Database", c="appadmin", f="index")(M("Raw Database access", c="appadmin", f="index")), M("Error Tickets", c="admin", f="errors"), #M("Monitoring", c="setup", f="server")( # M("Checks", f="monitor_check"), # M("Servers", f="server"), # M("Tasks", f="monitor_task"), # M("Logs", f="monitor_run"), #), #M("Synchronization", c="sync", f="index")( # M("Settings", f="config", args=[1], m="update"), # M("Repositories", f="repository"), # M("Public Data Sets", f="dataset", check=is_data_repository), # M("Log", f="log"), #), #M("Edit Application", a="admin", c="default", f="design", #args=[request.application]), #M("Translation", c="admin", f="translate", check=translate)( # M("Select Modules for translation", c="admin", f="translate", # m="create", vars=dict(opt="1")), # M("Upload translated files", c="admin", f="translate", # m="create", vars=dict(opt="2")), # M("View Translation Percentage", c="admin", f="translate", # m="create", vars=dict(opt="3")), # M("Add strings manually", c="admin", f="translate", # m="create", vars=dict(opt="4")) #), #M("View Test Result Reports", c="admin", f="result"), #M("Portable App", c="admin", f="portable") )
def security(): """ Security """ ADMIN = current.auth.get_system_roles().ADMIN return M()(M("Checkpoints", c="security", f="checkpoint")( M("Create", m="create"), M("Map", m="map"), ), # View from inside Activity? M("Evacuation Routes", c="gis", f="route")( M("Create", m="create"), ), M("Incident Reports", c="event", f="incident_report")( M("Create", m="create"), M("Map", m="map"), ), M("Security Zones", c="security", f="zone")( M("Create", m="create"), M("Map", m="map"), ), M("Administration", link=False, restrict=ADMIN)( M("Incident Types", c="event", f="incident_type"), M("Zone Types", c="security", f="zone_type"), ), )
def br(): """ Beneficiary Registry """ auth = current.auth if not auth.s3_has_roles(("CASE_MANAGER", "CASE_SUPER", "ORG_ADMIN", )): # Can only see Activities return M(c="br")( M("My Activities", f="case_activity")(), M("Emergencies", f="case_activity", vars = {"~.priority": "0"}, ) ) from s3db.br import br_crud_strings, br_terminology crud_strings = br_crud_strings("pr_person") labels = br_terminology() system_roles = auth.get_system_roles() ADMIN = system_roles.ADMIN ORG_ADMIN = system_roles.ORG_ADMIN return M(c="br")( M(labels.CURRENT_MINE, f="person", vars = {"closed": "0", "mine": "1"}, )( M(crud_strings.label_create, m="create", restrict=ORG_ADMIN), M("Activities", f="case_activity", vars = {"my_cases": "1"}, ), M("Emergencies", f="person", vars = {"closed": "0", "mine": "1", "case.priority": "0"}, ), ), M("Compilations", link=False)( M("Urgent Cases", f="person", vars = {"closed": "0", "case.priority": "0", } ), M("Current Cases", f="person", vars = {"closed": "0"}, ), M("All Cases", f="person"), M("All Activities", f="case_activity",), ), M("Statistics", link=False)( M("Cases", f="person", m="report"), M("Activities", f="case_activity", m="report"), ), M("Archive", link=False)( M(labels.CLOSED, f="person", vars = {"closed": "1"}, ), M("Invalid Cases", f="person", vars = {"invalid": "1"}, restrict = ADMIN, ), ), M("Administration", link=False, restrict=ADMIN)( M("Case Statuses", f="case_status"), M("Case Activity Statuses", f="case_activity_status"), M("Needs", f="need"), M("Occupations", c="pr", f="occupation_type"), ), )
def org(): """ ORG / Organization Registry """ org_menu = M("Organizations", f="organisation") auth = current.auth ORG_GROUP_ADMIN = auth.get_system_roles().ORG_GROUP_ADMIN has_role = auth.s3_has_role if has_role(ORG_GROUP_ADMIN): gtable = current.s3db.org_group query = (gtable.deleted == False) realms = auth.user.realms[ORG_GROUP_ADMIN] \ if not has_role("ADMIN") else None if realms is not None: query = (gtable.pe_id.belongs(realms)) & query groups = current.db(query).select( gtable.id, gtable.name, orderby=gtable.name, ) for group in groups: org_menu( M( group.name, f="organisation", vars={"g": group.id}, translate=False, )) org_menu( M("My Organizations", vars={"mine": 1}, restrict="ORG_ADMIN"), M("Create Organization", m="create", restrict="ORG_GROUP_ADMIN"), ) return M(c="org")( org_menu, M("Facilities", f="facility", link=False)( M( "Unapproved Test Stations", vars={"$$pending": "1"}, restrict="ORG_GROUP_ADMIN", ), M("Public Registry", m="summary"), ), M("Statistics", link=False)( M("Organizations", f="organisation", m="report"), M("Facilities", f="facility", m="report"), ), M("Administration", restrict=("ADMIN"))( M("Facility Types", f="facility_type"), M("Organization Types", f="organisation_type"), M("Services", f="service"), ), )
def fin(): """ Logistics """ ADMIN = current.auth.get_system_roles().ADMIN return M()( M("Accommodation", c="cr", f="shelter")( M("Create", m="create"), M("Map", m="map"), ), M("Banks", c="fin", f="bank")( M("Create", m="create"), M("Map", m="map"), ), M("Brokers", c="fin", f="broker")( M("Create", m="create"), M("Map", m="map"), ), M("Stock", c="inv", f="inv_item")( M("Create", m="create"), M("Warehouses", f="warehouse"), ), M("Administration", link=False, restrict=ADMIN)( M("Accomodation Types", c="cr", f="shelter_type"), M("Bank Services", c="fin", f="bank_service"), M("Item Catalog", c="supply", f="item"), ), )