TODO: Additions from recent user feedback and development.
This commit is contained in:
parent
ceba336665
commit
73b50097a2
1 changed files with 53 additions and 3 deletions
56
TODO.rst
56
TODO.rst
|
@ -1,11 +1,61 @@
|
||||||
TODO
|
TODO
|
||||||
====
|
====
|
||||||
|
|
||||||
In roughly priority order:
|
Paying down debt
|
||||||
|
----------------
|
||||||
|
|
||||||
|
* Add documentation for the changes since ba81dc9.
|
||||||
|
* Add tests for the changes since ba81dc9.
|
||||||
|
|
||||||
|
Template multiplexing with action hooks
|
||||||
|
---------------------------------------
|
||||||
|
|
||||||
|
The big idea: make it easier for hooks to customize *what* template(s) are rendered by moving more of the process into hooks—including template rendering itself.
|
||||||
|
|
||||||
|
Required:
|
||||||
|
|
||||||
|
* Add some sort of ordering for hooks
|
||||||
|
Thinking an enum of named stages: data adders, data mungers, filters, actions.
|
||||||
|
The return value of ``hooks.load_all()`` must respect this ordering.
|
||||||
|
|
||||||
|
* Make the main loop seed the entry data with information about the importer used.
|
||||||
|
|
||||||
|
* Move template rendering into a hook, where the template to load is determined by a value in the entry data.
|
||||||
|
|
||||||
|
Extra customizations after that's done:
|
||||||
|
|
||||||
|
* Add a hook that simply reads information from a configuration file section ``[template variables]`` and adds it to the entry data.
|
||||||
|
|
||||||
|
* Add a hook that changes what template to use based on other entry data. (This needs more specification.)
|
||||||
|
|
||||||
|
New importers
|
||||||
|
-------------
|
||||||
|
|
||||||
* Stripe import via API
|
* Stripe import via API
|
||||||
|
* YourCause
|
||||||
|
* Network for Good
|
||||||
|
|
||||||
|
Other feature requests
|
||||||
|
----------------------
|
||||||
|
|
||||||
* Some way of preventing re-imports
|
* Some way of preventing re-imports
|
||||||
|
|
||||||
|
User niceties
|
||||||
|
-------------
|
||||||
|
|
||||||
|
These haven't been requested yet but it's easy to imagine how they make the program more user-friendly.
|
||||||
|
|
||||||
|
* ``load_hooks`` and ``skip_hooks`` configuration options to limit what hooks are used.
|
||||||
|
Setting ``load_hooks`` means "skip everything not in this list."
|
||||||
|
Not setting ``load_hooks`` means "only skip what's listed in ``skip_hooks``."
|
||||||
|
If neither setting is set, ``skip_hooks`` should default to a list of hooks that have business-specific logic (currently just ``add_entity``).
|
||||||
|
If a hook is listed in both, it's either skipped or a configuration error (TBD).
|
||||||
* Try all importers even after one fails
|
* Try all importers even after one fails
|
||||||
|
* Clean up error reporting on bad configuration file syntax.
|
||||||
|
|
||||||
|
Code infrastructure
|
||||||
|
-------------------
|
||||||
|
|
||||||
* Open files for import in binary mode; add a text-wrapping importer base
|
* Open files for import in binary mode; add a text-wrapping importer base
|
||||||
* Add some sort of ordering for hooks
|
* Write a utility dict transformer. Given a source dictionary, it returns something like ``{new_key: transform(source[old_key]) for old_key, transform, new_key in configuration}``.
|
||||||
* Take template rendering out of the main loop, and make it just another hook
|
A lot of the CSV importers are doing this ad hoc now, so refactoring out a common way to do it could help speed up development of future importers.
|
||||||
|
|
Loading…
Reference in a new issue