BibIndex: new index 'filetype'

* Creates new 'filetype' index and plugs it into bibindex.
  (closes #473)

* Creates derived field 'filetypes' in bibfield atlantis.cfg
  field definitions.

Signed-off-by: Grzegorz Szpura <grzegorz.szpura@cern.ch>
Reviewed-by: Tibor Simko <tibor.simko@cern.ch>
installation: information about unidecode

Signed-off-by: Tibor Simko <tibor.simko@cern.ch>
BibField: clean up of atlantis.cfg demo file

* Fixes field names and legacy rules to match demo site tag setup.
 (closes #1557)

Signed-off-by: Esteban J. G. Gabancho <esteban.gabancho@cern.ch>
Tested-by: Tibor Simko <tibor.simko@cern.ch>
BibField: new producer section added to config

* New `producer` section inside the configuration file that allows
  to produce different low level outputs for a given field.

* First release of two producers, one for marc and one for dublin
  core.

* New functions `guess_legacy_field_names` that, using the legacy
  rules from the configuration files try to find which is the field
  name for a given tag from a given master format.

* Better legacy export as marc that uses the new producer capability.

Signed-off-by: Esteban J. G. Gabancho <esteban.gabancho@cern.ch>
Co-authored-by: Lars Holm Nielsen <lars.holm.nielsen@cern.ch>
Tested-by: Tibor Simko <tibor.simko@cern.ch>
BibField: fix for misbehavior when parsing rules

Signed-off-by: Esteban J. G. Gabancho <esteban.gabancho@cern.ch>
Co-authored-by: Lars Holm Nielsen <lars.holm.nielsen@cern.ch>
Tested-by: Tibor Simko <tibor.simko@cern.ch>
BibField: better handling of calculated fields

* Adds new internal key `__calculated_functions` to store how to
  update the cached value of the field.

* All the fields marked with `@do_not_cache` are not longer stored
  stored inside rec_json, only the key is reserved.

Signed-off-by: Esteban J. G. Gabancho <esteban.gabancho@gmail.com>
Tested-by: Tibor Simko <tibor.simko@cern.ch>
BibField: new decorator @only_if_master_format

* New decorator @only_if_master_value, similar to @only_if but in
  this case we can create a boolean expression based on `value`,
  which is coming from the master format before evaluation.

Signed-off-by: Esteban J. G. Gabancho <esteban.gabancho@cern.ch>
Tested-by: Tibor Simko <tibor.simko@cern.ch>
BibField: bibdoc integration

* Adds two new calculated fields to interact with files from
  BibDocFile, one `files` which provides a dict containing some
  useful information about the files and `bibdocs` which contains
  the BibDoc object itself.

Signed-off-by: Esteban J. Gabancho <esteban.gabancho@cern.ch>
Tested-by: Tibor Simko <tibor.simko@cern.ch>
BibField: continuable vs fatal errors

Signed-off-by: Esteban J. G. Gabancho <esteban.gabancho@cern.ch>
Tested-by: Tibor Simko <tibor.simko@cern.ch>
BibField: fix for `is_type_isbn`

Signed-off-by: Esteban J. G. Gabancho <esteban.gabancho@cern.ch>
Tested-by: Tibor Simko <tibor.simko@cern.ch>
BibField: fix for '__eq__' to better compare recs

Signed-off-by: Esteban J. G. Gabancho <esteban.gabancho@cern.ch>
Tested-by: Tibor Simko <tibor.simko@cern.ch>
BibField: `is_empty` update

Signed-off-by: Esteban J. G. Gabancho <esteban.gabancho@cern.ch>
Tested-by: Tibor Simko <tibor.simko@cern.ch>
BibField: `schema` in `split_blob`

* When splitting the blob it might be the case that the schema is
  needed, moreover if the reader accepts several schemas for the
  same input format.

Signed-off-by: Esteban J. G. Gabancho <esteban.gabancho@cern.ch>
Tested-by: Tibor Simko <tibor.simko@cern.ch>
BibField: elimination of None values in recjson

Signed-off-by: Esteban J. G. Gabancho <esteban.gabancho@cern.ch>
Tested-by: Tibor Simko <tibor.simko@cern.ch>
BibField: new field filtering for `get_record`

* Modified `__repr__` to only display relevant keys and hide keys
  of the form `__key`.

Signed-off-by: Esteban J. G. Gabancho <esteban.gabancho@cern.ch>
Tested-by: Tibor Simko <tibor.simko@cern.ch>
BibField: new upgrade recipe to remove json cache

Co-authored-by: Tibor Simko <tibor.simko@cern.ch>
Signed-off-by: Esteban J. G. Gabancho <esteban.gabancho@cern.ch>
Signed-off-by: Tibor Simko <tibor.simko@cern.ch>
I18N: infrastructure for Persian (Farsi)

* Adds general support infrastructure for Persian (Farsi)
  translation.  Dynamic elements and PO file will be translated
  in subsequent commits.

Signed-off-by: Tibor Simko <tibor.simko@cern.ch>
I18N: initial Persian (Farsi) translation

* Initial translation of dynamic elements (e.g. collection names)
  to Persian (Farsi).  The PO file will be translated in future
  commits.

Co-authored-by: Tibor Simko <tibor.simko@cern.ch>
Signed-off-by: Tibor Simko <tibor.simko@cern.ch>
BibUpload: fill affected_fields in hstRECORD

* BibUpload now stores list of affected fields for given record
  revision update into hstRECORD table.  (closes #1572)

Signed-off-by: Grzegorz Szpura <grzegorz.szpura@cern.ch>
Reviewed-by: Tibor Simko <tibor.simko@cern.ch>
BibIndex: filetype and itemcount tokenizer fix

* Filetype and itemcount tokenizers now correctly
  handle TypeError in cases when they were passed
  object different than bibfield's record.
  (closes #1609)

Reported-by: Theodoropoulos Theodoros <theod@lib.auth.gr>
Signed-off-by: Grzegorz Szpura <grzegorz.szpura@cern.ch>
Reviewed-by: Tibor Simko <tibor.simko@cern.ch>