handlers.computed_field_handler
Watch fields for value changes, and when one of the watched fields changes, set another field to a computed value. This allows for lookups and mappings between multiple fields.
Configuration:
fs_types: list of fact sheet types, where this handler should run
depends_on_fields: a list of fields to be monitored for changes; if any of these fields change, the lookup will be
performed
field_name: name of the field to be set
update_when_empty: also set the value of field_name when no new value or an empty value was computed
value: list of definitions for the new value lookup
Each entry in value is an object containing two fields:
value: the value to be set if the condition is true
condition: a string of Python code, determining whether this value should be used. The current fact sheet is
passed as local variable fs, and you can use any Python code to compute a value of True or False
Example:
{
"fs_types": ["Application"],
"depends_on_fields": ["functionalSuitability", "technicalSuitability"],
"field_name": "lxTimeClassification",
"update_when_empty": False,
"value": [
{
"condition": "fs['functionalSuitability'] == 'unreasonable' and fs['technicalSuitability'] == 'inappropriate'",
"value": "Eliminate"
}
]
}
This would set the TIME classification to “Eliminate”, when functional fit and technical fit are set to their lowest values, and would not update in any other case.
Declare the exact fact-sheet data this handler needs, so the webhook event loop (process_event in workspace/views_module.py) can load a single lean FastFactSheet per event instead of the full fact sheet.
Return a dict:
{
"fields": [
Return None (the default) to signal "requirements cannot be declared statically" - e.g. handlers that exec/eval config-supplied code. The event loop then loads the full fact sheet for that event, so correctness is always preserved. This is a standalone hook (deliberately not tied to the initial_sync_* hooks, which are slated to migrate onto it later).
Called automatically whenever a FactSheetUpdated event comes in via webhook.
Inherited Members
- handlers.eventhandler.EventHandler
- EventHandler
- get_trigger
- get_event_types
- get_fs_types
- get
- all
- lx_client
- update_with_uniqueness_check
- facet_matches
- is_tag_key
- SUBSCRIPTION_TYPES
- parse_subscription_key
- get_mapped_subscriptions
- get_notification_users
- get_send_email_for_users
- get_email_callback
- get_due_date