kopia lustrzana https://github.com/simonw/datasette
rodzic
e7c769ef30
commit
ba9bfa5831
|
@ -15,6 +15,7 @@ Some examples: https://github.com/simonw/datasette/wiki/Datasettes
|
||||||
|
|
||||||
## News
|
## News
|
||||||
|
|
||||||
|
* 16th April 2018: [Datasette 0.19: plugins preview](https://github.com/simonw/datasette/releases/tag/0.19)
|
||||||
* 14th April 2018: [Datasette 0.18: units](https://github.com/simonw/datasette/releases/tag/0.18)
|
* 14th April 2018: [Datasette 0.18: units](https://github.com/simonw/datasette/releases/tag/0.18)
|
||||||
* 9th April 2018: [Datasette 0.15: sort by column](https://github.com/simonw/datasette/releases/tag/0.15)
|
* 9th April 2018: [Datasette 0.15: sort by column](https://github.com/simonw/datasette/releases/tag/0.15)
|
||||||
* 28th March 2018: [Baltimore Sun Public Salary Records](https://simonwillison.net/2018/Mar/28/datasette-in-the-wild/) - a data journalism project from the Baltimore Sun powered by Datasette - source code [is available here](https://github.com/baltimore-sun-data/salaries-datasette)
|
* 28th March 2018: [Baltimore Sun Public Salary Records](https://simonwillison.net/2018/Mar/28/datasette-in-the-wild/) - a data journalism project from the Baltimore Sun powered by Datasette - source code [is available here](https://github.com/baltimore-sun-data/salaries-datasette)
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
__version_info__ = (0, 18)
|
__version_info__ = (0, 19)
|
||||||
__version__ = '.'.join(map(str, __version_info__))
|
__version__ = '.'.join(map(str, __version_info__))
|
||||||
|
|
|
@ -1,6 +1,61 @@
|
||||||
Changelog
|
Changelog
|
||||||
=========
|
=========
|
||||||
|
|
||||||
|
0.19 (2018-04-16)
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
This is the first preview of the new Datasette plugins mechanism. Only two
|
||||||
|
plugin hooks are available so far - for custom SQL functions and custom template
|
||||||
|
filters. There's plenty more to come - read `the documentation
|
||||||
|
<https://datasette.readthedocs.io/en/latest/plugins.html>`_ and get involved in
|
||||||
|
`the tracking ticket <https://github.com/simonw/datasette/issues/14>`_ if you
|
||||||
|
have feedback on the direction so far.
|
||||||
|
|
||||||
|
- Fix for ``_sort_desc=sortable_with_nulls`` test, refs `#216 <https://github.com/simonw/datasette/issues/216>`_
|
||||||
|
|
||||||
|
- Fixed `#216 <https://github.com/simonw/datasette/issues/216>`_ - paginate correctly when sorting by nullable column
|
||||||
|
|
||||||
|
- Initial documentation for plugins, closes `#213 <https://github.com/simonw/datasette/issues/213>`_
|
||||||
|
|
||||||
|
https://datasette.readthedocs.io/en/latest/plugins.html
|
||||||
|
|
||||||
|
- New ``--plugins-dir=plugins/`` option (`#212 <https://github.com/simonw/datasette/issues/212>`_)
|
||||||
|
|
||||||
|
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/
|
||||||
|
|
||||||
|
- Start of the plugin system, based on pluggy (`#210 <https://github.com/simonw/datasette/issues/14>`_)
|
||||||
|
|
||||||
|
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 <https://github.com/simonw/datasette/issues/14>`_
|
||||||
|
|
||||||
|
- Return HTTP 405 on InvalidUsage rather than 500. [Russ Garrett]
|
||||||
|
|
||||||
|
This also stops it filling up the logs. This happens for HEAD requests
|
||||||
|
at the moment - which perhaps should be handled better, but that's a
|
||||||
|
different issue.
|
||||||
|
|
||||||
|
|
||||||
0.18 (2018-04-14)
|
0.18 (2018-04-14)
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,8 @@ Plugins
|
||||||
|
|
||||||
Datasette's plugin system is currently under active development. It allows
|
Datasette's plugin system is currently under active development. It allows
|
||||||
additional features to be implemented as Python code (or, soon, JavaScript)
|
additional features to be implemented as Python code (or, soon, JavaScript)
|
||||||
which can be wrapped up in a separate Python package.
|
which can be wrapped up in a separate Python package. The underlying mechanism
|
||||||
|
uses `pluggy <https://pluggy.readthedocs.io/>`_.
|
||||||
|
|
||||||
You can follow the development of plugins in `issue #14 <https://github.com/simonw/datasette/issues/14>`_.
|
You can follow the development of plugins in `issue #14 <https://github.com/simonw/datasette/issues/14>`_.
|
||||||
|
|
||||||
|
@ -110,7 +111,6 @@ To learn how to upload your plugin to `PyPI <https://pypi.org/>`_ for use by
|
||||||
other people, read the PyPA guide to `Packaging and distributing projects
|
other people, read the PyPA guide to `Packaging and distributing projects
|
||||||
<https://packaging.python.org/tutorials/distributing-packages/>`_.
|
<https://packaging.python.org/tutorials/distributing-packages/>`_.
|
||||||
|
|
||||||
|
|
||||||
Plugin hooks
|
Plugin hooks
|
||||||
------------
|
------------
|
||||||
|
|
||||||
|
@ -154,3 +154,7 @@ example:
|
||||||
@hookimpl
|
@hookimpl
|
||||||
def prepare_jinja2_environment(env):
|
def prepare_jinja2_environment(env):
|
||||||
env.filters['uppercase'] = lambda u: u.upper()
|
env.filters['uppercase'] = lambda u: u.upper()
|
||||||
|
|
||||||
|
You can now use this filter in your custom templates like so::
|
||||||
|
|
||||||
|
Table name: {{ table|uppercase }}
|
||||||
|
|
Ładowanie…
Reference in New Issue