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

1from datasette import hookimpl 

2 

3from datasette_reconcile.reconcile import ReconcileAPI 

4from datasette_reconcile.utils import check_config, check_permissions 

5 

6 

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) 

11 

12 # get plugin configuration 

13 config = datasette.plugin_config("datasette-reconcile", database=database, table=table) 

14 config = await check_config(config, db, table) 

15 

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 ) 

26 

27 # get the reconciliation API and call it 

28 return ReconcileAPI(config, database, table, datasette) 

29 

30 

31async def reconcile(request, datasette): 

32 reconcile_api = await get_api(request, datasette) 

33 return await reconcile_api.reconcile(request) 

34 

35 

36async def properties(request, datasette): 

37 reconcile_api = await get_api(request, datasette) 

38 return await reconcile_api.properties(request) 

39 

40 

41async def suggest_entity(request, datasette): 

42 reconcile_api = await get_api(request, datasette) 

43 return await reconcile_api.suggest_entity(request) 

44 

45 

46async def suggest_property(request, datasette): 

47 reconcile_api = await get_api(request, datasette) 

48 return await reconcile_api.suggest_property(request) 

49 

50 

51async def suggest_type(request, datasette): 

52 reconcile_api = await get_api(request, datasette) 

53 return await reconcile_api.suggest_type(request) 

54 

55 

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 ]