Some updates to Spotter template

This commit is contained in:
Disassembler 2022-03-08 11:04:42 +01:00
parent 8ec2608f0e
commit 978d06519a
No known key found for this signature in database
GPG Key ID: 524BD33A0EE29499
14 changed files with 252 additions and 423 deletions

View File

@ -41,7 +41,7 @@ EDITOR,Editor,,project,,,,ALL,CREATE|READ|UPDATE|REVIEW|APPROVE,
EDITOR,Editor,,doc,,,,ALL,CREATE|READ|UPDATE|REVIEW|APPROVE, EDITOR,Editor,,doc,,,,ALL,CREATE|READ|UPDATE|REVIEW|APPROVE,
EDITOR,Editor,,hrm,,,,ALL,CREATE|READ|UPDATE|REVIEW|APPROVE, EDITOR,Editor,,hrm,,,,ALL,CREATE|READ|UPDATE|REVIEW|APPROVE,
EDITOR,Editor,,appadmin,,,,ALL,CREATE|READ|UPDATE|REVIEW|APPROVE, EDITOR,Editor,,appadmin,,,,ALL,CREATE|READ|UPDATE|REVIEW|APPROVE,
EDITOR,Editor,,hms,,,,ALL,CREATE|READ|UPDATE|REVIEW|APPROVE, EDITOR,Editor,,med,,,,ALL,CREATE|READ|UPDATE|REVIEW|APPROVE,
EDITOR,Editor,,req,,,,ALL,CREATE|READ|UPDATE|REVIEW|APPROVE, EDITOR,Editor,,req,,,,ALL,CREATE|READ|UPDATE|REVIEW|APPROVE,
EDITOR,Editor,,mpr,,,,ALL,CREATE|READ|UPDATE|REVIEW|APPROVE, EDITOR,Editor,,mpr,,,,ALL,CREATE|READ|UPDATE|REVIEW|APPROVE,
EDITOR,Editor,,sync,,,,ALL,CREATE|READ|UPDATE|REVIEW|APPROVE, EDITOR,Editor,,sync,,,,ALL,CREATE|READ|UPDATE|REVIEW|APPROVE,
@ -56,7 +56,7 @@ ORG_ADMIN,Organization Admin,,org,,,,ALL,ALL,
ORG_GROUP_ADMIN,Organzation Group Admin,,,,,,,, ORG_GROUP_ADMIN,Organzation Group Admin,,,,,,,,
medical_admin,Medical Details Admin,"Complementary role: FULL access but only to medical data of registered evacuees. It must be assigned with other roles to grant access to the other types of data. medical_admin,Medical Details Admin,"Complementary role: FULL access but only to medical data of registered evacuees. It must be assigned with other roles to grant access to the other types of data.
When to assign: Medical Staff.",patient,,,,ALL,ALL, When to assign: Medical Staff.",patient,,,,ALL,ALL,
medical_admin,Medical Details Admin,,hms,,,,ALL,ALL, medical_admin,Medical Details Admin,,med,,,,ALL,ALL,
medical_admin,Medical Details Admin,,dvi,,,,ALL,ALL, medical_admin,Medical Details Admin,,dvi,,,,ALL,ALL,
notification_sender,Notification Sender,,msg,,,,ALL,ALL, notification_sender,Notification Sender,,msg,,,,ALL,ALL,
org_reader,Organization Reader,"Complementary role: Access in ""READ only"" mode to Organization data and its branches org_reader,Organization Reader,"Complementary role: Access in ""READ only"" mode to Organization data and its branches

1 uid role description controller function table entity uacl oacl Notes
41 EDITOR Editor doc ALL CREATE|READ|UPDATE|REVIEW|APPROVE
42 EDITOR Editor hrm ALL CREATE|READ|UPDATE|REVIEW|APPROVE
43 EDITOR Editor appadmin ALL CREATE|READ|UPDATE|REVIEW|APPROVE
44 EDITOR Editor hms med ALL CREATE|READ|UPDATE|REVIEW|APPROVE
45 EDITOR Editor req ALL CREATE|READ|UPDATE|REVIEW|APPROVE
46 EDITOR Editor mpr ALL CREATE|READ|UPDATE|REVIEW|APPROVE
47 EDITOR Editor sync ALL CREATE|READ|UPDATE|REVIEW|APPROVE
56 medical_admin Medical Details Admin Complementary role: FULL access but only to medical data of registered evacuees. It must be assigned with other roles to grant access to the other types of data. When to assign: Medical Staff. patient ALL ALL
57 medical_admin Medical Details Admin hms med ALL ALL
58 medical_admin Medical Details Admin dvi ALL ALL
59 notification_sender Notification Sender msg ALL ALL
60 org_reader Organization Reader Complementary role: Access in "READ only" mode to Organization data and its branches When to assign: Staff Directors org READ READ
61 private_user_editor Private User Editor FULL access to modules Evacuees and Shelter. When to assign: private user member of a shelter / Organization and committed to provide assistance to some evacuees cr ALL ALL
62 private_user_editor Private User Editor dvr ALL ALL

View File

@ -6,6 +6,11 @@ from gluon import current
from gluon.storage import Storage from gluon.storage import Storage
def config(settings): def config(settings):
"""
Template settings for the Default template
- default settings suitable for a small organisation managing it's own resources
"""
T = current.T T = current.T
# Pre-Populate # Pre-Populate
@ -26,34 +31,31 @@ def config(settings):
# Theme (folder to use for views/layout.html) # Theme (folder to use for views/layout.html)
#settings.base.theme = "default" #settings.base.theme = "default"
# Enable Guided Tours
# - defaults to module enabled or not
#settings.base.guided_tour = True
# Authentication settings # Authentication settings
# These settings should be changed _after_ the 1st (admin) user is # These settings should be changed _after_ the 1st (admin) user is
# registered in order to secure the deployment # registered in order to secure the deployment
# Should users be allowed to register themselves? # Should users be allowed to register themselves?
#settings.security.self_registration = False #settings.security.self_registration = False
# Do new users need to verify their email address? # Do new users need to verify their email address?
#settings.auth.registration_requires_verification = True settings.auth.registration_requires_verification = True
# Do new users need to be approved by an administrator prior to being able to login? # Do new users need to be approved by an administrator prior to being able to login?
#settings.auth.registration_requires_approval = True settings.auth.registration_requires_approval = True
# Disable welcome-emails to newly registered users # Disable welcome-emails to newly registered users
#settings.auth.registration_welcome_email = False #settings.auth.registration_welcome_email = False
# Approval emails get sent to all admins
settings.mail.approver = "ADMIN"
# Allow a new user to be linked to a record (and a new record will be created if it doesn't already exist) # Allow a new user to be linked to a record (and a new record will be created if it doesn't already exist)
settings.auth.registration_link_user_to = {"staff":T("Staff"), settings.auth.registration_link_user_to = {"staff": T("Staff"),
"volunteer":T("Volunteer"), "volunteer": T("Volunteer"),
"member":T("Member")} "member": T("Member"),
}
settings.auth.registration_link_user_to_default = ["staff"]
# Always notify the approver of a new (verified) user, even if the user is automatically approved # Always notify the approver of a new (verified) user, even if the user is automatically approved
#settings.auth.always_notify_approver = False #settings.auth.always_notify_approver = False
# The name of the teams that users are added to when they opt-in to receive alerts
#settings.auth.opt_in_team_list = ["Updates"]
# Uncomment this to set the opt in default to True
#settings.auth.opt_in_default = True
# Uncomment this to request the Home Phone when a user registers # Uncomment this to request the Home Phone when a user registers
settings.auth.registration_requests_home_phone = True settings.auth.registration_requests_home_phone = True
# Uncomment this to request the Mobile Phone when a user registers # Uncomment this to request the Mobile Phone when a user registers
@ -107,7 +109,6 @@ def config(settings):
# Terms of Service to be able to Register on the system # Terms of Service to be able to Register on the system
# https://termsfeed.com/terms-conditions/generator/ # https://termsfeed.com/terms-conditions/generator/
# uses <template>/views/tos.html # uses <template>/views/tos.html
settings.auth.terms_of_service = True
# Enable options for tracking user consent # Enable options for tracking user consent
settings.auth.consent_tracking = True settings.auth.consent_tracking = True
# Uncomment this to allow users to Login using Gmail's SMTP # Uncomment this to allow users to Login using Gmail's SMTP
@ -128,6 +129,8 @@ def config(settings):
#settings.auth.ignore_levels_for_presence = ("L0", "L1", "L2", "L3") #settings.auth.ignore_levels_for_presence = ("L0", "L1", "L2", "L3")
# Uncomment this to enable the creation of new locations if a user logs in from an unknown location. Warning: This may lead to many useless location entries # Uncomment this to enable the creation of new locations if a user logs in from an unknown location. Warning: This may lead to many useless location entries
#settings.auth.create_unknown_locations = True #settings.auth.create_unknown_locations = True
# Uncomment this to have the /default/person User Profile use the HRM controller
#settings.auth.profile_controller = "hrm"
# ------------------------------------------------------------------------- # -------------------------------------------------------------------------
# L10n settings # L10n settings
@ -294,7 +297,7 @@ def config(settings):
#settings.gis.poi_create_resources = None #settings.gis.poi_create_resources = None
settings.gis.poi_create_resources = [{"c":"event", "f":"incident_report", "table": "gis_poi", "label": T("Add Incident Report") ,"tooltip": T("Add Incident Report"), "layer":"Incident Reports", "location": "popup"}] settings.gis.poi_create_resources = [{"c":"event", "f":"incident_report", "table": "gis_poi", "label": T("Add Incident Report") ,"tooltip": T("Add Incident Report"), "layer":"Incident Reports", "location": "popup"}]
# PoIs to export in KML/OSM feeds from Admin locations # PoIs to export in KML/OSM feeds from Admin locations
#settings.gis.poi_export_resources = ["cr_shelter", "hms_hospital", "org_office"] settings.gis.poi_export_resources = ["cr_shelter", "med_hospital", "org_office"]
# Uncomment to show the Print control: # Uncomment to show the Print control:
# http://eden.sahanafoundation.org/wiki/UserGuidelines/Admin/MapPrinting # http://eden.sahanafoundation.org/wiki/UserGuidelines/Admin/MapPrinting
#settings.gis.print_button = True #settings.gis.print_button = True
@ -348,8 +351,6 @@ def config(settings):
# 5: Apply Controller, Function & Table ACLs # 5: Apply Controller, Function & Table ACLs
# 6: Apply Controller, Function, Table ACLs and Entity Realm # 6: Apply Controller, Function, Table ACLs and Entity Realm
# 7: Apply Controller, Function, Table ACLs and Entity Realm + Hierarchy # 7: Apply Controller, Function, Table ACLs and Entity Realm + Hierarchy
# 8: Apply Controller, Function, Table ACLs, Entity Realm + Hierarchy and Delegations
settings.security.policy = 7 # Organization ACLs settings.security.policy = 7 # Organization ACLs
# Ownership-rule for records without owner: # Ownership-rule for records without owner:
@ -443,6 +444,8 @@ def config(settings):
#settings.ui.organizer_time_format = "H:mm" #settings.ui.organizer_time_format = "H:mm"
# Configure the snap raster width in organizer (hh:mm:ss) # Configure the snap raster width in organizer (hh:mm:ss)
#settings.ui.organizer_snap_duration = "00:15:00" #settings.ui.organizer_snap_duration = "00:15:00"
# Thumbnail size for Images. Requires enabling fancyZoom JS & CSS
#settings.ui.thumbnail = (60,60)
# ------------------------------------------------------------------------- # -------------------------------------------------------------------------
# Sync # Sync
@ -563,6 +566,10 @@ def config(settings):
# Disable tracking of effort (=hours spent) for assistance measures # Disable tracking of effort (=hours spent) for assistance measures
#settings.br.assistance_track_effort = False #settings.br.assistance_track_effort = False
# --- Offers of Assistance ---
# Disable reference numbers in offers of assistance
#settings.br.assistance_offer_refno = False
# ------------------------------------------------------------------------- # -------------------------------------------------------------------------
# CMS # CMS
# Uncomment this to hide CMS from module index pages # Uncomment this to hide CMS from module index pages
@ -606,87 +613,6 @@ def config(settings):
# Configure active statuses for shelter inspection tasks (subset of project.task_status_opts) # Configure active statuses for shelter inspection tasks (subset of project.task_status_opts)
#settings.cr.shelter_inspection_task_active_statuses = (2, 3, 6) #settings.cr.shelter_inspection_task_active_statuses = (2, 3, 6)
# -------------------------------------------------------------------------
# Disaster Victim Registry / Case Management
# Uncomment to use the term Beneficiary instead of Case
#settings.dvr.label = "Beneficiary"
# Uncomment this to enable tracking of transfer origin/destination sites
#settings.dvr.track_transfer_sites = True
# Uncomment this to enable features to manage transferability of cases
#settings.dvr.manage_transferability = True
# Uncomment this to enable household size in cases, set to "auto" for automatic counting
#settings.dvr.household_size = True
# Uncomment this to expose flags to mark appointment types as mandatory
#settings.dvr.mandatory_appointments = True
# Uncomment this to have appointments with personal presence update last_seen_on
#settings.dvr.appointments_update_last_seen_on = True
# Uncomment this to automatically update the case status when appointments are completed
#settings.dvr.appointments_update_case_status = True
# Uncomment this to automatically close appointments when registering certain case events
#settings.dvr.case_events_close_appointments = True
# Uncomment this to have allowance payments update last_seen_on
#settings.dvr.payments_update_last_seen_on = True
# Uncomment this to use service types for group/case activites
#settings.dvr.activity_use_service_type = True
# Uncomment this to use sectors in group/case activities
#settings.dvr.activity_sectors = True
# Uncomment this to use case activity types
#settings.dvr.activity_types = True
# Uncomment this to use hierarchical case activity types
#settings.dvr.activity_types_hierarchical = True
# Uncomment this to use status field in case activities
#settings.dvr.case_activity_use_status = True
# Uncomment this to disable follow-up fields in case activities
#settings.dvr.case_activity_follow_up = False
# Uncomment this to include case activity docs on beneficiary documents-tab
#settings.dvr.case_include_activity_docs = True
# Uncomment this to include case group docs on beneficiary documents-tab
#settings.dvr.case_include_group_docs = True
# Uncomment this if Case activities use multiple Needs
#settings.dvr.case_activity_needs_multiple = True
# Uncomment this to use service types for needs
#settings.dvr_needs_use_service_type = True
# Uncomment this to use hierarchical need types
#settings.dvr.needs_hierarchical = True
# Uncomment this to use hierarchical vulnerability types
#settings.dvr.vulnerability_types_hierarchical = True
# Uncomment this to manage individual response actions in case activities
#settings.dvr.manage_response_actions = True
# Uncomment this to not use response action types
#settings.dvr.response_types = False
# Uncomment this to use response themes
#settings.dvr.response_themes = True
# Uncomment this to not use org-specific response themes
#settings.dvr.response_themes_org_specific = False
# Uncomment this to link response themes to org sectors
#settings.dvr.response_themes_sectors = True
# Uncomment this to link response themes to needs
#settings.dvr.response_themes_needs = True
# Uncomment this to automatically link responses to case activities
#settings.dvr.response_activity_autolink = True
# Uncomment this to activate features for response planning
#settings.dvr.response_planning = True
# Uncomment this to use a separate due-date for responses
#settings.dvr.response_due_date = True
# Uncomment this to use date+time for responses (instead of just date)
#settings.dvr.response_use_time = True
# Configure a regular expression pattern for ID Codes (QR Codes)
#settings.dvr.id_code_pattern = "(?P<label>[^,]*),(?P<first_name>[^,]*),(?P<last_name>[^,]*),(?P<date_of_birth>[^,]*)"
# Uncomment this to show a warning during event registration if the person is not currently checked-in
#settings.dvr.event_registration_checkin_warning = True
# Uncomment this to show profile pictures in event registration UI only on demand
#settings.dvr.event_registration_show_picture = False
# ------------------------------------------------------------------------- # -------------------------------------------------------------------------
# Events # Events
# Uncomment to use the term Disaster instead of Event # Uncomment to use the term Disaster instead of Event
@ -928,9 +854,7 @@ def config(settings):
#settings.inv.warehouse_code_unique = True #settings.inv.warehouse_code_unique = True
# Uncomment to not track pack values # Uncomment to not track pack values
#settings.inv.track_pack_values = False #settings.inv.track_pack_values = False
settings.inv.show_mode_of_transport = True
settings.inv.send_show_org = False settings.inv.send_show_org = False
settings.inv.send_show_time_in = True
settings.inv.send_form_name = "Tally Out Sheet" settings.inv.send_form_name = "Tally Out Sheet"
settings.inv.send_short_name = "TO" settings.inv.send_short_name = "TO"
settings.inv.send_ref_field_name = "Tally Out Number" settings.inv.send_ref_field_name = "Tally Out Number"
@ -962,89 +886,47 @@ def config(settings):
# } # }
# ------------------------------------------------------------------------- # -------------------------------------------------------------------------
# Requests Management # Inventory Requisitions
# Uncomment to disable Inline Forms in Requests module # Uncomment to disable Inline Forms for Inventory Requisitions
#settings.req.inline_forms = False #settings.inv.req_inline_forms = False
# Label for Inventory Requests
#settings.req.type_inv_label = "Donations"
# Label for People Requests
#settings.req.type_hrm_label = "Volunteers"
# Label for Requester # Label for Requester
#settings.req.requester_label = "Site Contact" #settings.inv.requester_label = "Site Contact"
# Uncomment to disable Recurring Request # Uncomment to disable Recurring Inventory Requisitions
#settings.req.recurring = False #settings.inv.req_recurring = False
#settings.req.requester_optional = True #settings.inv.requester_optional = True
# Uncomment if the User Account logging the Request is NOT normally the Requester # Uncomment if the User Account logging the Inventory Requisitions is NOT normally the Requester
#settings.req.requester_is_author = False #settings.inv.requester_is_author = False
# Filter Requester as being from the Site # Filter Requester as being from the Site
#settings.req.requester_from_site = True #settings.inv.requester_from_site = True
# Set the Requester as being an HR for the Site if no HR record yet & as Site contact if none yet exists # Set the Requester as being an HR for the Site if no HR record yet & as Site contact if none yet exists
#settings.req.requester_to_site = True #settings.inv.requester_to_site = True
#settings.req.date_writable = False #settings.inv.req_date_writable = False
# Allow the status for requests to be set manually, # Allow the status for Inventory Requisitions to be set manually,
# rather than just automatically from commitments and shipments # rather than just automatically from commitments and shipments
#settings.req.status_writable = False #settings.inv.req_status_writable = False
#settings.req.item_quantities_writable = True #settings.inv.req_item_quantities_writable = True
#settings.req.skill_quantities_writable = True #settings.inv.req_show_quantity_transit = False
#settings.req.show_quantity_transit = False #settings.inv.req_multiple_items = False
#settings.req.multiple_req_items = False #settings.inv.req_prompt_match = False
#settings.req.prompt_match = False #settings.inv.req_ask_purpose = False
#settings.req.items_ask_purpose = False
# Uncomment to disable the Commit step in the workflow & simply move direct to Ship # Uncomment to disable the Commit step in the workflow & simply move direct to Ship
#settings.req.use_commit = False #settings.inv.req_use_commit = False
# Uncomment to have Donations include a 'Value' field # Uncomment to have Donations include a 'Value' field
settings.req.commit_value = True settings.inv.commit_value = True
# Uncomment to allow Donations to be made without a matching Request # Uncomment to allow Donations to be made without a matching Request
#settings.req.commit_without_request = True #settings.inv.commit_without_request = True
# Uncomment to Commit Named People rather than simply Anonymous Skills
#settings.req.commit_people = True
# Uncomment if the User Account logging the Commitment is NOT normally the Committer # Uncomment if the User Account logging the Commitment is NOT normally the Committer
#settings.req.comittter_is_author = False #settings.inv.comittter_is_author = False
# Should Requests ask whether Security is required? # Should Inventory Requisitions ask whether Security is required?
#settings.req.ask_security = True settings.inv.req_ask_security = True
# Should Requests ask whether Transportation is required? # Should Inventory Requisitions ask whether Transportation is required?
settings.req.ask_transport = True settings.inv.req_ask_transport = True
#settings.req.use_req_number = False #settings.inv.use_req_number = False
#settings.req.generate_req_number = False #settings.inv.generate_req_number = False
#settings.req.req_form_name = "Request Issue Form" #settings.inv.req_form_name = "Request Issue Form"
#settings.req.req_shortname = "RIS" #settings.inv.req_shortname = "RIS"
# Restrict the type of requests that can be made, valid values in the
# list are ("Stock", "People", "Other"). If this is commented out then
# all types will be valid.
#settings.req.req_type = ("Stock",)
# Uncomment to enable Summary 'Site Needs' tab for Offices/Facilities
settings.req.summary = True
# Uncomment to restrict adding new commits to Completed commits # Uncomment to restrict adding new commits to Completed commits
#settings.req.req_restrict_on_complete = True #settings.inv.req_restrict_on_complete = True
# Custom Crud Strings for specific req_req types
#settings.req.req_crud_strings = dict()
#ADD_ITEM_REQUEST = T("Make a Request for Donations")
# req_req Crud Strings for Item Request (type=1)
#settings.req.req_crud_strings[1] = Storage(
# label_create = ADD_ITEM_REQUEST,
# title_display = T("Request for Donations Details"),
# title_list = T("Requests for Donations"),
# title_update = T("Edit Request for Donations"),
# label_list_button = T("List Requests for Donations"),
# label_delete_button = T("Delete Request for Donations"),
# msg_record_created = T("Request for Donations Added"),
# msg_record_modified = T("Request for Donations Updated"),
# msg_record_deleted = T("Request for Donations Canceled"),
# msg_list_empty = T("No Requests for Donations"))
#ADD_PEOPLE_REQUEST = T("Make a Request for Volunteers")
# req_req Crud Strings for People Request (type=3)
#settings.req.req_crud_strings[3] = Storage(
# label_create = ADD_PEOPLE_REQUEST,
# title_display = T("Request for Volunteers Details"),
# title_list = T("Requests for Volunteers"),
# title_update = T("Edit Request for Volunteers"),
# label_list_button = T("List Requests for Volunteers"),
# label_delete_button = T("Delete Request for Volunteers"),
# msg_record_created = T("Request for Volunteers Added"),
# msg_record_modified = T("Request for Volunteers Updated"),
# msg_record_deleted = T("Request for Volunteers Canceled"),
# msg_list_empty = T("No Requests for Volunteers"))
# ------------------------------------------------------------------------- # -------------------------------------------------------------------------
# Supply # Supply
@ -1126,11 +1008,6 @@ def config(settings):
# NB Be very cautious about doing this (see docstring in modules/s3cfg.py) # NB Be very cautious about doing this (see docstring in modules/s3cfg.py)
#settings.project.task_status_opts = #settings.project.task_status_opts =
# -------------------------------------------------------------------------
# Incidents
# Uncomment this to use vehicles when responding to Incident Reports
#settings.irs.vehicle = True
# ------------------------------------------------------------------------- # -------------------------------------------------------------------------
# Transport # Transport
# Uncomment to make Airport codes unique # Uncomment to make Airport codes unique
@ -1161,7 +1038,7 @@ def config(settings):
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# XForms # XForms
# Configure xform resources (example) # Configure xform resources (example)
#settings.xforms.resources = [("Request", "req_req")] settings.xforms.resources = [("Request", "inv_req")]
# ------------------------------------------------------------------------- # -------------------------------------------------------------------------
# Comment/uncomment modules here to disable/enable them # Comment/uncomment modules here to disable/enable them
@ -1207,10 +1084,6 @@ def config(settings):
access = "|1|", # Only Administrators can see this module in the default menu & access the controller access = "|1|", # Only Administrators can see this module in the default menu & access the controller
module_type = None # This item is handled separately for the menu module_type = None # This item is handled separately for the menu
)), )),
("tour", Storage(
name_nice = T("Guided Tour Functionality"),
module_type = None,
)),
("translate", Storage( ("translate", Storage(
name_nice = T("Translation"), name_nice = T("Translation"),
#description = "Selective translation of strings based on module.", #description = "Selective translation of strings based on module.",
@ -1339,7 +1212,7 @@ def config(settings):
restricted = True, restricted = True,
module_type = 5 module_type = 5
)), )),
("hms", Storage( ("med", Storage(
name_nice = T("Hospitals"), name_nice = T("Hospitals"),
#description = "Helps to monitor status of hospitals", #description = "Helps to monitor status of hospitals",
restricted = True, restricted = True,
@ -1397,48 +1270,18 @@ def config(settings):
restricted = True, restricted = True,
module_type = 10 module_type = 10
)), )),
("po", Storage(
name_nice = T("Population Outreach"),
#description = "Population Outreach",
restricted = True,
module_type = 10
)),
("security", Storage( ("security", Storage(
name_nice = T("Security"), name_nice = T("Security"),
#description = "Security Management System", #description = "Security Management System",
restricted = True, restricted = True,
module_type = 10, module_type = 10,
)), )),
# Vulnerability temporarily disabled - https://github.com/sahana/eden/issues/1562 ("vulnerability", Storage(
#("vulnerability", Storage( name_nice = T("Vulnerability"),
# name_nice = T("Vulnerability"), #description = "Manages vulnerability indicators",
# #description = "Manages vulnerability indicators", restricted = True,
# module_type = 10, module_type = 10,
# )),
("work", Storage(
name_nice = T("Jobs"),
#description = "Simple Volunteer Jobs Management",
restricted = False,
module_type = None,
)), )),
# Deprecated: Replaced by BR
#("dvr", Storage(
# name_nice = T("Beneficiary Registry"),
# #description = "Disaster Victim Registry",
# module_type = 10
#)),
# Deprecated: Replaced by event
#("irs", Storage(
# name_nice = T("Incidents"),
# #description = "Incident Reporting System",
# module_type = 10
#)),
# Deprecated: Replaced by DC
#("survey", Storage(
# name_nice = T("Surveys"),
# #description = "Create, enter, and manage surveys.",
# module_type = 5,
#)),
# These are specialist modules # These are specialist modules
("cap", Storage( ("cap", Storage(
name_nice = T("CAP"), name_nice = T("CAP"),
@ -1459,36 +1302,6 @@ def config(settings):
restricted = True, restricted = True,
module_type = 10, module_type = 10,
)), )),
# Requires RPy2 & PostgreSQL
#("climate", Storage(
# name_nice = T("Climate"),
# #description = "Climate data portal",
# module_type = 10,
#)),
("delphi", Storage(
name_nice = T("Delphi Decision Maker"),
#description = "Supports the decision making of large groups of Crisis Management Experts by helping the groups create ranked list.",
restricted = True,
module_type = 10,
)),
# @ToDo: Port these Assessments to the Survey module
#("building", Storage(
# name_nice = T("Building Assessments"),
# #description = "Building Safety Assessments",
# module_type = 10,
#)),
# Deprecated by Surveys module
# - depends on CR, IRS & Impact
#("assess", Storage(
# name_nice = T("Assessments"),
# #description = "Rapid Assessments & Flexible Impact Assessments",
# module_type = 10,
#)),
#("impact", Storage(
# name_nice = T("Impacts"),
# #description = "Used by Assess",
# module_type = None,
#)),
#("ocr", Storage( #("ocr", Storage(
# name_nice = T("Optical Character Recognition"), # name_nice = T("Optical Character Recognition"),
# #description = "Optical Character Recognition for reading the scanned handwritten paper forms.", # #description = "Optical Character Recognition for reading the scanned handwritten paper forms.",

View File

@ -1,4 +1,7 @@
Name,Type,Enabled,Default Name,Type,Enabled,Default
Bing Aerial,aerial,False, Bing Aerial,Aerial,False,
Bing Hybrid,hybrid,False, Bing Aerial with Labels,AerialWithLabelsOnDemand,False,
Bing Road,road,False, Bing Roads,RoadOnDemand,False,
Bing Roads (Dark),CanvasDark,False,
Bing Roads (Light),CanvasLight,False,
Bing Roads (Gray),CanvasGray,False,

1 Name Type Enabled Default
2 Bing Aerial aerial Aerial False
3 Bing Hybrid Bing Aerial with Labels hybrid AerialWithLabelsOnDemand False
4 Bing Road Bing Roads road RoadOnDemand False
5 Bing Roads (Dark) CanvasDark False
6 Bing Roads (Light) CanvasLight False
7 Bing Roads (Gray) CanvasGray False

View File

@ -1,17 +1,20 @@
Name,Description,Controller,Function,Marker,GPS Marker,Popup Format,Attributes,Filter,Site,Points,Trackable,Style,Opacity,Folder,Visible,Enabled,Cluster Threshold,Refresh Name,Description,Controller,Function,Marker,GPS Marker,Popup Format,Attributes,Filter,Site,Points,Trackable,Style,Opacity,Folder,Visible,Enabled,Cluster Threshold,Refresh
Airports,All Active Airports,transport,airport,airport,Airport,{name} (T('Airport')),name,~.obsolete=False,,True,,,,,False,,, Airports,All Active Airports,transport,airport,airport,Airport,{name} (T('Airport')),name,~.obsolete=False,,True,,,,,False,,,
Assets,,asset,asset,asset,Flag,{number} (T('Asset'))<br />{person_id},"number,person_id",,,True,True,,,,False,,, Assets,,asset,asset,asset,Flag,{number} (T('Asset'))<br />{assigned_to_id},"number,assigned_to_id",,,True,True,,,,False,,,
Banks,All Active Banks,fin,bank,bank,Bank,{name} (T('Bank')),name,~.obsolete=False,,True,,,,,False,,,
Checkpoints,All Active Checkpoints,security,checkpoint,checkpoint,Toll Booth,{name} (T('Checkpoint')),name,~.active=True,,True,,,,,False,,,
Demographics,For summary page,stats,demographic_data,,,{location_id}: {value},"location_id,value",,,,,"[{'prop':'value','fillOpacity':0.5}]",0.5,,False,False,0,0 Demographics,For summary page,stats,demographic_data,,,{location_id}: {value},"location_id,value",,,,,"[{'prop':'value','fillOpacity':0.5}]",0.5,,False,False,0,0
Heliports,All Active Heliports,transport,heliport,helicopter,Heliport,{name} (T('Heliport')),name,~.obsolete=False,,True,,,,,False,,, Heliports,All Active Heliports,transport,heliport,helicopter,Heliport,{name} (T('Heliport')),name,~.obsolete=False,,True,,,,,False,,,
Hospitals,All Active Medical Facilities,hms,hospital,hospital,Medical Facility,{name} (T('Hospital')),name,~.obsolete=False,,True,,,,,False,,, Hospitals,All Active Medical Facilities,med,hospital,hospital,Medical Facility,{name} (T('Hospital')),name,~.obsolete=False,,True,,,,,False,,,
Incident Reports,,event,incident_report,incident,Danger Area,{name} (T('Incident'))<br />{incident_type_id},"name,incident_type_id",,,True,,,,,False,,, Incident Reports,,event,incident_report,incident,Danger Area,{name} (T('Incident'))<br />{incident_type_id},"name,incident_type_id",,,True,,,,,False,,,
Locations,Used by Location Details,gis,location,,,{name},"name,gis_feature_type",~.level__ne=None&~.end_date=None,,,,"[{'prop':'gis_feature_type','cat':1,'externalGraphic':'img/markers/marker_red.png'},{'prop':'gis_feature_type','cat':3,'fill':'00BFFF','fillOpacity':0.5},{'prop':'gis_feature_type','cat':6,'fill':'00BFFF','fillOpacity':0.5}]",0.9,,False,,0,0 Locations,Used by Location Details,gis,location,,,{name},"name,gis_feature_type",~.level__ne=None&~.end_date=None,,,,"[{'prop':'gis_feature_type','cat':1,'externalGraphic':'img/markers/marker_red.png'},{'prop':'gis_feature_type','cat':3,'fill':'00BFFF','fillOpacity':0.5},{'prop':'gis_feature_type','cat':6,'fill':'00BFFF','fillOpacity':0.5}]",0.9,,False,,0,0
Offices,All Active Offices,org,office,office,Building,{name} (T('Office'))<br />{organisation_id},"name,organisation_id",~.obsolete=False,,True,,,,,False,,, Offices,All Active Offices,org,office,office,Building,{name} (T('Office'))<br />{organisation_id},"name,organisation_id",~.obsolete=False,,True,,,,,False,,,
PoIs,Points of Interest,gis,poi,,,{name} ({poi_type_id}),"name,poi_type_id",,,True,,,,,,False,, PoIs,Points of Interest,gis,poi,,,{name} ({poi_type_id}),"name,poi_type_id",,,True,,,,,,False,,
Needs,All Open Needs,req,need,request,"Navaid, Red",{name} (T('Needs')),"name",~.status__ne=2,,,,,,,False,,,
Projects,,project,location,project,,{name} (T('Project'))<br />{location_id}<br />{multi_activity_type_id},"name,location_id,multi_activity_type_id",,,,,,,,False,,, Projects,,project,location,project,,{name} (T('Project'))<br />{location_id}<br />{multi_activity_type_id},"name,location_id,multi_activity_type_id",,,,,,,,False,,,
Requests,All Open Requests,req,req,request,"Navaid, Red",{req_ref} (T('Request'))<br />{site_id},"req_ref,site_id",~.fulfil_status__ne=2,True,,,,,,False,,, Requisitions,All Open Requisitions,inv,req,request,"Navaid, Red",{req_ref} (T('Requisition'))<br />{site_id},"req_ref,site_id",~.fulfil_status__ne=2,True,,,,,,False,,,
Seaports,All Active Seaports,transport,seaport,port,Marina,{name} (T('Seaport')),name,~.obsolete=False,,True,,,,,False,,, Seaports,All Active Seaports,transport,seaport,port,Marina,{name} (T('Seaport')),name,~.obsolete=False,,True,,,,,False,,,
Shelters,All Active Shelters,cr,shelter,shelter,Campground,{name} (T('Shelter'))<br />T('Population') {population}<br />T('Capacity') {capacity_day},"name,population,capacity_day",~.status__ne=1,,True,,,,,False,,, Shelters,All Active Shelters,cr,shelter,shelter,Campground,{name} (T('Shelter'))<br />T('Population') {population_day}<br />T('Capacity') {capacity_day},"name,shelter_details.population_day,shelter_details.capacity_day",shelter_details.status__ne=1,,True,,,,,False,,,
Staff,All Active Staff,hrm,staff,staff,"Contact, Dreadlocks",{person_id} (T('Staff'))<br />{job_title_id}<br />{organisation_id},"person_id,job_title_id,organisation_id",~.status=1,,True,True,,,,False,,, Staff,All Active Staff,hrm,staff,staff,"Contact, Dreadlocks",{person_id} (T('Staff'))<br />{job_title_id}<br />{organisation_id},"person_id,job_title_id,organisation_id",~.status=1,,True,True,,,,False,,,
Stock Items,Used for Search Results,inv,inv_item,,,{item_id} (T('Stock Item'))<br />{site_id}<br />{quantity} {item_pack_id}<br />T('Expires') {expiry_date},"item_id,site_id,quantity,item_pack_id,expiry_date",,,,,,,,False,False,, Stock Items,Used for Search Results,inv,inv_item,,,{item_id} (T('Stock Item'))<br />{site_id}<br />{quantity} {item_pack_id}<br />T('Expires') {expiry_date},"item_id,site_id,quantity,item_pack_id,expiry_date",,,,,,,,False,False,,
Training Events,Used for Search Results,hrm,training_event,,,{course_id} (T('Training Event'))<br />{site_id}<br />{start_date},"course_id,site_id,start_date",,,True,,,,,False,False,, Training Events,Used for Search Results,hrm,training_event,,,{course_id} (T('Training Event'))<br />{site_id}<br />{start_date},"course_id,site_id,start_date",,,True,,,,,False,False,,

1 Name Description Controller Function Marker GPS Marker Popup Format Attributes Filter Site Points Trackable Style Opacity Folder Visible Enabled Cluster Threshold Refresh
2 Airports All Active Airports transport airport airport Airport {name} (T('Airport')) name ~.obsolete=False True False
3 Assets asset asset asset Flag {number} (T('Asset'))<br />{person_id} {number} (T('Asset'))<br />{assigned_to_id} number,person_id number,assigned_to_id True True False
4 Banks All Active Banks fin bank bank Bank {name} (T('Bank')) name ~.obsolete=False True False
5 Checkpoints All Active Checkpoints security checkpoint checkpoint Toll Booth {name} (T('Checkpoint')) name ~.active=True True False
6 Demographics For summary page stats demographic_data {location_id}: {value} location_id,value [{'prop':'value','fillOpacity':0.5}] 0.5 False False 0 0
7 Heliports All Active Heliports transport heliport helicopter Heliport {name} (T('Heliport')) name ~.obsolete=False True False
8 Hospitals All Active Medical Facilities hms med hospital hospital Medical Facility {name} (T('Hospital')) name ~.obsolete=False True False
9 Incident Reports event incident_report incident Danger Area {name} (T('Incident'))<br />{incident_type_id} name,incident_type_id True False
10 Locations Used by Location Details gis location {name} name,gis_feature_type ~.level__ne=None&~.end_date=None [{'prop':'gis_feature_type','cat':1,'externalGraphic':'img/markers/marker_red.png'},{'prop':'gis_feature_type','cat':3,'fill':'00BFFF','fillOpacity':0.5},{'prop':'gis_feature_type','cat':6,'fill':'00BFFF','fillOpacity':0.5}] 0.9 False 0 0
11 Offices All Active Offices org office office Building {name} (T('Office'))<br />{organisation_id} name,organisation_id ~.obsolete=False True False
12 PoIs Points of Interest gis poi {name} ({poi_type_id}) name,poi_type_id True False
13 Needs All Open Needs req need request Navaid, Red {name} (T('Needs')) name ~.status__ne=2 False
14 Projects project location project {name} (T('Project'))<br />{location_id}<br />{multi_activity_type_id} name,location_id,multi_activity_type_id False
15 Requests Requisitions All Open Requests All Open Requisitions req inv req request Navaid, Red {req_ref} (T('Request'))<br />{site_id} {req_ref} (T('Requisition'))<br />{site_id} req_ref,site_id ~.fulfil_status__ne=2 True False
16 Seaports All Active Seaports transport seaport port Marina {name} (T('Seaport')) name ~.obsolete=False True False
17 Shelters All Active Shelters cr shelter shelter Campground {name} (T('Shelter'))<br />T('Population') {population}<br />T('Capacity') {capacity_day} {name} (T('Shelter'))<br />T('Population') {population_day}<br />T('Capacity') {capacity_day} name,population,capacity_day name,shelter_details.population_day,shelter_details.capacity_day ~.status__ne=1 shelter_details.status__ne=1 True False
18 Staff All Active Staff hrm staff staff Contact, Dreadlocks {person_id} (T('Staff'))<br />{job_title_id}<br />{organisation_id} person_id,job_title_id,organisation_id ~.status=1 True True False
19 Stock Items Used for Search Results inv inv_item {item_id} (T('Stock Item'))<br />{site_id}<br />{quantity} {item_pack_id}<br />T('Expires') {expiry_date} item_id,site_id,quantity,item_pack_id,expiry_date False False
20 Training Events Used for Search Results hrm training_event {course_id} (T('Training Event'))<br />{site_id}<br />{start_date} course_id,site_id,start_date True False False

View File

@ -1,8 +1,6 @@
Name,Description,Type,Enabled,Default Name,Description,Type,Enabled,Default
"Google Maps","Streets",maps,"False", Google Maps,Streets,roadmap,False,
"Google Hybrid","Streets over Satellite imagery",hybrid,"False", Google Hybrid,Streets over Satellite imagery,hybrid,False,
"Google Satellite","Satellite imagery",satellite,"False", Google Satellite,Satellite imagery,satellite,False,
"Google Terrain","Streets over topography",terrain,"False", Google Terrain,Streets over Topography,terrain,False,
"Google MapMaker","Community additions to streets. This is much more detailed than normal Google in some locations. It is incompatioble with Streetview.",mapmaker,"False", Google Streetview,Streetview allows access to a 3D photographic panorama.,streetview,True,
"Google MapMapker Hybrid","Community additions to streets overlaid over Satellite imagery. This is much more detailed than normal Google in some locations. It is incompatioble with Streetview.",mapmakerhybrid,"False",
"Google Streetview","Streetview allows access to a 3D photographic panorama. It is incompatible with MapMaker layers.",streetview,"True",

1 Name Description Type Enabled Default
2 Google Maps Streets maps roadmap False
3 Google Hybrid Streets over Satellite imagery hybrid False
4 Google Satellite Satellite imagery satellite False
5 Google Terrain Streets over topography Streets over Topography terrain False
6 Google MapMaker Google Streetview Community additions to streets. This is much more detailed than normal Google in some locations. It is incompatioble with Streetview. Streetview allows access to a 3D photographic panorama. mapmaker streetview False True
Google MapMapker Hybrid Community additions to streets overlaid over Satellite imagery. This is much more detailed than normal Google in some locations. It is incompatioble with Streetview. mapmakerhybrid False
Google Streetview Streetview allows access to a 3D photographic panorama. It is incompatible with MapMaker layers. streetview True

View File

@ -1,3 +1,6 @@
Name,Description,Type,Config,Folder,Enabled,Visible Name,Description,Type,Config,Folder,Enabled,Visible
"Current Weather",,city,,Weather,"True","False" "Clouds",,clouds_new,,Weather,"True","False"
"Weather Stations",,station,,Weather,"True","False" "Precipitation",,precipitation_new,,Weather,"True","False"
"Sea level pressure",,pressure_new,,Weather,"True","False"
"Temperature",,temp_new,,Weather,"True","False"
"Wind speed",,wind_new,,Weather,"True","False"

1 Name Description Type Config Folder Enabled Visible
2 Current Weather Clouds city clouds_new Weather True False
3 Weather Stations Precipitation station precipitation_new Weather True False
4 Sea level pressure pressure_new Weather True False
5 Temperature temp_new Weather True False
6 Wind speed wind_new Weather True False

View File

@ -10,6 +10,6 @@ Fires (Last 24 Hours),Provides MODIS (MODIS Rapid Response Collection) Fires/Hot
Fires (Last 48 Hours),Provides MODIS (MODIS Rapid Response Collection) Fires/Hotspots for the past 48 hours. Please visit http://maps.geog.umd.edu/firms/ for more information,http://firefly.geog.umd.edu/wms/wms?,fires48,Hazards,WGS84,True,False,False,True,,image/png,False,,, Fires (Last 48 Hours),Provides MODIS (MODIS Rapid Response Collection) Fires/Hotspots for the past 48 hours. Please visit http://maps.geog.umd.edu/firms/ for more information,http://firefly.geog.umd.edu/wms/wms?,fires48,Hazards,WGS84,True,False,False,True,,image/png,False,,,
Population Density 2010 (Alternate server),GPWv3,http://sedac.ciesin.columbia.edu/geoserver/wms?,gpw-v3:gpw-v3-population-density-future-estimates_2010,Population,WGS84,True,False,False,True,0.8,image/png,False,,, Population Density 2010 (Alternate server),GPWv3,http://sedac.ciesin.columbia.edu/geoserver/wms?,gpw-v3:gpw-v3-population-density-future-estimates_2010,Population,WGS84,True,False,False,True,0.8,image/png,False,,,
Population Density 2000 (Persons per km2),GRUMPv1,http://beta.sedac.ciesin.columbia.edu:8080/geoserver/wms?,grump-v1:grump-v1-population-density_2000 ,Population,WGS84,True,False,False,True,0.8,image/png,False,,, Population Density 2000 (Persons per km2),GRUMPv1,http://beta.sedac.ciesin.columbia.edu:8080/geoserver/wms?,grump-v1:grump-v1-population-density_2000 ,Population,WGS84,True,False,False,True,0.8,image/png,False,,,
Precipitation forecast,,http://geo.weatheroffice.gc.ca/geomet/?,GDPS.ETA_PR,Weather,,True,False,False,True,0.4,image/png,False,http://geo.weatheroffice.gc.ca/geomet/?LANG=E%26SERVICE=WMS%26VERSION=1.1.1%26REQUEST=GetLegendGraphic%26STYLE=PRECIPMM%26LAYER=GDPS.ETA_PR%26format=image/png,PRECIPMM, Precipitation forecast,,http://geo.weatheroffice.gc.ca/geomet/?,GDPS.ETA_PR,Weather,,False,False,False,True,0.4,image/png,False,http://geo.weatheroffice.gc.ca/geomet/?LANG=E%26SERVICE=WMS%26VERSION=1.1.1%26REQUEST=GetLegendGraphic%26STYLE=PRECIPMM%26LAYER=GDPS.ETA_PR%26format=image/png,PRECIPMM,
Cloud forecast,,http://geo.weatheroffice.gc.ca/geomet/?,GDPS.ETA_NT,Weather,,True,False,False,True,0.4,image/png,False,http://geo.weatheroffice.gc.ca/geomet/?LANG=E%26SERVICE=WMS%26VERSION=1.1.1%26REQUEST=GetLegendGraphic%26STYLE=CLOUD%26LAYER=GDPS.ETA_NT%26format=image/png,CLOUD, Cloud forecast,,http://geo.weatheroffice.gc.ca/geomet/?,GDPS.ETA_NT,Weather,,False,False,False,True,0.4,image/png,False,http://geo.weatheroffice.gc.ca/geomet/?LANG=E%26SERVICE=WMS%26VERSION=1.1.1%26REQUEST=GetLegendGraphic%26STYLE=CLOUD%26LAYER=GDPS.ETA_NT%26format=image/png,CLOUD,
Sea Level: Rise of 2m,Data from https://www.cresis.ku.edu/data/sea-level-rise-maps,http://lacrmt.sahanafoundation.org:8080/geoserver/wms?,lacrmt:inund2,Hazards,,False,False,False,True,0.4,image/png,False,,, Sea Level: Rise of 2m,Data from https://www.cresis.ku.edu/data/sea-level-rise-maps,http://lacrmt.sahanafoundation.org:8080/geoserver/wms?,lacrmt:inund2,Hazards,,False,False,False,True,0.4,image/png,False,,,

1 Name Description URL Layers Folder Config Enabled Visible Base Transparent Opacity Format Queryable LegendURL Style Map
10 Fires (Last 48 Hours) Provides MODIS (MODIS Rapid Response Collection) Fires/Hotspots for the past 48 hours. Please visit http://maps.geog.umd.edu/firms/ for more information http://firefly.geog.umd.edu/wms/wms? fires48 Hazards WGS84 True False False True image/png False
11 Population Density 2010 (Alternate server) GPWv3 http://sedac.ciesin.columbia.edu/geoserver/wms? gpw-v3:gpw-v3-population-density-future-estimates_2010 Population WGS84 True False False True 0.8 image/png False
12 Population Density 2000 (Persons per km2) GRUMPv1 http://beta.sedac.ciesin.columbia.edu:8080/geoserver/wms? grump-v1:grump-v1-population-density_2000 Population WGS84 True False False True 0.8 image/png False
13 Precipitation forecast http://geo.weatheroffice.gc.ca/geomet/? GDPS.ETA_PR Weather True False False False True 0.4 image/png False http://geo.weatheroffice.gc.ca/geomet/?LANG=E%26SERVICE=WMS%26VERSION=1.1.1%26REQUEST=GetLegendGraphic%26STYLE=PRECIPMM%26LAYER=GDPS.ETA_PR%26format=image/png PRECIPMM
14 Cloud forecast http://geo.weatheroffice.gc.ca/geomet/? GDPS.ETA_NT Weather True False False False True 0.4 image/png False http://geo.weatheroffice.gc.ca/geomet/?LANG=E%26SERVICE=WMS%26VERSION=1.1.1%26REQUEST=GetLegendGraphic%26STYLE=CLOUD%26LAYER=GDPS.ETA_NT%26format=image/png CLOUD
15 Sea Level: Rise of 2m Data from https://www.cresis.ku.edu/data/sea-level-rise-maps http://lacrmt.sahanafoundation.org:8080/geoserver/wms? lacrmt:inund2 Hazards False False False True 0.4 image/png False

View File

@ -9,7 +9,10 @@ asset,40,40,"ersSymbolsV0202/Operations_S1/Emergency_Staging_Areas_S1.png"
asset_green,40,40,"ersSymbolsV0202/Operations_S1/Emergency_Staging_Areas_S1_green.png" asset_green,40,40,"ersSymbolsV0202/Operations_S1/Emergency_Staging_Areas_S1_green.png"
asset_red,40,40,"ersSymbolsV0202/Operations_S1/Emergency_Staging_Areas_S1_red.png" asset_red,40,40,"ersSymbolsV0202/Operations_S1/Emergency_Staging_Areas_S1_red.png"
asset_yellow,40,40,"ersSymbolsV0202/Operations_S1/Emergency_Staging_Areas_S1_yellow.png" asset_yellow,40,40,"ersSymbolsV0202/Operations_S1/Emergency_Staging_Areas_S1_yellow.png"
bank,33,44,"ersSymbolsV0202/Infrastructures_S1/Bank_Banks_S1.png
bridge,33,44,"ersSymbolsV0202/Infrastructures_S1/Trans_Bridge_S1.png" bridge,33,44,"ersSymbolsV0202/Infrastructures_S1/Trans_Bridge_S1.png"
broker,33,44,"ersSymbolsV0202/Infrastructures_S1/Bank_Financial_Services_Other_S1.png"
checkpoint,40,40,"ersSymbolsV0202/Operations_S1/Law_Border_Patrol_S1.png"
church,33,44,"ersSymbolsV0202/Infrastructures_S1/Public_Venue_Church_S1.png" church,33,44,"ersSymbolsV0202/Infrastructures_S1/Public_Venue_Church_S1.png"
earthquake,50,50,"ersSymbolsV0202/Natural_Events/Geo_Earth_Quake_Epicenter.png" earthquake,50,50,"ersSymbolsV0202/Natural_Events/Geo_Earth_Quake_Epicenter.png"
elderly,33,44,"ersSymbolsV0202/Infrastructures_S1/Special_Needs_Elder_Care_S1.png" elderly,33,44,"ersSymbolsV0202/Infrastructures_S1/Special_Needs_Elder_Care_S1.png"
@ -31,6 +34,7 @@ hospital_red,40,40,"ersSymbolsV0202/Operations_S1/E_Med_Hospital_S1_Red.png"
hospital_yellow,40,40,"ersSymbolsV0202/Operations_S1/E_Med_Hospital_S1_Yellow.png" hospital_yellow,40,40,"ersSymbolsV0202/Operations_S1/E_Med_Hospital_S1_Yellow.png"
incident,50,50,"ersSymbolsV0202/Incidents/Incident_Theme.png" incident,50,50,"ersSymbolsV0202/Incidents/Incident_Theme.png"
information,32,32,Information.png information,32,32,Information.png
med_contact,40,40,40,40,"ersSymbolsV0202/Operations_S1/E_Med_Triage_S1.png"
mobile_phone,40,40,Mobile_Phone.png mobile_phone,40,40,Mobile_Phone.png
mosque,33,44,"ersSymbolsV0202/Infrastructures_S1/Public_Venue_Mosque_S1.png" mosque,33,44,"ersSymbolsV0202/Infrastructures_S1/Public_Venue_Mosque_S1.png"
news,48,48,News.png news,48,48,News.png
@ -39,6 +43,7 @@ office_green,40,40,"ersSymbolsV0202/Operations_S1/Emergency_Operations_Center_S1
office_red,40,40,"ersSymbolsV0202/Operations_S1/Emergency_Operations_Center_S1_red.png" office_red,40,40,"ersSymbolsV0202/Operations_S1/Emergency_Operations_Center_S1_red.png"
office_yellow,40,40,"ersSymbolsV0202/Operations_S1/Emergency_Operations_Center_S1_yellow.png" office_yellow,40,40,"ersSymbolsV0202/Operations_S1/Emergency_Operations_Center_S1_yellow.png"
orphanage,33,44,"ersSymbolsV0202/Infrastructures_S1/Special_Needs_Child_Day_Care_S1.png" orphanage,33,44,"ersSymbolsV0202/Infrastructures_S1/Special_Needs_Child_Day_Care_S1.png"
pharmacy,40,40,40,40,"ersSymbolsV0202/Operations_S1/E_Med_Pharmacies_S1.png"
phone,10,5,SMS_Message_Phone.png phone,10,5,SMS_Message_Phone.png
police_station,40,40,"ersSymbolsV0202/Operations_S1/Law_Enforcement_Theme_S1.png" police_station,40,40,"ersSymbolsV0202/Operations_S1/Law_Enforcement_Theme_S1.png"
port,33,44,"ersSymbolsV0202/Infrastructures_S1/Trans_Port_S1.png" port,33,44,"ersSymbolsV0202/Infrastructures_S1/Trans_Port_S1.png"
@ -76,4 +81,4 @@ warehouse,33,44,"ersSymbolsV0202/Infrastructures_S1/Agri_Commercial_Food_Distrib
warehouse_green,33,44,"ersSymbolsV0202/Infrastructures_S1/Agri_Commercial_Food_Distribution_Center_S1_green.png" warehouse_green,33,44,"ersSymbolsV0202/Infrastructures_S1/Agri_Commercial_Food_Distribution_Center_S1_green.png"
warehouse_red,33,44,"ersSymbolsV0202/Infrastructures_S1/Agri_Commercial_Food_Distribution_Center_S1_red.png" warehouse_red,33,44,"ersSymbolsV0202/Infrastructures_S1/Agri_Commercial_Food_Distribution_Center_S1_red.png"
warehouse_yellow,33,44,"ersSymbolsV0202/Infrastructures_S1/Agri_Commercial_Food_Distribution_Center_S1_yellow.png" warehouse_yellow,33,44,"ersSymbolsV0202/Infrastructures_S1/Agri_Commercial_Food_Distribution_Center_S1_yellow.png"
youtube,32,32,YouTube.png youtube,32,32,YouTube.png

Can't render this file because it contains an unexpected character in line 13 and column 14.

View File

@ -1,128 +1,128 @@
Type,Comments,KV:XX Type,Comments,KV:EMS
"Animal Die Off",,"EMS:animalHealth.animalDieOff" "Animal Die Off",,"animalHealth.animalDieOff"
"Animal Feed",,"EMS:animalHealth.animalFeed" "Animal Feed",,"animalHealth.animalFeed"
"Aircraft Crash",,"EMS:aviation.aircraftCrash" "Aircraft Crash",,"aviation.aircraftCrash"
"Aircraft Hijacking",,"EMS:aviation.aircraftHijacking" "Aircraft Hijacking",,"aviation.aircraftHijacking"
"Airport Closure",,"EMS:aviation.airportClosure" "Airport Closure",,"aviation.airportClosure"
"Airspace Closure",,"EMS:aviation.airspaceClosure" "Airspace Closure",,"aviation.airspaceClosure"
"Notice to Airmen",,"EMS:aviation.noticeToAirmen" "Notice to Airmen",,"aviation.noticeToAirmen"
"Space Debris",,"EMS:aviation.spaceDebris" "Space Debris",,"aviation.spaceDebris"
"Demonstrations",,"EMS:civil.demonstrations" "Demonstrations",,"civil.demonstrations"
"Dignitary Visit",,"EMS:civil.dignitaryVisit" "Dignitary Visit",,"civil.dignitaryVisit"
"Displaced Populations",,"EMS:civil.displacedPopulations" "Displaced Populations",,"civil.displacedPopulations"
"Civil Emergency",,"EMS:civil.emergency" "Civil Emergency",,"civil.emergency"
"Looting",,"EMS:civil.looting" "Looting",,"civil.looting"
"Public Event",,"EMS:civil.publicEvent" "Public Event",,"civil.publicEvent"
"Riot",,"EMS:civil.riot" "Riot",,"civil.riot"
"Volunteer Request",,"EMS:civil.volunteerRequest" "Volunteer Request",,"civil.volunteerRequest"
"Crime",,"EMS:crime" "Crime",,"crime"
"Bomb",,"EMS:crime.bomb" "Bomb",,"crime.bomb"
"Bomb Explosion",,"EMS:crime.bombExplosion" "Bomb Explosion",,"crime.bombExplosion"
"Bomb Threat",,"EMS:crime.bombThreat" "Bomb Threat",,"crime.bombThreat"
"Dangerous Person",,"EMS:crime.dangerousPerson" "Dangerous Person",,"crime.dangerousPerson"
"Drugs",,"EMS:crime.drugs" "Drugs",,"crime.drugs"
"Home Crime",,"EMS:crime.homeCrime" "Home Crime",,"crime.homeCrime"
"Illegal Immigrant",,"EMS:crime.illegalImmigrant" "Illegal Immigrant",,"crime.illegalImmigrant"
"Industrial Crime",,"EMS:crime.industrialCrime" "Industrial Crime",,"crime.industrialCrime"
"Poisoning",,"EMS:crime.poisoning" "Poisoning",,"crime.poisoning"
"Retail Crime",,"EMS:crime.retailCrime" "Retail Crime",,"crime.retailCrime"
"Shooting",,"EMS:crime.shooting" "Shooting",,"crime.shooting"
"Stowaway",,"EMS:crime.stowaway" "Stowaway",,"crime.stowaway"
"Terrorism",,"EMS:crime.terrorism" "Terrorism",,"crime.terrorism"
"Vehicle Crime",,"EMS:crime.vehicleCrime" "Vehicle Crime",,"crime.vehicleCrime"
"Fire",,"EMS:fire" "Fire",,"fire"
"Forest Fire",,"EMS:fire.forestFire" "Forest Fire",,"fire.forestFire"
"Hot Spot",,"EMS:fire.hotSpot" "Hot Spot",,"fire.hotSpot"
"Industry Fire",,"EMS:fire.industryFire" "Industry Fire",,"fire.industryFire"
"Smoke",,"EMS:fire.smoke" "Smoke",,"fire.smoke"
"Urban Fire",,"EMS:fire.urbanFire" "Urban Fire",,"fire.urbanFire"
"Wild Fire",,"EMS:fire.wildFire" "Wild Fire",,"fire.wildFire"
"Flood",,"EMS:flood" "Flood",,"flood"
"Dam Overflow",,"EMS:flood.damOverflow" "Dam Overflow",,"flood.damOverflow"
"Flash Flood",,"EMS:flood.flashFlood" "Flash Flood",,"flood.flashFlood"
"High Water",,"EMS:flood.highWater" "High Water",,"flood.highWater"
"Overland Flow Flood",,"EMS:flood.overlandFlowFlood" "Overland Flow Flood",,"flood.overlandFlowFlood"
"Tsunami",,"EMS:flood.tsunami" "Tsunami",,"flood.tsunami"
"Avalanche",,"EMS:geophysical.avalanche" "Avalanche",,"geophysical.avalanche"
"Earthquake",,"EMS:geophysical.earthquake" "Earthquake",,"geophysical.earthquake"
"Lahar",,"EMS:geophysical.lahar" "Lahar",,"geophysical.lahar"
"Landslide",,"EMS:geophysical.landslide" "Landslide",,"geophysical.landslide"
"Magnetic Storm",,"EMS:geophysical.magneticStorm" "Magnetic Storm",,"geophysical.magneticStorm"
"Meteorite",,"EMS:geophysical.meteorite" "Meteorite",,"geophysical.meteorite"
"Pyroclastic Flow",,"EMS:geophysical.pyroclasticFlow" "Pyroclastic Flow",,"geophysical.pyroclasticFlow"
"Pyroclastic Surge",,"EMS:geophysical.pyroclasticSurge" "Pyroclastic Surge",,"geophysical.pyroclasticSurge"
"Volcanic Ash Cloud",,"EMS:geophysical.volcanicAshCloud" "Volcanic Ash Cloud",,"geophysical.volcanicAshCloud"
"Volcanic Event",,"EMS:geophysical.volcanicEvent" "Volcanic Event",,"geophysical.volcanicEvent"
"Hazardous Material",,"EMS:hazardousMaterial" "Hazardous Material",,"hazardousMaterial"
"Biological Hazard",,"EMS:hazardousMaterial.biologicalHazard" "Biological Hazard",,"hazardousMaterial.biologicalHazard"
"Chemical Hazard",,"EMS:hazardousMaterial.chemicalHazard" "Chemical Hazard",,"hazardousMaterial.chemicalHazard"
"Explosive Hazard",,"EMS:hazardousMaterial.explosiveHazard" "Explosive Hazard",,"hazardousMaterial.explosiveHazard"
"Falling Object Hazard",,"EMS:hazardousMaterial.fallingObjectHazard" "Falling Object Hazard",,"hazardousMaterial.fallingObjectHazard"
"Infectious Disease (Hazardous Material)",,"EMS:hazardousMaterial.infectiousDisease" "Infectious Disease (Hazardous Material)",,"hazardousMaterial.infectiousDisease"
"Poisonous Gas",,"EMS:hazardousMaterial.poisonousGas" "Poisonous Gas",,"hazardousMaterial.poisonousGas"
"Radiological Hazard",,"EMS:hazardousMaterial.radiologicalHazard" "Radiological Hazard",,"hazardousMaterial.radiologicalHazard"
"Infectious Disease",,"EMS:health.infectiousDisease" "Infectious Disease",,"health.infectiousDisease"
"Infestation",,"EMS:health.infestation" "Infestation",,"health.infestation"
"Iceberg",,"EMS:ice.iceberg" "Iceberg",,"ice.iceberg"
"Ice Pressure",,"EMS:ice.icePressure" "Ice Pressure",,"ice.icePressure"
"Rapid Close Lead",,"EMS:ice.rapidCloseLead" "Rapid Close Lead",,"ice.rapidCloseLead"
"Special Ice",,"EMS:ice.specialIce" "Special Ice",,"ice.specialIce"
"Marine Security",,"EMS:marine.marineSecurity" "Marine Security",,"marine.marineSecurity"
"Nautical Accident",,"EMS:marine.nauticalAccident" "Nautical Accident",,"marine.nauticalAccident"
"Nautical Hijacking",,"EMS:marine.nauticalHijacking" "Nautical Hijacking",,"marine.nauticalHijacking"
"Port Closure",,"EMS:marine.portClosure" "Port Closure",,"marine.portClosure"
"Special Marine",,"EMS:marine.specialMarine" "Special Marine",,"marine.specialMarine"
"Blizzard",,"EMS:meteorological.blizzard" "Blizzard",,"meteorological.blizzard"
"Blowing Snow",,"EMS:meteorological.blowingSnow" "Blowing Snow",,"meteorological.blowingSnow"
"Drought",,"EMS:meteorological.drought" "Drought",,"meteorological.drought"
"Dust Storm",,"EMS:meteorological.dustStorm" "Dust Storm",,"meteorological.dustStorm"
"Fog",,"EMS:meteorological.fog" "Fog",,"meteorological.fog"
"Freezing Drizzle",,"EMS:meteorological.freezingDrizzle" "Freezing Drizzle",,"meteorological.freezingDrizzle"
"Freezing Rain",,"EMS:meteorological.freezingRain" "Freezing Rain",,"meteorological.freezingRain"
"Freezing Spray",,"EMS:meteorological.freezingSpray" "Freezing Spray",,"meteorological.freezingSpray"
"Hail",,"EMS:meteorological.hail" "Hail",,"meteorological.hail"
"Hurricane",,"EMS:meteorological.hurricane" "Hurricane",,"meteorological.hurricane"
"Rain Fall",,"EMS:meteorological.rainFall" "Rain Fall",,"meteorological.rainFall"
"Snow Fall",,"EMS:meteorological.snowFall" "Snow Fall",,"meteorological.snowFall"
"Snow Squall",,"EMS:meteorological.snowSquall" "Snow Squall",,"meteorological.snowSquall"
"Squall",,"EMS:meteorological.squall" "Squall",,"meteorological.squall"
"Storm Surge",,"EMS:meteorological.stormSurge" "Storm Surge",,"meteorological.stormSurge"
"Thunderstorm",,"EMS:meteorological.thunderstorm" "Thunderstorm",,"meteorological.thunderstorm"
"Tornado",,"EMS:meteorological.tornado" "Tornado",,"meteorological.tornado"
"Tropical Storm",,"EMS:meteorological.tropicalStorm" "Tropical Storm",,"meteorological.tropicalStorm"
"Waterspout",,"EMS:meteorological.waterspout" "Waterspout",,"meteorological.waterspout"
"Winter Storm",,"EMS:meteorological.winterStorm" "Winter Storm",,"meteorological.winterStorm"
"Missing Person",,"EMS:missingPerson" "Missing Person",,"missingPerson"
"Child Abduction Emergency","http://en.wikipedia.org/wiki/Amber_Alert","EMS:missingPerson.amberAlert" "Child Abduction Emergency","http://en.wikipedia.org/wiki/Amber_Alert","missingPerson.amberAlert"
"Missing Vulnerable Person",,"EMS:missingPerson.missingVulnerablePerson" "Missing Vulnerable Person",,"missingPerson.missingVulnerablePerson"
"Missing Senior Citizen","http://en.wikipedia.org/wiki/Silver_Alert","EMS:missingPerson.silver" "Missing Senior Citizen","http://en.wikipedia.org/wiki/Silver_Alert","missingPerson.silver"
"Emergency Support Facility",,"EMS:publicService.emergencySupportFacility" "Emergency Support Facility",,"publicService.emergencySupportFacility"
"Emergency Support Service",,"EMS:publicService.emergencySupportService" "Emergency Support Service",,"publicService.emergencySupportService"
"School Closure",,"EMS:publicService.schoolClosure" "School Closure",,"publicService.schoolClosure"
"School Lockdown",,"EMS:publicService.schoolLockdown" "School Lockdown",,"publicService.schoolLockdown"
"Service or Facility",,"EMS:publicService.serviceOrFacility" "Service or Facility",,"publicService.serviceOrFacility"
"Transit",,"EMS:publicService.transit" "Transit",,"publicService.transit"
"Railway Accident",,"EMS:railway.railwayAccident" "Railway Accident",,"railway.railwayAccident"
"Railway Hijacking",,"EMS:railway.railwayHijacking" "Railway Hijacking",,"railway.railwayHijacking"
"Bridge Closed",,"EMS:roadway.bridgeClosure" "Bridge Closed",,"roadway.bridgeClosure"
"Hazardous Road Conditions",,"EMS:roadway.hazardousRoadConditions" "Hazardous Road Conditions",,"roadway.hazardousRoadConditions"
"Road Accident",,"EMS:roadway.roadwayAccident" "Road Accident",,"roadway.roadwayAccident"
"Road Closed",,"EMS:roadway.roadwayClosure" "Road Closed",,"roadway.roadwayClosure"
"Road Delay",,"EMS:roadway.roadwayDelay" "Road Delay",,"roadway.roadwayDelay"
"Road Hijacking",,"EMS:roadway.roadwayHijacking" "Road Hijacking",,"roadway.roadwayHijacking"
"Road Usage Condition",,"EMS:roadway.roadwayUsageCondition" "Road Usage Condition",,"roadway.roadwayUsageCondition"
"Traffic Report",,"EMS:roadway.trafficReport" "Traffic Report",,"roadway.trafficReport"
"Arctic Outflow",,"EMS:temperature.arcticOutflow" "Arctic Outflow",,"temperature.arcticOutflow"
"Cold Wave",,"EMS:temperature.coldWave" "Cold Wave",,"temperature.coldWave"
"Flash Freeze",,"EMS:temperature.flashFreeze" "Flash Freeze",,"temperature.flashFreeze"
"Frost",,"EMS:temperature.frost" "Frost",,"temperature.frost"
"Heat and Humidity",,"EMS:temperature.heatAndHumidity" "Heat and Humidity",,"temperature.heatAndHumidity"
"Heat Wave",,"EMS:temperature.heatWave" "Heat Wave",,"temperature.heatWave"
"Wind Chill",,"EMS:temperature.windChill" "Wind Chill",,"temperature.windChill"
"Gale Wind",,"EMS:wind.galeWind" "Gale Wind",,"wind.galeWind"
"Hurricane Force Wind",,"EMS:wind.hurricaneForceWind" "Hurricane Force Wind",,"wind.hurricaneForceWind"
"Storm Force Wind",,"EMS:wind.stormForceWind" "Storm Force Wind",,"wind.stormForceWind"
"Strong Wind",,"EMS:wind.strongWind" "Strong Wind",,"wind.strongWind"
"Building Collapsed",,, "Building Collapsed",,"other.buildingCollapsed"
"People Trapped",,, "People Trapped",,"other.peopleTrapped"
"Power Failure",,, "Power Failure",,"other.powerFailure"

Can't render this file because it has a wrong number of fields in line 126.

View File

@ -1,2 +0,0 @@
First Name,Last Name,Email,Password,Role,Organisation
Admin,User,${SAHANA_ADMIN_USER},${SAHANA_ADMIN_PWD},ADMIN,
1 First Name Last Name Email Password Role Organisation
2 Admin User ${SAHANA_ADMIN_USER} ${SAHANA_ADMIN_PWD} ADMIN

View File

@ -5,7 +5,7 @@
Template-specific Monitoring Tasks are defined here. Template-specific Monitoring Tasks are defined here.
@copyright: 2014-2020 (c) Sahana Software Foundation @copyright: 2014-2021 (c) Sahana Software Foundation
@license: MIT @license: MIT
Permission is hereby granted, free of charge, to any person Permission is hereby granted, free of charge, to any person
@ -55,7 +55,7 @@ INSTANCE_TYPES = {"prod": 1,
} }
# ============================================================================= # =============================================================================
class S3Monitor(object): class S3Monitor:
""" """
Monitoring Check Scripts Monitoring Check Scripts
""" """

View File

@ -5,7 +5,7 @@
Template-specific Message Parsers are defined here. Template-specific Message Parsers are defined here.
@copyright: 2012-2020 (c) Sahana Software Foundation @copyright: 2012-2021 (c) Sahana Software Foundation
@license: MIT @license: MIT
Permission is hereby granted, free of charge, to any person Permission is hereby granted, free of charge, to any person
@ -50,7 +50,7 @@ from s3.s3parser import S3Parsing
from s3.s3utils import soundex from s3.s3utils import soundex
# ============================================================================= # =============================================================================
class S3Parser(object): class S3Parser:
""" """
Message Parsing Template Message Parsing Template
""" """
@ -72,7 +72,7 @@ class S3Parser(object):
message_id = message.message_id message_id = message.message_id
table = s3db.msg_email table = s3db.msg_email
record = db(table.message_id == message_id).select(table.raw, record = db(table.message_id == message_id).select(table.raw,
limitby=(0, 1) limitby = (0, 1)
).first() ).first()
if not record: if not record:
return reply return reply
@ -95,7 +95,8 @@ class S3Parser(object):
# Update the Run entry to show that we have received the reply OK # Update the Run entry to show that we have received the reply OK
rtable = s3db.monitor_run rtable = s3db.monitor_run
db(rtable.id == run_id).update(result = "Reply Received", db(rtable.id == run_id).update(result = "Reply Received",
status = 1) status = 1,
)
return reply return reply
else: else:
@ -156,12 +157,17 @@ class S3Parser(object):
# # Check when account was created # # Check when account was created
# (Note that it is still possible to game this - plausible accounts can be purchased) # (Note that it is still possible to game this - plausible accounts can be purchased)
ktable = s3db.msg_keyword # NB This just allows a single Keyword per Incident Type
keywords = db(ktable.deleted == False).select(ktable.id, # - if more are needed then use something like tag.like("KW%")
ktable.keyword, ttable = s3db.event_incident_type_tag
ktable.incident_type_id, query = (ttable.tag == "keyword") & \
cache=cache) (ttable.deleted == False)
incident_type_represent = S3Represent(lookup="event_incident_type") keywords = db(query).select(#ttable.id,
ttable.value,
ttable.incident_type_id,
cache = cache,
)
incident_type_represent = S3Represent(lookup = "event_incident_type")
if NLTK: if NLTK:
# Lookup synonyms # Lookup synonyms
# @ToDo: Cache # @ToDo: Cache
@ -169,22 +175,23 @@ class S3Parser(object):
for kw in keywords: for kw in keywords:
syns = [] syns = []
try: try:
synsets = wn.synsets(kw.keyword) synsets = wn.synsets(kw.value)
for synset in synsets: for synset in synsets:
syns += [lemma.name for lemma in synset.lemmas] syns += [lemma.name for lemma in synset.lemmas]
except LookupError: except LookupError:
nltk.download("wordnet") nltk.download("wordnet")
synsets = wn.synsets(kw.keyword) synsets = wn.synsets(kw.value)
for synset in synsets: for synset in synsets:
syns += [lemma.name for lemma in synset.lemmas] syns += [lemma.name for lemma in synset.lemmas]
synonyms[kw.keyword.lower()] = syns synonyms[kw.value.lower()] = syns
ltable = s3db.gis_location ltable = s3db.gis_location
query = (ltable.deleted != True) & \ query = (ltable.deleted != True) & \
(ltable.name != None) (ltable.name != None)
locs = db(query).select(ltable.id, locs = db(query).select(ltable.id,
ltable.name, ltable.name,
cache=cache) cache = cache,
)
lat = lon = None lat = lon = None
location_id = None location_id = None
loc_matches = 0 loc_matches = 0
@ -242,7 +249,7 @@ class S3Parser(object):
if not skip: if not skip:
for kw in keywords: for kw in keywords:
_word = kw.keyword.lower() _word = kw.value.lower()
if _word == word: if _word == word:
# Check for negation # Check for negation
if index and words[index - 1].lower() == "no": if index and words[index - 1].lower() == "no":
@ -284,7 +291,8 @@ class S3Parser(object):
if not loc_matches or loc_matches > 1: if not loc_matches or loc_matches > 1:
if lat and lon: if lat and lon:
location_id = ltable.insert(lat = lat, location_id = ltable.insert(lat = lat,
lon = lon) lon = lon,
)
elif service == "twitter": elif service == "twitter":
# @ToDo: Use Geolocation of Tweet # @ToDo: Use Geolocation of Tweet
#location_id = #location_id =
@ -419,8 +427,8 @@ class S3Parser(object):
result = [] result = []
# Hospital Search [example: get name hospital facility status ] # Hospital Search [example: get name hospital facility status ]
table = s3db.hms_hospital table = s3db.med_hospital
stable = s3db.hms_status stable = s3db.med_hospital_status
query = (table.deleted == False) & \ query = (table.deleted == False) & \
(current.auth.s3_accessible_query("read", table)) (current.auth.s3_accessible_query("read", table))
rows = db(query).select(table.id, rows = db(query).select(table.id,

View File

@ -16,7 +16,6 @@
# ============================================================================= # =============================================================================
# Roles # Roles
*,import_role,auth_roles.csv *,import_role,auth_roles.csv
auth,user,masterUsers.csv,user.xsl
# GIS # GIS
# Markers # Markers
gis,marker,gis_marker.csv,marker.xsl gis,marker,gis_marker.csv,marker.xsl