sha,message,author_date,committer_date,raw_author,raw_committer,repo,author,committer de6c62ed9a30b12b22fded13d492b1f193cfc728,Load SQLite extensions inside .inspect() too,2017-11-26T22:51:42Z,2017-11-26T23:02:00Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 36701c85928b1eb785527ffd11cd941b31087ea3,datasette build now takes --load-extension,2017-11-26T23:01:53Z,2017-11-26T23:02:01Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 0120c24927af364304574ab1a58e417094e01c22,"extra_css_urls/extra_js_urls in metadata, refs #153 A mechanism in the metadata.json format for adding custom CSS and JS urls. Create a metadata.json file that looks like this: { ""extra_css_urls"": [ ""https://simonwillison.net/static/css/all.bf8cd891642c.css"" ], ""extra_js_urls"": [ ""https://code.jquery.com/jquery-3.2.1.slim.min.js"" ] } Then start datasette like this: datasette mydb.db --metadata=metadata.json The CSS and JavaScript files will be linked in the of every page. You can also specify a SRI (subresource integrity hash) for these assets: { ""extra_css_urls"": [ { ""url"": ""https://simonwillison.net/static/css/all.bf8cd891642c.css"", ""sri"": ""sha384-9qIZekWUyjCyDIf2YK1FRoKiPJq4PHt6tp/ulnuuyRBvazd0hG7pWbE99zvwSznI"" } ], ""extra_js_urls"": [ { ""url"": ""https://code.jquery.com/jquery-3.2.1.slim.min.js"", ""sri"": ""sha256-k2WSCIexGzOj3Euiig+TlR8gA0EmPjuc79OEeY5L45g="" } ] } Modern browsers will only execute the stylsheet or JavaScript if the SRI hash matches the content served. You can generate hashes using www.srihash.org",2017-11-29T02:38:15Z,2017-11-29T02:38:15Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 b67890d15d164c7affb2887e5737534628dc6227,"Auto-link column values that look like URLs Refs #153",2017-11-29T17:05:24Z,2017-11-29T17:05:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 8ab3a169d42d096f2c7979c6d3d7746618d30f0b,"CSS styling hooks as classes on the body Refs #153 Every template now gets CSS classes in the body designed to support custom styling. The index template (the top level page at /) gets this: The database template (/dbname/) gets this: The table template (/dbname/tablename) gets: The row template (/dbname/tablename/rowid) gets: The db-x and table-x classes use the database or table names themselves IF they are valid CSS identifiers. If they aren't, we strip any invalid characters out and append a 6 character md5 digest of the original name, in order to ensure that multiple tables which resolve to the same stripped character version still have different CSS classes. Some examples (extracted from the unit tests): ""simple"" => ""simple"" ""MixedCase"" => ""MixedCase"" ""-no-leading-hyphens"" => ""no-leading-hyphens-65bea6"" ""_no-leading-underscores"" => ""no-leading-underscores-b921bc"" ""no spaces"" => ""no-spaces-7088d7"" ""-"" => ""336d5e"" ""no $ characters"" => ""no--characters-59e024""",2017-11-30T07:09:54Z,2017-11-30T07:09:54Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 ffa77f62b46e1ddf2f848f5da10a1e958323a084,"Removed dependency on sanic-jinja2 I wasn't using any of the functionality it adds on top of raw Jinja2. Refs #12 and #153",2017-11-30T15:51:40Z,2017-11-30T15:51:40Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 7ff51598c468deb1d2c0d4c23a808458c9b1e3a2,"git commit -m ""datasette --template-dir=mytemplates/"" argument You can now pass an additional argument specifying a directory to look for custom templates in. Datasette will fall back on the default templates if a template is not found in that directory. Refs #12, #153",2017-11-30T16:05:01Z,2017-11-30T16:05:01Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 3cd06729f457d690603b6060dc552b535517ab09,"Ability to over-ride templates for individual tables/databases It is now possible to over-ride templates on a per-database / per-row or per- table basis. When you access e.g. /mydatabase/mytable Datasette will look for the following: - table-mydatabase-mytable.html - table.html If you provided a --template-dir argument to datasette serve it will look in that directory first. The lookup rules are as follows: Index page (/): index.html Database page (/mydatabase): database-mydatabase.html database.html Table page (/mydatabase/mytable): table-mydatabase-mytable.html table.html Row page (/mydatabase/mytable/id): row-mydatabase-mytable.html row.html If a table name has spaces or other unexpected characters in it, the template filename will follow the same rules as our custom CSS classes introduced in 8ab3a169d42d096f - for example, a table called ""Food Trucks"" will attempt to load the following templates: table-mydatabase-Food-Trucks-399138.html table.html It is possible to extend the default templates using Jinja template inheritance. If you want to customize EVERY row template with some additional content you can do so by creating a row.html template like this: {% extends ""default:row.html"" %} {% block content %}

EXTRA HTML AT THE TOP OF THE CONTENT BLOCK

This line renders the original block:

{{ super() }} {% endblock %} Closes #12, refs #153",2017-11-30T16:30:10Z,2017-11-30T16:38:16Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 cf46b86cf736aadd5147f85bfd6ff44c29655fde,Switch to sphinx_rtd_theme,2017-11-30T16:56:20Z,2017-11-30T16:56:20Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 601934936c9e6e0007aca13547b73c3b36343f7f,"Documentation for custom CSS/JavaScript/Templates Will go live at http://datasette.readthedocs.io/en/latest/custom_templates.html Closes #156",2017-11-30T17:09:48Z,2017-11-30T17:09:48Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 1feb5735dad538312fac8b76705c05516250967b,Moved getting started into separate docs page,2017-11-30T18:27:00Z,2017-11-30T18:27:00Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 1ecac1a4389b85f7acfad513bf6ab20899862d0b,Fix display of select boxes in Firefox,2017-12-02T20:53:08Z,2017-12-02T20:53:08Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 e981ac7d4d1e1603257369eb5edba0fc4fdf5ae9,"--static option for datasette serve You can now tell Datasette to serve static files from a specific location at a specific mountpoint. For example: datasette serve mydb.db --static extra-css:/tmp/static/css Now if you visit this URL: http://localhost:8001/extra-css/blah.css The following file will be served: /tmp/static/css/blah.css Refs #160",2017-12-03T16:33:36Z,2017-12-03T16:33:36Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 0cfd7ce59d9018eb07af8f9e20f7d04308c9d01d,"Allow WITH query (previously we required SELECT at start) Fixes #161",2017-12-04T04:51:31Z,2017-12-04T04:51:31Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 a743cdeafca0e5d011c282a53baf753c85d01516,"Canned query support + database/query template refactor Named canned queries can now be defined in metadata.json like this: { ""databases"": { ""timezones"": { ""queries"": { ""timezone_for_point"": ""select tzid from timezones ..."" } } } } These will be shown in a new ""Queries"" section beneath ""Views"" on the database page. As part of this, I refactored the logic for the database index page. It used to combine the functionality for listing available tables and the functionality for executing custom SQL queries in a single template and view. I have split that template out into database.html and query.html and reworked the view to more clearly separate the custom SQL executing code. Refs #20",2017-12-05T16:17:02Z,2017-12-05T16:17:02Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 b7b590b4149563ec6572f577632d7471b84dcb94,"Docs for query.html CSS/template, refs #20",2017-12-05T16:35:14Z,2017-12-05T16:35:14Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 7a4da7e5aedff3f61648d5530c4dc34de011ea8a,"Documentation for custom SQL queries http://datasette.readthedocs.io/en/latest/sql_queries.html Closes #20",2017-12-05T17:43:59Z,2017-12-05T17:43:59Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 f2dece01dba6355a91214ca163561a451941499f,"Documented _sql_time_limit_ms querystring argument Closes #163",2017-12-06T15:06:56Z,2017-12-06T15:06:56Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 f9c32e717f67b55e5d51bb896adc2dcec4489c2d,Linked to csvs-to-sqlite,2017-12-06T15:09:56Z,2017-12-06T15:09:56Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 67ad77a307c7c264c68d768fa8290997e3b75e77,Re-ordered docs index page,2017-12-06T18:27:50Z,2017-12-06T18:27:50Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 709f4f2798d0490ae048094536bed7e973ea29f4,"Fixed bug with detecting FTS tables Closes #135",2017-12-07T04:54:25Z,2017-12-07T04:54:37Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 52a5e95d21c9b2b7b50f5bc423e3746ae0538734,"Fixed bug with filter columns Closes #162",2017-12-07T05:05:53Z,2017-12-07T05:05:53Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 198b8b2955b9d8a8a80ce850a92a99426c5f161f,"Fixed row page for tables with a primary key Closes #152",2017-12-07T05:23:13Z,2017-12-07T05:23:13Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 a2b954e82818d5aa4b4c313d9a687d6a7bdd04b5,Fixed #155,2017-12-07T05:39:47Z,2017-12-07T05:39:47Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 afbda9e210b6e5eae10a537c121cbb5e92cc8502,"All extra_head blocks now call super This means you can provide a custom base.html template that populates extra_head and any of the default child templates will still render content you included in that block. Refs #158",2017-12-07T05:58:42Z,2017-12-07T05:58:42Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 7e1ba161ec87b02cf7665a73188258f14036f892,"Ability to easily customize _rows_and_columns.html per database table Also added documentation for this. Refs #158, Closes #159.",2017-12-07T06:11:22Z,2017-12-07T06:11:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 32cf5a4a72c1c8d46dd302566fdcbf4793f2f927,"New datasette skeleton command for generating metadata.json Closes #164",2017-12-07T06:20:37Z,2017-12-07T06:20:37Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 515eaa8ccba0603de5b14679b74402f3ddf02bd7,--reload now reloads on metadata changes too,2017-12-07T16:42:28Z,2017-12-07T16:42:28Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 80bf3afa43e3cb396c7a7c9b168eedbc6fe0fa15,"metadata.json support for per-table/per-database metadata Also added support for descriptions and HTML descriptions. Here's an example metadata.json file illustrating custom per-database and per- table metadata: { ""title"": ""Overall datasette title"", ""description_html"": ""This is a description with HTML."", ""databases"": { ""db1"": { ""title"": ""First database"", ""description"": ""This is a string description & has no HTML"", ""license_url"": ""http://example.com/"", ""license"": ""The example license"", ""queries"": { ""canned_query"": ""select * from table1 limit 3;"" }, ""tables"": { ""table1"": { ""title"": ""Custom title for table1"", ""description"": ""Tables can have descriptions too"", ""source"": ""This has a custom source"", ""source_url"": ""http://example.com/"" } } } } } Closes #165, Refs #164",2017-12-07T16:42:54Z,2017-12-07T16:47:07Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 05399058062ba6df467c8745b87ece5f6951b39f,"Renamed ""datasette build"" command to ""datasette inspect"" Closes #130",2017-12-07T16:57:31Z,2017-12-07T16:57:31Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 9af2964f6fd4ae876ef8ecd2c14c2ffa61542fdb,"Documentation for metadata.json and ""datasette skeleton"" command http://datasette.readthedocs.io/en/latest/metadata.html Closes #166",2017-12-07T17:19:35Z,2017-12-07T17:19:35Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 cbfd6b745eabf51295e5a5e0ea57a0f93d63b37d,"Publish should now work if /tmp is on different device Fixes #141",2017-12-08T16:06:24Z,2017-12-08T16:06:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 61e3c5a1e904a6e1cbee86ba1494b5cb4b5820cf,"Removed rogue print statement, refs #141",2017-12-08T16:08:00Z,2017-12-08T16:08:00Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 446f4b832272b2286f6f65af19714eb64afb7aa6,"Upgrade to Sanic 0.7.0 (#168) https://github.com/channelcat/sanic/releases/tag/0.7.0",2017-12-09T03:00:33Z,2017-12-09T03:00:33Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 16dfccb1c569359fa2a03639ada233e7661156af,"Include sha1 hash in /static/app.css URL This means that when Datasette's CSS changes the new CSS will be loaded even though browsers may have cached the previous version. Closes #154",2017-12-09T03:10:09Z,2017-12-09T03:10:09Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 2cc14a236c601ee2a6b81d8580e70989574baec9,"Ditched short form options for --static and --template-dir The -t clashes with the package --tag option",2017-12-09T03:47:50Z,2017-12-09T03:47:50Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 c195ee4d46f2577b1943836a8270d84c8341d138,"package and publish commands now accept --static and --template-dir Example usage: datasette package --static css:extra-css/ --static js:extra-js/ \ sf-trees.db --template-dir templates/ --tag sf-trees --branch master This creates a local Docker image that includes copies of the templates/, extra-css/ and extra-js/ directories. You can then run it like this: docker run -p 8001:8001 sf-trees For publishing to Zeit now: datasette publish now --static css:extra-css/ --static js:extra-js/ \ sf-trees.db --template-dir templates/ --name sf-trees --branch master Example: https://sf-trees-wbihszoazc.now.sh/sf-trees-02c8ef1/Street_Tree_List For publishing to Heroku: datasette publish heroku --static css:extra-css/ --static js:extra-js/ \ sf-trees.db --template-dir templates/ --branch master Closes #157, #160",2017-12-09T18:19:39Z,2017-12-09T18:28:49Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 3459ab91665d956ff6a25f8e94dcb9c325dd10e5,Formatting fixes,2017-12-09T18:33:14Z,2017-12-09T18:33:14Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 b01304d7070df5a02870ebd204ea093f3742029e,Updated tests I broke in c195ee4,2017-12-09T18:38:04Z,2017-12-09T18:39:19Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 1c0d93c39b194103e729aed2496d2d24f5ad4850,Fix Python 3.5 test failure,2017-12-09T18:39:16Z,2017-12-09T18:39:19Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 06645f2e267b16d0c193bb1d1b7ca0cb67227c43,Formatting tweak,2017-12-09T18:41:20Z,2017-12-09T18:41:20Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 6bdfcf60760c27e29ff34692d06e62b36aeecc56,"Added Heroku to README, updated --help output examples Refs #157",2017-12-09T18:50:08Z,2017-12-09T18:50:08Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 3c9f889715249d7b0b3bc014529073066a1d478d,"Custom templates for canned queries Closes #170",2017-12-09T21:34:46Z,2017-12-09T21:34:46Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 7126d08f10d637c9f1af346324f6f7c0fece8be4,"HTML comment showing which templates were considered for a page Closes #171",2017-12-09T21:47:32Z,2017-12-09T21:47:32Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 3f2fed109395179de4145ca1a2675360f1717225,"Fixed bug with HTML labels loop.counter is incorrect - loop.index outputs the correct loop value.",2017-12-09T21:57:36Z,2017-12-09T21:57:36Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 7a7e4b2ed8c76c6d002a9d707dbc840f6a2abf7f,"Started unit tests for row/table HTML pages Refs #167 Thanks to the new tests, spotted and fixed a bug where pages that were supposed to have 100 things on them were actually displaying 101.",2017-12-09T23:32:54Z,2017-12-09T23:32:54Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 794c3bfcfc03087bbebffb7b228e81aaa8b72183,"Cleaned up row/column display logic, fixed bug Closes #167",2017-12-10T00:59:25Z,2017-12-10T00:59:25Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 7db790fbf999d83275a5bde4563d935a58a3d787,"Release notes for 0.14 Also updated ""datasette serve"" help in getting started docs.",2017-12-10T01:24:57Z,2017-12-10T01:26:32Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 ae940068096ad9ff2f27f4e1784c87788d53eb3d,"No longer include database hash in hyperlinks It was making the unit tests unreliable. Also we do not do that for foreign key links.",2017-12-10T01:31:08Z,2017-12-10T01:31:08Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 2edc652df6d786e4f2c3f073e3567002d248be09,Releasing v0.14,2017-12-10T01:33:24Z,2017-12-10T01:33:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 68a34bc222af586c75daa5166c937f3f26cfefac,"Deploy to Heroku with Python 3.6.3 Heroku deploys are currently showing the following warning: The latest version of Python 3 is python-3.6.3 (you are using python-3.6.2, which is unsupported). We recommend upgrading by specifying the latest version (python-3.6.3).",2017-12-10T02:01:17Z,2017-12-10T02:01:17Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 702829f808994d49f11612b35035cfa6842cd91b,Added Datasette 0.14: customization edition to news,2017-12-10T02:10:30Z,2017-12-10T02:10:30Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 4f08fc092f59b434c11f77b6fb2d29b3255227e5,Updated news,2017-12-12T16:52:19Z,2017-12-12T16:52:19Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 1aad396c9ef46837b224607086c09f48ac921165,"Fixed bug with .json path regular expression I had a table called ""geojson"" and it caused an exception because the regex was matching .json and not \.json",2017-12-13T05:32:43Z,2017-12-13T05:36:03Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 306e1c6ac4f00cc25d676a6ee660938f5b27427c,Broke up test_app into test_api and test_html,2017-12-15T12:04:17Z,2017-12-15T12:08:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 e63f432fe521eb8e196049f86742dc9e20f4dc35,Mention Heroku in docs index page,2018-01-10T04:46:34Z,2018-01-10T04:46:34Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 cac32b0ec4081c00bb6eb9122d61dccfae729199,Initial documentation for pagination,2018-01-10T04:47:03Z,2018-01-10T04:47:03Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 56623e48da5412b25fb39cc26b9c743b684dd968,News: Datasette Publish,2018-01-17T15:50:10Z,2018-01-17T15:50:10Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 012fc7c5cd3e9160c9a4c19cc964253e97fb054a,Fix for FTS virtual table counting error,2018-03-21T01:26:04Z,2018-03-21T01:26:04Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 89d9fbb91bfc0dd9091b34dbf3cf540ab849cc44,"Database/Table views inherit source/license/source_url/license_url metadata If you set the source_url/license_url/source/license fields in your root metadata those values will now be inherited all the way down to the database and table templates. The title/description are NOT inherited. Also added unit tests for the HTML generated by the metadata. Refs #185",2018-03-27T16:18:32Z,2018-03-27T16:18:32Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 31f63d1672a9214962cd7335a2daeabab7c0000e,"Fixed bug with keyset pagination over compound primary keys Closes #190",2018-03-30T05:10:09Z,2018-03-30T05:11:02Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 7365c3f51cedffade3428a677e5baeab2f401138,"Compound primary key _next= now plays well with extra filters Closes #190",2018-03-30T06:26:22Z,2018-03-30T06:26:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 0e5f51adfeff24a120bbdf0e5ac5669b18124400,Three more news items,2018-03-30T07:03:45Z,2018-03-30T07:03:45Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 8f0d44d6468a96e9b78487c36da20ddc2ae9d937,"escape_sqlite_table_name => escape_sqlite, handles reserved words It can be used for column names as well as table names. Reserved word list from https://www.sqlite.org/lang_keywords.html",2018-04-03T13:39:50Z,2018-04-03T13:40:49Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 dd0566ff8eda7fa2f0d92e51809581fae62cffed,"Utility for writing test database fixtures to a .db file python tests/fixtures.py /tmp/hello.db This is useful for making a SQLite database of the test fixtures for interactive exploration.",2018-04-03T13:46:11Z,2018-04-03T13:46:11Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 0abd3abacb309a2bd5913a7a2df4e9256585b1bb,"New ?_shape=objects/object/lists param for JSON API (#192) New _shape= parameter replacing old .jsono extension Now instead of this: /database/table.jsono We use the _shape parameter like this: /database/table.json?_shape=objects Also introduced a new _shape called 'object' which looks like this: /database/table.json?_shape=object Returning an object for the rows key: ... ""rows"": { ""pk1"": { ... }, ""pk2"": { ... } } Refs #122",2018-04-03T14:52:54Z,2018-04-03T14:52:54Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 b2188f044265c95f7e54860e28107c17d2a6ed2e,Use .custom_sql() for _group_count implementation (refs #150),2018-04-08T15:42:56Z,2018-04-08T15:43:45Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 29f9a29250169cdb564020109f76e0f4b52afa5d,Total row count now correct even if _next= applied,2018-04-08T23:13:52Z,2018-04-09T05:10:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 f3a3820ff5c5ba9b4af102e65ed1f084b1fe704d,"_sort and _sort_desc parameters for table views Allows for paginated sorted results based on a specified column. Refs #189",2018-04-09T00:06:10Z,2018-04-09T05:10:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 9f2ec39fbc5481b0fa6585ccdd159ba9fd989bcc,"Current sort order now reflected in human filter description Plus renamed human_description to human_description_en Refs #189",2018-04-09T01:01:23Z,2018-04-09T05:10:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 747a801b50487cd4cc20856d44252ac0a6cb346f,Column headers now link to sort/desc sort - refs #189,2018-04-09T02:08:28Z,2018-04-09T05:10:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 bfb19e3a178ba9b2dab2f90f90a398b54a73d34e,Correctly escape sort-by columns in SQL (refs #189),2018-04-09T02:25:14Z,2018-04-09T05:10:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 a87df963a08054ad7a652f0218e70ddb7f9cc8bd,"Error handling for ?_sort and ?_sort_desc Verifies that they match an existing column, and only one or the other option is provided - refs #189 Eses a new DatasetteError exception that closes #193",2018-04-09T04:07:31Z,2018-04-09T05:10:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 b13f0986f26d88938519b07871c961c0b5a97802,"New sortable_columns option in metadata.json to control sort options You can now explicitly set which columns in a table can be used for sorting using the _sort and _sort_desc arguments using metadata.json: { ""databases"": { ""database1"": { ""tables"": { ""example_table"": { ""sortable_columns"": [ ""height"", ""weight"" ] } } } } } Refs #189",2018-04-09T04:58:25Z,2018-04-09T05:10:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 23e0fdb0f3196ffa4d8bc4944c8bc9cb0f89129b,"Removed unnecessary enumerate template helper I made this obsolete in d1756d773685ca4f9c5b57fb40e1aa743bc95525 Refs #189",2018-04-09T05:02:19Z,2018-04-09T05:10:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 c1d37fdf2be84fb07155bb1b1f61057444b03300,"Fixed bug with human filter description, refs #189 We were showing this: 201 rows where sorted by sortable_with_nulls We now show this: 201 rows sorted by sortable_with_nulls",2018-04-09T05:07:18Z,2018-04-09T05:10:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 a290f28caae61b47e76e825c06984f22fc41a694,"table_rows => table_rows_count, filtered_table_rows => filtered_table_rows_count Renamed properties. Closes #194",2018-04-09T05:24:24Z,2018-04-09T05:24:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 7706fe0c67aba5cfe905c7906cae9e0c43cd75b2,Releasing v0.15,2018-04-09T15:48:24Z,2018-04-09T15:48:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 67982b6ecb89485ce26d684f2d038aad4d954d7c,Added Datasette 0.15 to news,2018-04-09T16:01:03Z,2018-04-09T16:01:03Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 57b19f09d1ee24b7369ceca8937ce67df2ca1abc,"Ability to sort using form fields (for mobile portrait mode) We now display sort options as a select box plus a descending checkbox, which means you can apply sort orders even in portrait mode on a mobile phone where the column headers are hidden. Closes #199",2018-04-10T00:30:44Z,2018-04-10T00:34:32Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 46b237c29a195025de81dcd920c6893181229dc5,"datasette inspect now finds primary_keys Closes #195",2018-04-10T00:54:12Z,2018-04-10T00:54:12Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 bfb4e45a7bcb880758dbc18f66258de26c1d1904,Datasette Publish in readme,2018-04-11T14:43:28Z,2018-04-11T14:43:28Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 cca8bf36fed9f2d0cedcfa2691a95b7965b7573c,"Allow explain select / explain query plan select Closes #201",2018-04-11T22:39:43Z,2018-04-12T21:32:47Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 ad6142b67c8f137b001770339510979c5df43d85,long_description in markdown for the new PyPI,2018-04-13T16:03:09Z,2018-04-13T16:04:18Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 9f28bbe43dc277a3963a12aaae37b5ee3c277207,"Better mechanism for handling errors; 404s for missing table/database New error mechanism closes #193 404s for missing tables/databesse closes #184 Makes pull request #202 unnecessary.",2018-04-13T18:17:22Z,2018-04-13T18:17:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 6e16ed2a632b488a5ca21185c0147b4bca16336b,Removed pathlib dependency (incompatible with Python 3.5),2018-04-13T18:22:15Z,2018-04-13T18:22:15Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 b6539ff04502536bd1fa96e3b1430bdafc456826,Releasing v0.16,2018-04-13T18:28:55Z,2018-04-13T18:28:55Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 fb988ace7c7e2bee5ac142a0eab22431d0675a77,"Release 0.17 to fix issues with PyPI See https://twitter.com/simonw/status/984862976447414272",2018-04-13T19:04:33Z,2018-04-13T19:04:40Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 d72201e883c0612d14dfb8ffdd61aa0fe223d94a,"Added unit test for foreign key links in HTML Needed to add a further unit test for #207",2018-04-14T14:55:27Z,2018-04-14T14:55:27Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 6b15a53cd3cd40880a5e2d38827d5fac10e4bb5f,Unit test for unlabelled foreign keys from #207,2018-04-14T15:00:54Z,2018-04-14T15:00:54Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 dd4491dd8112d70d96d73f8f1d12b58cb42fe1bd,Update number of expected tables,2018-04-14T15:03:41Z,2018-04-14T15:16:54Z,2946d096d0cdefdc017559e6b57e87658736e843,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 c857608738d6b6c3e4f3248304a22f8b2648dd3e,"Merge ""Support filtering with units"" from #205",2018-04-14T15:12:34Z,2018-04-14T15:17:09Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 932e0a3f91e4cee92b0e30c528300ec1d348d26c,"Don't attempt to deploy new tags to PyPI This isn't working through Travis at the moment, so I'm disabling it and switching back to manual deploys.",2018-04-14T15:21:37Z,2018-04-14T15:21:37Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 43ae15c0d14b3e968e8d5bfef72ac0c39783c3a2,"Releasing v0.18 - support for units! Refs #203",2018-04-14T15:36:10Z,2018-04-14T15:36:10Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 8d394586f55bc4b8ab70476968d08fb6ec8339e5,Added 0.18 to news,2018-04-14T16:04:38Z,2018-04-14T16:04:38Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 33c7c53ff87c25445c68088ede49d062d9c31fe8,"Start of the plugin system, based on pluggy (#210) Uses https://pluggy.readthedocs.io/ originally created for the py.test project We're starting with two plugin hooks: prepare_connection(conn) This is called when a new SQLite connection is created. It can be used to register custom SQL functions. prepare_jinja2_environment(env) This is called with the Jinja2 environment. It can be used to register custom template tags and filters. An example plugin which uses these two hooks can be found at https://github.com/simonw/datasette-plugin-demos or installed using `pip install datasette-plugin-demos` Refs #14",2018-04-16T00:56:15Z,2018-04-16T00:56:15Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 92396ae5bacedfcb3d7c81319ccdd04483fd7fd4,Better fix for setup.py version,2018-04-16T04:28:24Z,2018-04-16T04:38:04Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 b2955d9065ea019500c7d072bcd9d49d1967f051,"New --plugins-dir=plugins/ option (#212) * New --plugins-dir=plugins/ option New option causing Datasette to load and evaluate all of the Python files in the specified directory and register any plugins that are defined in those files. This new option is available for the following commands: datasette serve mydb.db --plugins-dir=plugins/ datasette publish now/heroku mydb.db --plugins-dir=plugins/ datasette package mydb.db --plugins-dir=plugins/ * Unit tests for --plugins-dir=plugins/ Closes #211",2018-04-16T05:22:01Z,2018-04-16T05:22:01Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 904f1c75a3c17671d25c53b91e177c249d14ab3b,"Initial documentation for plugins, closes #213 https://datasette.readthedocs.io/en/latest/plugins.html",2018-04-16T15:12:09Z,2018-04-16T15:12:09Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 10a34f995c70daa37a8a2aa02c3135a4b023a24c,Removed rogue print() call,2018-04-16T15:38:09Z,2018-04-16T15:38:09Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 1652a9707e325b387ab9550e78eefd48029be44f,Apache 2.0 license badge,2018-04-16T23:10:12Z,2018-04-16T23:10:12Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447