summaryrefslogtreecommitdiff
path: root/docs/moving_data_between_collections.rst
blob: 170b39117fe2319bcb83bb74bff8c9169877ed11 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Moving Data between Collections
===============================

Entries can be exported from a lesana collection to another using the
``lesana export`` command and a jinja2 template.

The template should generate a yaml file that is a valid lesana entry
for the destination collection and it can use the fields of the starting
collection as variables. The variable ``entry`` is also available and
gives complete access to the entry of the original collection, so fields
with names that aren't valid jinja templates can be accessed as
``entry.data[<field-name>]``.

E.g. to convert between a collection with fields ``name``,
``short-desc``, ``desc`` to a collection with fields ``name``,
``description`` one could use the following template::

   name: {{ name }}
   description: |
       {{ entry.data.[short-desc] }}

       {{ desc | indent(width=4, first=False) }}

From the origin collection you can then run the command::

   lesana export <path/to/destination/collection> <path/to/template>

to export all entries.

You can also export just a subset of entries by adding a xapian query
with the parameter ``--query``; you can test the search using::

   lesana search --all <some search terms>

and then actually run the export with::

   lesana search --query '<some search terms>' <destination> <template>

note that in this second command the spaces in the search query have to
be protected from the shell.