summaryrefslogtreecommitdiff
path: root/docs/source/user/settings.rst
blob: 565ae7337e67474b1fa18f8f84a9e4d2859bf892 (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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
*******************
 The settings file
*******************

The file ``settings.yaml`` defines the properties of a collection.

It is a yaml file with a dict of properties and their values.

``name``:
   the human readable name of the collection.
``lang``:
   the language of the collection; valid values are listed in the
   `xapian stemmer`_ documentation and are usually either the English
   name or the two letter ISO639 code of a language.
``entry_label``:
   a jinja2 template used to show an entry in the interface; beside the
   entry fields two useful variables are ``eid`` for the full entry ID
   and ``short_id`` for the short version.
``default_sort``:
   a list of field names (possibly prefixed by + or -) that are used by
   default to sort results of searches in the collection.
   The fields must be marked as sortable in their definition, see below.
``fields``:
   The list of fields used by the collection, as described below.

.. _`xapian stemmer`: https://xapian.org/docs/apidoc/html/classXapian_1_1Stem.html

Field definitions
=================

``name``:
   a name for the field (computer readable: keeping it lowercase
   alphabetic ascii is probably safer).
``type``:
   the type of the field: valid fields are listed in
   :doc:`/reference/lesana.types` (see the ``name`` property for each
   field)
``index``:
   whether this field should be indexed: valid values are ``free`` for
   fields that should be available in the free text search and ``field``
   for fields that should only be available by specifying the field name
   in the search.
``sortable``:
   boolean; whether this field is sortable. Sortable fields enable
   sorting the results and search by ranges, but having too many
   sortable fields make the search more resurce intensive.
``help``:
   a description for the field; this is e.g. added to new entries as a
   comment.
``default``:
   the default value to use when creating an entry.
``prefix``:
   the optional term prefix used inside xapian: if you don't know what
   this means you should avoid using this, otherwise see `Term
   Prefixes`_ on the xapian documentation for details.

.. _`Term Prefixes`: https://xapian.org/docs/omega/termprefixes.html

Some field types may add other custom properties.

``list`` properties
-------------------

``list``:
   the type of the entries in the list; note that neither lists of non
   uniform values nor lists of lists are supported (if you need those
   you can use the ``yaml`` generic type, or write your own derivative
   with an additional type).

``integer`` properties
----------------------

``auto``:
   automatic manipulation of the field contents.

   The value of ``increment`` will autoincrement the value at every
   update.

   The reference command-line client will run this update before editing
   an entry, allowing further changes from the user; a command line user
   can then decide to abort this change through the usual git commands.

   Other clients may decide to use a different workflow.

``increment``:
   the amount by which an ``auto: increment`` field is incremented
   (negative values are of course allowed). Default is 1.

``date`` and ``datetime`` properties
------------------------------------

``auto``:
   automatic manipulation of the field contents.

   The following values are supported.

   ``creation``
      autofill the field at creation time with the current UTC time
      (``datetime``) or local zone day (``date``).
   ``update``
      autofill the field when it is updated with the current UTC time
      (``datetime``) or local zone day (``date``).

      The reference command line client will run this update before
      editing an entry, allowing further changes from the user; a
      command line user can then decide to abort this change through the
      usual git commands.

      Other clients may decide to use a different workflow.

``values``
----------

The ``string``, ``text``, ``list`` and numeric types can have a property
``value`` with a list of valid values for that field.

An empty value is always allowed.

For the ``list`` type, each element of the list is checked, not the
whole list.