WebStyle: legacy publisher support for Flask

* Supports func:`mp_legacy_publisher` while serving static files through
  Flask application.

* Registers exception and informs admin on any top level error.

Tested-by: Tibor Simko <tibor.simko@cern.ch>
WebSearch: fix default sort order

* Fixes sort order of search results and collection reclist.

* Adds limit for number of records in '/collection' pages.

Reported-by: Lars Holm Nielsen <lars.holm.nielsen@cern.ch>
Tested-by: Tibor Simko <tibor.simko@cern.ch>
BibDocFile: revert md5 property patch

* Reverts md5 property patch 18c013cd7e511cb83d742e70bb0972e426ae0b0e
  that was defining only getter, not setter.  This caused problems
  during recreation of demo site.  (references #1249)

* Cherry-picked from 13ba6527d50f0cd8dae0763e0268ae79f5e5fcf6 that
  reverted this patch on master branch only.

Reported-by: Patrick Glauner <patrick.oliver.glauner@cern.ch>
Merge branch 'maint-1.1'

* maint-1.1:
  BibDocFile: revert md5 property patch
Merge branch 'master' into next

* master:
  BibDocFile: revert md5 property patch
xmlDict: initial release

Signed-off-by: Konstantinos Ntemagkos <konstantinos.ntemagkos@cern.ch>
Co-authored-by: Tibor Simko <tibor.simko@cern.ch>
WebDeposit: initial release

* Introduces WebDeposit Article submission demo.

* Adds Sherpa Romeo autocompletion for publisher, journal
  and ISSN fields.

* Adds AJAX field error checking.

* Adds draft saving capabilities.

* Creates form dynamically from class.

* Adds custom field classes.

* Adds autocompletion and error checking for every field.

* Adds support for dynamic form and field loading using pluginbuilder.

Reviewed-by: Jiri Kuncar <jiri.kuncar@cern.ch>
WebDeposit: field widgets addition

* Introduces WTForm field widgets like JQuery calendar widget or Plupload
  field widget (html5 version).

* Removes the "scary" code from form configuration files.

* Adds Plupload as a WTForm field widget for file fields.

* Adds new config variable CFG_WEBDEPOSIT_UPLOAD_FOLDER.

Reviewed-by: Jiri Kuncar <jiri.kuncar@cern.ch>
WebDeposit: model addition and plupload chunking

* Adds SQLAlchemy model for database drafts table.

* Draft functions are using SQLAlchemy ORM.

* Adds support for Plupload file chunking.

Reviewed-by: Jiri Kuncar <jiri.kuncar@cern.ch>
WebDeposit: autocompletion and draft enhancement

* Adds Orcid search for author autocompletion.

* Introduces document type metadata and integrates document type
  in form rendering.

* Adds Sherpa Romeo search testing class.

* Field icons are rendered from `Field.icon_html` variable.

* Replaces draft model's integer id with string uuid.

* Refactors new draft, delete draft in order to function
  with document types.

* JQuery autocomplete functions are rendered if
  the field has an autocomplete attribute.

* Updates tabcreate.sql with WebDeposit Draft CREATE TABLE script.

* Adds pretty_date function to webdeposit_utils in order to prettify
  saved drafts list with user friendly timestamp.

* Enhances draft_field_get_all to work also with list
  of field names.

Reviewed-by: Jiri Kuncar <jiri.kuncar@cern.ch>
WebDeposit: subfields support and submit widget addition

* Adds subfield argument to the draft API
  Json structure now can have dictionaries
  in the second level.

* Integrates bootstrap submit button in a widget.

Reviewed-by: Jiri Kuncar <jiri.kuncar@cern.ch>
WebDeposit: new workflow class and functions

* Adds functions to be used by workflows.

* Adds workflow table model and updates accordingly tabcreate.

* Changes workflow class to be more like Roman's Workflow.

Reviewed-by: Jiri Kuncar <jiri.kuncar@cern.ch>
WebDeposit: sequential form rendering

* Implements a simple Article Workflow that renders
  two forms sequentially (ArticleForm, PhotoForm)

* Alters the WebDeposit tables.

* Adds functions to obtain a workflow `get_latest_or_new_workflow`,
  `get_workflow` and `create_workflow`.

* Adds workflow class functions to synchronize database and
  workflow object.

* When custom fields are imported from `webdeposit_load_fields`
  constructors now are attributes to an object called 'fields'.

Reviewed-by: Jiri Kuncar <jiri.kuncar@cern.ch>
WebDeposit: javascript check for required fields

* Adds `required` data member automatically to every field if the
  field is defined with `Required()` validator.

Reviewed-by: Jiri Kuncar <jiri.kuncar@cern.ch>
WebDeposit: dynamic breadcrumbs additions

Co-authored-by: Jiri Kuncar <jiri.kuncar@cern.ch>
WebDeposit: change of database column name

Reviewed-by: Jiri Kuncar <jiri.kuncar@cern.ch>
WebDeposit: fix links and type check addition
WebDeposit: workflow cleanup
WebDeposit: columns type change to db.JSON

* Changes type of columns `WebDepositWorkflow.obj_json` and
  `WebDepositDraft.form_values` to `db.JSON`.

* Adds workflow status variable CFG_WEBDEPOSIT_WORKFLOW_STATUS.

Co-authored-by: Konstantinos Ntemagkos <konstantinos.ntemagkos@cern.ch>
WebDeposit: more depositions and various fixes

* Adds Thesis and Preprint deposition types.

* Fixes SQLAlchemy query update query.

* Prettifies alignment at form labels.

* Adds scrollbar to autocomplete dropdown list