Coverage for src\datasette_reconcile\__init__.py: 100%
29 statements
« prev ^ index » next coverage.py v7.3.1, created at 2023-12-20 00:45 +0000
« prev ^ index » next coverage.py v7.3.1, created at 2023-12-20 00:45 +0000
1from datasette import hookimpl
3from datasette_reconcile.reconcile import ReconcileAPI
4from datasette_reconcile.utils import check_config, check_permissions
7async def get_api(request, datasette):
8 database = request.url_vars["db_name"]
9 table = request.url_vars["db_table"]
10 db = datasette.get_database(database)
12 # get plugin configuration
13 config = datasette.plugin_config("datasette-reconcile", database=database, table=table)
14 config = await check_config(config, db, table)
16 # check user can at least view this table
17 await check_permissions(
18 request,
19 [
20 ("view-table", (database, table)),
21 ("view-database", database),
22 "view-instance",
23 ],
24 datasette,
25 )
27 # get the reconciliation API and call it
28 return ReconcileAPI(config, database, table, datasette)
31async def reconcile(request, datasette):
32 reconcile_api = await get_api(request, datasette)
33 return await reconcile_api.reconcile(request)
36async def properties(request, datasette):
37 reconcile_api = await get_api(request, datasette)
38 return await reconcile_api.properties(request)
41async def suggest_entity(request, datasette):
42 reconcile_api = await get_api(request, datasette)
43 return await reconcile_api.suggest_entity(request)
46async def suggest_property(request, datasette):
47 reconcile_api = await get_api(request, datasette)
48 return await reconcile_api.suggest_property(request)
51async def suggest_type(request, datasette):
52 reconcile_api = await get_api(request, datasette)
53 return await reconcile_api.suggest_type(request)
56@hookimpl
57def register_routes():
58 return [
59 (r"/(?P<db_name>[^/]+)/(?P<db_table>[^/]+?)/-/reconcile$", reconcile),
60 (r"/(?P<db_name>[^/]+)/(?P<db_table>[^/]+?)/-/reconcile/extend/propose$", properties),
61 (r"/(?P<db_name>[^/]+)/(?P<db_table>[^/]+?)/-/reconcile/suggest/entity$", suggest_entity),
62 (r"/(?P<db_name>[^/]+)/(?P<db_table>[^/]+?)/-/reconcile/suggest/property$", suggest_property),
63 (r"/(?P<db_name>[^/]+)/(?P<db_table>[^/]+?)/-/reconcile/suggest/type$", suggest_type),
64 ]