mirror of
https://github.com/gristlabs/grist-core.git
synced 2025-12-05 18:21:56 +00:00
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 |
||
|---|---|---|
| .. | ||
| 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 | ||