gristlabs_grist-core/sandbox/grist
Paul Fitzpatrick 603238e966 (core) Adds a UI panel for managing webhooks
Summary:
This adds a UI panel for managing webhooks. Work started by Cyprien Pindat. You can find the UI on a document's settings page. Main changes relative to Cyprien's demo:

  * Changed behavior of virtual table to be more consistent with the rest of Grist, by factoring out part of the implementation of on-demand tables.
  * Cell values that would create an error can now be denied and reverted (as for the rest of Grist).
  * Changes made by other users are integrated in a sane way.
  * Basic undo/redo support is added using the regular undo/redo stack.
  * The table list in the drop-down is now updated if schema changes.
  * Added a notification from back-end when webhook status is updated so constant polling isn't needed to support multi-user operation.
  *  Factored out webhook specific logic from general virtual table support.
  * Made a bunch of fixes to various broken behavior.
  * Added tests.

The code remains somewhat unpolished, and behavior in the presence of errors is imperfect in general but may be adequate for this case.

I assume that we'll soon be lifting the restriction on the set of domains that are supported for webhooks - otherwise we'd want to provide some friendly way to discover that list of supported domains rather than just throwing an error.

I don't actually know a lot about how the front-end works - it looks like tables/columns/fields/sections can be safely added if they have string ids that won't collide with bone fide numeric ids from the back end. Sneaky.

Contains a migration, so needs an extra reviewer for that.

Test Plan: added tests

Reviewers: jarek, dsagal

Reviewed By: jarek, dsagal

Differential Revision: https://phab.getgrist.com/D3856
2023-05-08 18:25:27 -04:00
..
functions
imports
acl_formula.py
acl.py
action_obj.py
action_summary.py
actions.py
autocomplete_context.py
codebuilder.py
column.py
csv_patch.py
depend.py
docactions.py
docmodel.py
engine.py
formula_prompt.py
friendly_errors.py
gencode.py
grist.py
identifiers.py
import_actions.py
logger.py
lookup.py
main.py
match_counter.py
migrations.py
moment.py
objtypes.py
parse_data.py
records.py
relabeling.py
relation.py
runtests.py
sandbox.py
schema.py
sort_specs.py
summary.py
table_data_set.py
table.py
test_acl_formula.py
test_acl_renames.py
test_actions.py
test_codebuilder.py
test_column_actions.py
test_completion.py
test_default_formulas.py
test_depend.py
test_derived.py
test_display_cols.py
test_docmodel.py
test_engine.py
test_find_col.py
test_formula_error.py
test_formula_prompt.py
test_formula_undo.py
test_functions.py
test_gencode.py
test_import_actions.py
test_logger.py
test_lookups.py
test_match_counter.py
test_migrations.py
test_moment.py
test_record_func.py
test_recordlist.py
test_reflist_rel.py
test_relabeling.py
test_renames2.py
test_renames.py
test_replay.py
test_requests.py
test_rules_grid.py
test_rules.py
test_side_effects.py
test_sort_spec.py
test_summary2.py
test_summary_choicelist.py
test_summary_undo.py
test_summary.py
test_table_actions.py
test_table_data_set.py
test_temp_rowids.py
test_textbuilder.py
test_treeview.py
test_trigger_formulas.py
test_twowaymap.py
test_types.py
test_undo.py
test_urllib_patch.py
test_user.py
test_useractions.py
testsamples.py
testscript.json
testutil.py
textbuilder.py
treeview.py
twowaymap.py
tzdata.data
urllib_patch.py
user.py
useractions.py
usercode.py
usertypes.py
xmlrunner.py