errorlib: context support in sentry

* Introduces support for HTTP, and user context in sentry, by
  exploiting information provided in req object when available.
  (closes #1960) (PR #2147)

Signed-off-by: Samuele Kaplun <samuele.kaplun@cern.ch>
Tested-by: Tibor Simko <tibor.simko@cern.ch>
WebSearch: kwalitee fix

* Runs `autopep8` on `websearch_services_regression_tests.py`.
  (PR #2352)

Signed-off-by: Federico Poli <federico.poli@cern.ch>
Tested-by: Tibor Simko <tibor.simko@cern.ch>
WebSearch: new Journal Hint Service

* Adds the Journal Hint Service, that displays
  'Were you looking for a journal reference? Try: <link>'
  when the user search for a raw journal reference.
  (PR #2352)

* Adds unit and regression tests for the new search service.

* Adds two unit tests to `search_from_reference`, just to be sure that
  it accepts unicode.

Signed-off-by: Federico Poli <federico.poli@cern.ch>
Reviewed-by: Samuele Kaplun <samuele.kaplun@cern.ch>
Reviewed-by: Tibor Simko <tibor.simko@cern.ch>
WebSearch: smarter journal hint

* Improves the JournalHintService implementation by directly
  a brief representation of a record when one is found.
  (PR #2352)

* Additionally, suggests to use find rawref "foo" when "foo"
  is searched for, rather than journal:"bar".

Signed-off-by: Samuele Kaplun <samuele.kaplun@cern.ch>
Tested-by: Tibor Simko <tibor.simko@cern.ch>
BibSort: improved washers

* Improves speed and realiability of BibSort washers by properly
  exploiting textutils.decode_to_unicode() and
  textutils.translate_to_ascii() functions.
  (PR #2283)

* Improves speed of textutils.translate_to_ascii().
  (addresses #1754)

* Introduces new washer
  _sort_nosymbols_case_insensitive_strip_accents().

* Makes unidecode dependency mandatory.

Signed-off-by: Samuele Kaplun <samuele.kaplun@cern.ch>
Tested-by: Tibor Simko <tibor.simko@cern.ch>
BibDocFile: bibdocfile.BibDoc memory fix

* Fixes a memory leak in BibDocFile module where BibDoc instances were
  referring to BibDocFiles and viceversa, by using weakref.ref().
  (closes #2082) (PR #2136)

Signed-off-by: Samuele Kaplun <samuele.kaplun@cern.ch>
Reported-by: Thorsten Schwander <thorsten.schwander@gmail.com>
Tested-by: Tibor Simko <tibor.simko@cern.ch>
errorlib: fix Sentry context syntax issue

* Fixes Python syntax issue that slipped in the Sentry context support
  commit d73bd94b2fbe8666af31dfec25c334c466e6f6df.
  (addresses #1960) (PR #2147)

Signed-off-by: Tibor Simko <tibor.simko@cern.ch>
BibCirculation: fix for CERN returnees

Acked-by: Tibor Simko <tibor.simko@cern.ch>
sqlalchemy: fix mysql index creation

* Fixes checking of Text type supporting the case of NullType
  column type.

Signed-off-by: Leonardo Rossi <leonardo.r@cern.ch>
groups: port missing functionality

* Adds implementation of user group manage function.

* Adds filter on list of group that user can join.
  (closes #1788)

Signed-off-by: Leonardo Rossi <leonardo.r@cern.ch>
general: WTForms 2 compatibility fixes

Signed-off-by: Jiri Kuncar <jiri.kuncar@cern.ch>
base: bundle less filename correction

* Corrects the less JS bundle filename to avoid causing a file
  not found error for this file while building assets.

Signed-off-by: Jan Aage Lavik <jan.age.lavik@cern.ch>
records: display tabs

* Creates a new `record.tabs` menu using Flask-Menu.

* Adds the `visible_when` attribute and the `count` keyword argument.

* Amends the main `record` template.

* Uses Flask-Cache to memoize the function for finding
  the `visible tabs`.

* Upgrades Flask-Breadcrumbs and Flask-Menu to 0.2 version.
  (closes #1646)

Signed-off-by: Eirini Psallida <eirini.psallida@cern.ch>
sqlalchemy: default mysql parameters for db.Table

* Adds default parameters to `db.Table` constructor to force MyISAM
  engine for MySQL backend. db.Table is InnoDB by default on modern
  versions of MySQL. Hence, foreign keys can now be set on
  `db.Model` fields because both are using MyISAM as an engine.
  (closes #2491)

Signed-off-by: Artem Tsikiridis <artem.tsikiridis@cern.ch>
Reviewed-by: Gilles Louppe <gilles.louppe@cern.ch>
access: infinite recursion hotfix

* Temporary fix for the occasional issue causing infinite recursion
  error upon loading the session. (addresses #2509)

Reviewed-by: Jiri Kuncar <jiri.kuncar@cern.ch>
Signed-off-by: Jan Aage Lavik <jan.age.lavik@cern.ch>
jasmine: adaptation to requirejs

* Utilises boot.js from jasmine.

* Ensures that there is no jQuery conflict when a js file loads
  jQuery with requirejs with jasmine configuration test.

Signed-off-by: Kamil Neczaj <kamil.neczaj@cern.ch>
installation: disable SSLv3 in Apache config

* Disables SSLv3.0 due to known vulnerability.  (closes #2515)

Signed-off-by: Jiri Kuncar <jiri.kuncar@cern.ch>
oauth2server: access and refresh tokens encrytion

* Uses encryption field for seamless encryption/decryption of the access
  and refresh tokens. (addresses #2127)

Signed-off-by: Jiri Kuncar <jiri.kuncar@cern.ch>
oauthclient: access token encryption

* Uses encryption field for seamless encryption/decryption of the access
  tokens. (closes #2127)

Signed-off-by: Jiri Kuncar <jiri.kuncar@cern.ch>
workflows: actions JS loading

* Makes the JavaScript assets loading for actions separated from
  the general assets loading to allow for easier additions of
  actions on overlays.

Signed-off-by: Jan Aage Lavik <jan.age.lavik@cern.ch>