Simon Willison
ad9de774f7
Added missing file, refs #438
2019-05-01 22:10:23 -07:00
Simon Willison
f553a67021
Don't load setuptools plugins during test runs
...
Uses pattern from https://docs.pytest.org/en/latest/example/simple.html#detect-if-running-from-within-a-pytest-run
Closes #438
2019-05-01 22:09:03 -07:00
Simon Willison
033cf0bcbb
DatabaseView no longer uses .inspect(), closes #420
2019-05-01 18:13:26 -07:00
Simon Willison
50d2d1aac9
Fixed bug where metadata.json hidden tables were ignored
2019-05-01 17:54:48 -07:00
Simon Willison
e7151ccccf
Index page no longer uses inspect data - refs #420
...
Also introduced a mechanism whereby table counts are calculated against a time limit
but immutable databases have their table counts calculated on server startup.
2019-05-01 17:39:39 -07:00
Simon Willison
669fa21a71
Include request duration in traces
2019-05-01 16:27:14 -07:00
Russ Garrett
cf406c0754
New plugin hook: register_output_renderer hook ( #441 )
...
Thanks @russss!
* Add register_output_renderer hook
This changeset refactors out the JSON renderer and then adds a hook and
dispatcher system to allow custom output renderers to be registered.
The CSV output renderer is untouched because supporting streaming
renderers through this system would be significantly more complex, and
probably not worthwhile.
We can't simply allow hooks to be called at request time because we need
a list of supported file extensions when the request is being routed in
order to resolve ambiguous database/table names. So, renderers need to
be registered at startup.
I've tried to make this API independent of Sanic's request/response
objects so that this can remain stable during the switch to ASGI. I'm
using dictionaries to keep it simple and to make adding additional
options in the future easy.
Fixes #440
2019-05-01 16:01:56 -07:00
Simon Willison
bac4e01f40
Ensure sqlite_timelimit correctly clears handler
...
If an error occurred inside the block the progress handler (used to
enforce a time limit) was not being correctly cleared, resulting in
timeout errors potentially occurring during subsequent SQL queries.
The fix is described here: https://docs.python.org/3/library/contextlib.html#contextlib.contextmanager
2019-04-21 12:02:24 -07:00
Simon Willison
11b352b4d5
Fix for Python 3.5, refs #435
2019-04-21 11:20:20 -07:00
Simon Willison
9d73e3c8bd
Note that trace data format is very likely to change, refs #435
2019-04-21 10:53:28 -07:00
Simon Willison
e4e73a537a
Test for ?_trace=1, refs #435
2019-04-21 10:46:56 -07:00
Simon Willison
58a862cee4
?_trace=1 now adds SQL trace info to JSON/HTML response
...
Also added documentation for it. Refs #435
2019-04-21 10:41:16 -07:00
Simon Willison
7d01ca34a1
Added ?_trace=1 option to trace SQL
...
Currently just dumps all SQL statements out on the console.
2019-04-20 22:34:34 -07:00
Simon Willison
31f36e1b97
Added some guidelines
...
Mainly to remind me that master needs to be releasable at all times!
2019-04-20 11:32:40 -07:00
Simon Willison
2b11948d7c
New ConnectedDatabase.mtime_ns property
...
I plan to use this for some clever table count caching tricks
2019-04-20 10:50:45 -07:00
Simon Willison
9c77e6e355
Support multiple filters of the same type
...
Closes #288
2019-04-15 16:44:17 -07:00
Simon Willison
583b22aa28
New ?column__date=yyyy-mm-dd filter
2019-04-15 15:54:54 -07:00
Simon Willison
1c6649b19b
New colname__in=x,y,z filter, closes #433
2019-04-15 15:43:22 -07:00
Simon Willison
2c19a27d15
Documentation for filters, plus new documentation unit test
...
https://simonwillison.net/2018/Jul/28/documentation-unit-tests/
2019-04-15 15:41:11 -07:00
Simon Willison
6da567dda9
Extract and refactor filters into filters.py
...
This will help in implementing __in as a filter, refs #433
2019-04-15 14:51:20 -07:00
Simon Willison
9dc7a1824b
Slightly more interesting example link
2019-04-13 15:49:07 -07:00
Simon Willison
d4bfb8461c
Removed accidental extra default plugins module
2019-04-13 12:33:23 -07:00
Simon Willison
d1075b8259
Cleaned up pylint warnings
2019-04-13 12:20:10 -07:00
Simon Willison
13ee3c222f
Moved BaseView.absolute_url() to Datasette
2019-04-13 12:16:05 -07:00
Simon Willison
274ef43bb7
Moved expand_foreign_keys() from TableView to Datasette
2019-04-13 11:48:00 -07:00
Simon Willison
f2c767c222
Fixed broken link in documentation
2019-04-12 18:57:43 -07:00
Simon Willison
bc6a9b4564
?_where= parameter on table views, closes #429
...
From pull request #430
2019-04-12 18:37:22 -07:00
Simon Willison
e11cb4c664
Persist show/hide state better, closes #425
2019-04-11 22:00:47 -07:00
Simon Willison
db74cf0144
?_fts_table= and ?_fts_pk= arguments, closes #428
2019-04-11 21:21:17 -07:00
Simon Willison
9cd3b44277
Upgrade to Jinja2==2.10.1 ( #426 )
2019-04-10 16:13:30 -07:00
Simon Willison
78e45ead4d
New ?tags__arraycontains=tag lookup against JSON fields
...
Part one of supporting facet-by-JSON-array, refs #359
2019-04-10 08:27:52 -07:00
Simon Willison
3a208a41d4
TableView.data() no longer uses .inspect, refs #420
...
BUT... it does a count(*) against the whole table which may take unbounded time.
Fixing this is part of #422
2019-04-06 20:47:10 -07:00
Simon Willison
36bd6558b0
expandable_columns() no longer uses inspect, refs #420
2019-04-06 20:46:08 -07:00
Simon Willison
db02311ebf
foreign_key_tables no longer uses inspect, refs #420
2019-04-06 20:23:30 -07:00
Simon Willison
f23120a964
RowView.data() no longer uses inspect refs #420
2019-04-06 20:17:47 -07:00
Simon Willison
c882e9262f
display_columns_and_rows() no longer uses inspect, refs #420
2019-04-06 20:11:08 -07:00
Simon Willison
53bf875483
expand_foreign_keys() no longer uses inspect, refs #420
2019-04-06 19:56:07 -07:00
Simon Willison
97331f3435
sortable_columns_for_table() no longer uses inspect()
...
Refs #420
2019-04-06 18:58:51 -07:00
Simon Willison
d8851e0011
Removed rogue print()
2019-04-06 18:54:51 -07:00
Simon Willison
468c6fd953
DatabaseDownload no longer uses .inspect(), refs #420
2019-03-31 19:04:17 -07:00
Simon Willison
29a3896fe1
.database_url(database) no longer needs inspect, refs #420
2019-03-31 16:55:38 -07:00
Simon Willison
7d0f668556
.resolve_db_name() and .execute() work without inspect
...
Refs #420
2019-03-31 16:51:52 -07:00
Simon Willison
0209a0a344
table_exists() now uses async SQL, refs #420
2019-03-31 11:02:22 -07:00
Simon Willison
82fec60481
Fix for TypeError
...
File "../datasette/app.py", line 138, in __init__
self.files = files + immutables
TypeError: can only concatenate tuple (not "list") to tuple
2019-03-17 16:36:35 -07:00
Simon Willison
47032636b5
'datasette serve -i immutable.db' option, refs #419
2019-03-17 16:25:15 -07:00
Simon Willison
6f6d0ff2b4
URL hashing is now off by default - closes #418
...
Prior to this commit Datasette would calculate the content hash of every
database and redirect to a URL containing that hash, like so:
https://v0-27.datasette.io/fixtures => https://v0-27.datasette.io/fixtures-dd88475
This assumed that all databases were opened in immutable mode and were not
expected to change.
This will be changing as a result of #419 - so this commit takes the first step
in implementing that change by changing this default behaviour. Datasette will
now only redirect hash-free URLs under two circumstances:
* The new `hash_urls` config option is set to true (it defaults to false).
* The user passes `?_hash=1` in the URL
2019-03-17 15:55:04 -07:00
Simon Willison
afe9aa3ae0
show/hide link for SQL on custom query page
...
Closes #415
2019-03-14 22:22:35 -07:00
joelondon
9e8c36793b
Update spatialite.rst ( #413 )
...
a line of sql added to create the idx_<table_name> in the python recipe
2019-03-14 22:06:45 -07:00
Simon Willison
2855667908
Fix for test failure with Click 7.0
2019-03-14 22:00:13 -07:00
Simon Willison
b3e7393326
Allow more recent versions of Click
...
Closes #414
2019-03-14 21:41:43 -07:00