Simon Willison
80a9cd9620
test-datasette-load-plugins now fails correctly, refs #2193
2023-09-21 12:55:50 -07:00
Simon Willison
6ed7908580
Simplified test for #2189
...
This now executes two facets, in the hope that parallel facet execution
would illustrate the bug - but it did not illustrate the bug.
2023-09-18 10:44:13 -07:00
Simon Willison
f56e043747
test_facet_against_in_memory_database, refs #2189
...
This is meant to illustrate a crashing bug but it does not trigger it.
2023-09-18 10:39:11 -07:00
Simon Willison
852f501485
Switch from pkg_resources to importlib.metadata in app.py, refs #2057
2023-09-16 09:35:18 -07:00
Alex Garcia
b2ec8717c3
Plugin configuration now lives in datasette.yaml/json
...
* Checkpoint, moving top-level plugin config to datasette.json
* Support database-level and table-level plugin configuration in datasette.yaml
Refs #2093
2023-09-13 14:06:25 -07:00
Simon Willison
b645174271
actors_from_ids plugin hook and datasette.actors_from_ids() method ( #2181 )
...
* Prototype of actors_from_ids plugin hook, refs #2180
* datasette-remote-actors example plugin, refs #2180
2023-09-07 21:23:59 -07:00
Simon Willison
c26370485a
Label expand permission check respects cascade, closes #2178
2023-09-07 16:28:30 -07:00
Simon Willison
dbfad6d220
Foreign key label expanding respects table permissions, closes #2178
2023-09-07 15:51:09 -07:00
Simon Willison
2200abfa17
Fix for flaky test_hidden_sqlite_stat1_table, closes #2179
2023-09-07 15:49:50 -07:00
Simon Willison
98ffad9aed
execute-sql now implies can view instance/database, closes #2169
2023-08-31 15:46:26 -07:00
Simon Willison
6bfe104d47
DATASETTE_LOAD_PLUGINS environment variable for loading specific plugins
...
Closes #2164
* Load only specified plugins for DATASETTE_LOAD_PLUGINS=datasette-one,datasette-two
* Load no plugins if DATASETTE_LOAD_PLUGINS=''
* Automated tests in a Bash script for DATASETTE_LOAD_PLUGINS
2023-08-30 15:12:24 -07:00
Simon Willison
bb12229794
Rename core_ to catalog_, closes #2163
2023-08-29 10:01:28 -07:00
Simon Willison
50da908213
Cascade for restricted token view-table/view-database/view-instance operations ( #2154 )
...
Closes #2102
* Permission is now a dataclass, not a namedtuple - refs https://github.com/simonw/datasette/pull/2154/#discussion_r1308087800
* datasette.get_permission() method
2023-08-29 09:32:34 -07:00
Alex Garcia
92b8bf38c0
Add new `--internal internal.db` option, deprecate legacy `_internal` database
...
Refs:
- #2157
---------
Co-authored-by: Simon Willison <swillison@gmail.com>
2023-08-28 20:24:23 -07:00
Simon Willison
2e2825869f
Test for --get --actor, refs #2153
2023-08-28 13:18:24 -07:00
Simon Willison
d8351b08ed
datasette --get --actor 'JSON' option, closes #2153
...
Refs #2154
2023-08-28 13:15:38 -07:00
Simon Willison
d9aad1fd04
-s/--setting x y gets merged into datasette.yml, refs #2143 , #2156
...
This change updates the `-s/--setting` option to `datasette serve` to allow it to be used to set arbitrarily complex nested settings in a way that is compatible with the new `-c datasette.yml` work happening in:
- #2143
It will enable things like this:
```
datasette data.db --setting plugins.datasette-ripgrep.path "/home/simon/code"
```
For the moment though it just affects [settings](https://docs.datasette.io/en/1.0a4/settings.html ) - so you can do this:
```
datasette data.db --setting settings.sql_time_limit_ms 3500
```
I've also implemented a backwards compatibility mechanism, so if you use it this way (the old way):
```
datasette data.db --setting sql_time_limit_ms 3500
```
It will notice that the setting you passed is one of Datasette's core settings, and will treat that as if you said `settings.sql_time_limit_ms` instead.
2023-08-28 13:06:14 -07:00
Simon Willison
527cec66b0
utils.pairs_to_nested_config(), refs #2156 , #2143
2023-08-24 11:21:15 -07:00
Simon Willison
2ce7872e3b
-c shortcut for --config - refs #2143 , #2149
2023-08-22 19:33:26 -07:00
Alex Garcia
17ec309e14
Start datasette.json, re-add --config, rm settings.json
...
The first step in defining the new `datasette.json/yaml` configuration mechanism.
Refs #2093 , #2143 , #493
2023-08-22 18:26:11 -07:00
Simon Willison
01e0558825
Merge pull request from GHSA-7ch3-7pp7-7cpq
...
* API explorer requires view-instance permission
* Check database/table permissions on /-/api page
* Release notes for 1.0a4
Refs #2119 , #2133 , #2138 , #2140
Refs https://github.com/simonw/datasette/security/advisories/GHSA-7ch3-7pp7-7cpq
2023-08-22 10:10:01 -07:00
Simon Willison
4535568f2c
Fixed display of database color
...
Closes #2139 , closes #2119
2023-08-10 22:16:19 -07:00
Simon Willison
a3593c9015
on_success_message_sql, closes #2138
2023-08-09 17:32:07 -07:00
Simon Willison
4a42476bb7
datasette plugins --requirements, closes #2133
2023-08-09 15:04:16 -07:00
Simon Willison
e34d09c6ec
Don't include columns in query JSON, refs #2136
2023-08-09 12:01:59 -07:00
Simon Willison
26be9f0445
Refactored canned query code, replaced old QueryView, closes #2114
2023-08-09 08:26:52 -07:00
Simon Willison
cd57b0f712
Brought back parameter fields, closes #2132
2023-08-08 06:45:04 -07:00
Simon Willison
1377a290cd
New JSON design for query views ( #2118 )
...
* Refs #2111 , closes #2110
* New Context dataclass/subclass mechanism, refs #2127
* Define QueryContext and extract get_tables() method, refs #2127
* Fix OPTIONS bug by porting DaatbaseView to be a View subclass
* Expose async_view_for_class.view_class for test_routes test
* Error/truncated aruments for renderers, closes #2130
2023-08-07 18:47:39 -07:00
Simon Willison
8cd60fd1d8
Homepage test now just asserts isinstance(x, int) - closes #2092
2023-06-29 08:24:09 -07:00
Simon Willison
c39d600aef
Fix all E741 Ambiguous variable name warnings, refs #2090
2023-06-29 08:05:24 -07:00
Simon Willison
dda99fc09f
New View base class ( #2080 )
...
* New View base class, closes #2078
* Use new View subclass for PatternPortfolioView
2023-05-25 17:18:43 -07:00
Simon Willison
b49fa446d6
--cors Access-Control-Max-Age: 3600, closes #2079
2023-05-25 15:05:58 -07:00
Simon Willison
9584879534
Rename callable.py to check_callable.py, refs #2078
2023-05-25 11:49:40 -07:00
Simon Willison
2e43a14da1
datasette.utils.check_callable(obj) - refs #2078
2023-05-25 11:35:34 -07:00
Simon Willison
0b0c5cd7a9
Hopeful fix for Python 3.7 httpx failure, refs #2066
2023-04-26 21:20:38 -07:00
Simon Willison
d97e82df3c
?_extra= support and TableView refactor to table_view
...
* Implemented ?_extra= option for JSON views, refs #262
* New dependency: asyncinject
* Remove now-obsolete TableView class
2023-03-22 15:49:39 -07:00
Simon Willison
25fdbe6b27
use tmpdir instead of isolated_filesystem, refs #2037
...
Should hopefully get tests passing for #2036 too.
2023-03-08 12:33:23 -08:00
Simon Willison
bd39cb4805
Use service-specific image ID for Cloud Run deploys, refs #2036
2023-03-08 12:25:55 -08:00
Simon Willison
1ad92a1d87
datasette install -r requirements.txt, closes #2033
2023-03-06 14:27:30 -08:00
Simon Willison
0b4a286914
render_cell(..., request) argument, closes #2007
2023-01-27 19:34:14 -08:00
Simon Willison
50fd94e04f
Raise ValueError if Datasette(files=) is a string, refs #1985
2023-01-11 10:13:20 -08:00
Simon Willison
c41278b46f
default_allow_sql setting, closes #1409
...
Refs #1410
2023-01-04 16:51:26 -08:00
Simon Willison
5bbe2bcc50
Rename filtered_table_rows_count to count, refs #782
2022-12-31 12:52:57 -08:00
Simon Willison
a2dca62360
Fix for extension tests I broke, refs #782
2022-12-31 11:21:15 -08:00
Simon Willison
8aa9cf629c
Store null instead of 'None' in _internal database table, closes #1970
2022-12-31 10:52:37 -08:00
Simon Willison
234230e595
Default JSON shape is now objects - refs #1914 , #1709
2022-12-31 10:52:37 -08:00
Jan Lehnardt
e03aed0002
Detect server start/stop more reliably.
...
This is useful, especially in testing, since your test
hosts might not reliabliy start the server within two
seconds, so we do a definite check before progressing.
By the same token, after `kill $server_pid` wait for
the pid to be gone from the process list.
Since now the script can end prematurely, I also added
a cleanup function to make sure the temporary certs are
removed in any case.
n.b. this could also be done with the use of `trap 'fn'
ERR` but that felt like a bit too much magic for this
short a script.
2022-12-18 08:01:51 -08:00
Simon Willison
d1d369456a
Move HTTPS test to a bash script
...
See https://github.com/simonw/datasette/issues/1955#issuecomment-1356627931
2022-12-17 18:33:07 -08:00
Simon Willison
8b73fc6b47
Put AsgiLifestyle back so server starts up again, refs #1955
2022-12-17 17:22:00 -08:00
Simon Willison
89cffcf14c
Reset _metadata_local in a couple of tests
...
Refs https://github.com/simonw/datasette/pull/1960#issuecomment-1356476886
2022-12-17 13:47:55 -08:00
Simon Willison
9c43b4164d
Removed @pytest.mark.ds_client mark - refs #1959
...
I don't need it - can run 'pytest -k ds_client' instead.
See https://github.com/simonw/datasette/pull/1960#issuecomment-1355685828
2022-12-17 13:47:55 -08:00
Simon Willison
0e42444866
invoke_startup() inside ds_client fixture, refs #1959
2022-12-17 13:47:55 -08:00
Simon Willison
e70974a4f1
Ran Black, refs #1959
2022-12-17 13:47:55 -08:00
Simon Willison
42a66c2f04
A bunch of remaining ds_client conversions, refs #1959
2022-12-17 13:47:55 -08:00
Simon Willison
be95359a80
ds_client for test_permissions.py, refs #1959
2022-12-17 13:47:55 -08:00
Simon Willison
ef74d0ff70
ds_client for test_internal_db.py, refs #1959
2022-12-17 13:47:55 -08:00
Simon Willison
4a151b15cc
ds_client for test_filters.py, refs #1959
2022-12-17 13:47:55 -08:00
Simon Willison
30f1a0705b
ds_client for test_plugins.py, refs #1959
2022-12-17 13:47:55 -08:00
Simon Willison
b998c2793f
test_facets.py using ds_client, refs #1959
2022-12-17 13:47:55 -08:00
Simon Willison
bc88491cb7
ds_client for test_table_api.py, refs #1959
2022-12-17 13:47:55 -08:00
Simon Willison
1335bcb893
Use my own global variable instead of scope=session
...
Refs https://github.com/simonw/datasette/pull/1960#issuecomment-1354148139
2022-12-17 13:47:55 -08:00
Simon Willison
ebd3358e49
ds_client for test_table_html.py
2022-12-17 13:47:55 -08:00
Simon Willison
d94d363ec0
Don't use pytest_asyncio.fixture(scope="session") any more, refs #1959
...
Also got rid of the weird memory=False hack:
https://github.com/simonw/datasette/pull/1960#issuecomment-1354053151
2022-12-17 13:47:55 -08:00
Simon Willison
95900b9d02
Port app_client to ds_client for most of test_html.py, refs #1959
2022-12-17 13:47:55 -08:00
Simon Willison
3001eec66a
ds_client for test_csv.py and test_canned_queries.py, refs #1959
2022-12-17 13:47:55 -08:00
Simon Willison
425ac4357f
Ported app_client to ds_client where possible in test_auth.py, refs #1959
2022-12-17 13:47:55 -08:00
Simon Willison
b077e63dc6
Ported test_api.py app_client test to ds_client, refs #1959
2022-12-17 13:47:55 -08:00
Simon Willison
0b68996cc5
Revert "Replace AsgiLifespan with AsgiRunOnFirstRequest, refs #1955"
...
This reverts commit dc18f62089
.
2022-12-15 13:06:45 -08:00
Simon Willison
dc18f62089
Replace AsgiLifespan with AsgiRunOnFirstRequest, refs #1955
2022-12-15 09:34:07 -08:00
Simon Willison
c094dde3ff
Extra permission rules for /-/create, closes #1937
2022-12-14 12:21:18 -08:00
Simon Willison
e238df3959
Handle non-initials in permission_allowed_actor_restrictions, closes #1956
2022-12-14 12:04:23 -08:00
Simon Willison
1a3dcf4943
Don't include _memory on /-/create-token, refs #1947
2022-12-13 21:19:31 -08:00
Simon Willison
420d0a0ee2
Tests for /-/create-token with restrictions, closes #1947
2022-12-13 21:13:20 -08:00
Simon Willison
d98a8effb1
UI for restricting permissions on /-/create-token, refs #1947
...
Also fixes test failures I introduced in #1951
2022-12-13 21:03:17 -08:00
Simon Willison
f84acae98e
Return 400 errors for ?_sort errors, closes #1950
2022-12-13 14:23:17 -08:00
Simon Willison
45979eb723
Rename permission created by demo plugin
...
It was showing up as 'new-permission' on https://latest.datasette.io/-/permissions
which I thought was confusing
2022-12-12 21:21:01 -08:00
Simon Willison
a1a372f179
/-/actor no longer requires view-instance, refs #1945
2022-12-12 21:06:30 -08:00
Simon Willison
260fbb598e
Fix some failing tests, refs #1855
2022-12-12 21:00:40 -08:00
Simon Willison
809fad2392
Tests for datasette create-token restrictions, refs #1855
2022-12-12 20:44:19 -08:00
Simon Willison
c13dada2f8
datasette --get --token option, closes #1946 , refs #1855
2022-12-12 20:36:42 -08:00
Simon Willison
c6a811237c
/-/actor.json no longer requires view-instance, closes #1945
2022-12-12 20:11:51 -08:00
Simon Willison
3e6a208ba3
Rename 't' to 'r' in '_r' actor format, refs #1855
2022-12-12 19:27:34 -08:00
Simon Willison
c5d30b58a1
Implemented metadata permissions: property, closes #1636
2022-12-12 18:40:45 -08:00
Simon Willison
8bf06a76b5
register_permissions() plugin hook ( #1940 )
...
* Docs for permissions: in metadata, refs #1636
* Refactor default_permissions.py to help with implementation of #1636
* register_permissions() plugin hook, closes #1939 - also refs #1938
* Tests for register_permissions() hook, refs #1939
* Documentation for datasette.permissions, refs #1939
* permission_allowed() falls back on Permission.default, refs #1939
* Raise StartupError on duplicate permissions
* Allow dupe permisisons if exact matches
2022-12-12 18:05:54 -08:00
Simon Willison
34cffff02a
Refactor _headers() for write API tests
2022-12-07 17:39:07 -08:00
Simon Willison
dee18ed8ce
test_create_table_error_rows_twice_with_duplicates, refs #1927
2022-12-07 17:29:24 -08:00
Simon Willison
9342b60f14
test_create_table_error_if_pk_changed, refs #1927
2022-12-07 17:27:01 -08:00
Simon Willison
6b27537988
ignore/replace to create requires pk, refs #1927
2022-12-07 17:18:40 -08:00
Simon Willison
272982e8a6
/db/table/-/upsert API
...
Close #1878
Also made a few tweaks to how _r works in tokens and actors,
refs #1855 - I needed that mechanism for the tests.
2022-12-07 17:12:15 -08:00
Simon Willison
93ababe6f7
Initial attempt at insert/replace for /-/create, refs #1927
2022-12-02 23:00:18 -08:00
Simon Willison
d7e5e3c9f9
Fix for todomvc permission check
...
Refs https://github.com/simonw/todomvc-datasette/issues/2
2022-12-01 17:38:23 -08:00
Simon Willison
27efa8c381
todomvc permissions and fixed DATASETTE_SECRET for new demo
...
Refs https://github.com/simonw/todomvc-datasette/issues/2
2022-12-01 17:29:44 -08:00
Simon Willison
f3c8da7acd
MAke the sign in as root button bigger on latest.datasette.io
2022-12-01 13:29:31 -08:00
Simon Willison
7fde34cfcb
Documentation and test for UNIQUE constraint failed, refs #1924
2022-11-30 18:05:29 -08:00
Simon Willison
31d6a0bc5e
Applied Black, refs #1922
2022-11-30 15:17:39 -08:00
Simon Willison
f0fadc28dd
Access-Control-Allow-Headers: Authorization, Content-Type - refs #1922
2022-11-30 15:11:18 -08:00
Simon Willison
2cd7ecaa0a
Apply Black, refs #1922
2022-11-30 13:54:47 -08:00
Simon Willison
6bfd71f5c6
Access-Control-Allow-Methods: GET, POST, HEAD, OPTIONS - refs #1922
2022-11-30 12:25:12 -08:00
Simon Willison
4c18730e71
Update tests to export 200 for OPTIONS calls, refs #1922
2022-11-30 10:29:48 -08:00
Simon Willison
48725bb4ea
CORS headers for write APIs, refs #1922
2022-11-30 09:27:10 -08:00