mirror of
https://github.com/Cian-H/invenio-config-iform.git
synced 2025-12-23 13:31:58 +00:00
Compare commits
62 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c39221378f | ||
|
|
a42f86fcdf | ||
|
|
0dd0db04e2 | ||
|
|
b02ce8a755 | ||
|
|
41dcb8f437 | ||
|
|
35854691bd | ||
|
|
f2e18b95c3 | ||
|
|
16c10593d6 | ||
|
|
dbd870d106 | ||
|
|
f02e992acd | ||
|
|
a7abb0bc5e | ||
|
|
7ca398efdd | ||
|
|
b33c7e09c3 | ||
|
|
0c775851d8 | ||
|
|
89f6aee814 | ||
|
|
44e5857143 | ||
|
|
460de9fc35 | ||
|
|
b1d7a6558e | ||
|
|
890fded625 | ||
|
|
1304563a3e | ||
|
|
a08201041a | ||
|
|
548896be11 | ||
|
|
a10433aba3 | ||
|
|
f0fbabbaa8 | ||
|
|
5e2a58c764 | ||
|
|
9af1beff88 | ||
|
|
80575cbced | ||
|
|
60b85e6ad5 | ||
|
|
10f68379b5 | ||
|
|
49766790d7 | ||
|
|
977d5588f4 | ||
|
|
ded93fabeb | ||
|
|
c2ee5fa4b7 | ||
|
|
cf3ffa1543 | ||
|
|
927fb44f95 | ||
|
|
d7c91765b4 | ||
|
|
dba1cd5d62 | ||
|
|
49b5477ebc | ||
|
|
92cfad940f | ||
|
|
93ad527061 | ||
|
|
9d2ad34601 | ||
|
|
1eb836aec8 | ||
|
|
42e7a332d0 | ||
|
|
5dd1bf0602 | ||
|
|
956a9eea76 | ||
|
|
4310ca8755 | ||
|
|
ce97c5378c | ||
|
|
e2b1c59c5d | ||
|
|
cb7f00d76c | ||
|
|
be22817a91 | ||
|
|
1ca39d2f8d | ||
|
|
7069bbe481 | ||
|
|
396f44fbd8 | ||
|
|
8f2670235b | ||
|
|
d70c690ab3 | ||
|
|
6803ce9614 | ||
|
|
4d89290b58 | ||
|
|
2ccd24cfca | ||
|
|
0a37a8015e | ||
|
|
975ac67a8a | ||
|
|
21d1a9d4c6 | ||
|
|
3d3354805d |
@@ -32,8 +32,8 @@ indent_size = 4
|
|||||||
[*.{css,html,js,json,yml}]
|
[*.{css,html,js,json,yml}]
|
||||||
indent_size = 2
|
indent_size = 2
|
||||||
|
|
||||||
# Matches the exact files either package.json or .travis.yml
|
# Matches the exact files either package.json or .github/workflows/*.yml
|
||||||
[{package.json,.travis.yml}]
|
[{package.json,.github/workflows/*.yml}]
|
||||||
indent_size = 2
|
indent_size = 2
|
||||||
|
|
||||||
# Dockerfile
|
# Dockerfile
|
||||||
|
|||||||
87
.github/workflows/tests.yml
vendored
Normal file
87
.github/workflows/tests.yml
vendored
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
name: CI
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: master
|
||||||
|
pull_request:
|
||||||
|
branches: master
|
||||||
|
schedule:
|
||||||
|
# * is a special character in YAML so you have to quote this string
|
||||||
|
- cron: '0 3 * * 6'
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
reason:
|
||||||
|
description: 'Reason'
|
||||||
|
required: false
|
||||||
|
default: 'Manual trigger'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
Tests:
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
python-version: [3.6, 3.7, 3.8, 3.9]
|
||||||
|
requirements-level: [min, pypi]
|
||||||
|
db-service: [postgresql12]
|
||||||
|
search-service: [elasticsearch7]
|
||||||
|
exclude:
|
||||||
|
- python-version: 3.6
|
||||||
|
requirements-level: pypi
|
||||||
|
|
||||||
|
- python-version: 3.7
|
||||||
|
requirements-level: min
|
||||||
|
|
||||||
|
- python-version: 3.8
|
||||||
|
requirements-level: min
|
||||||
|
|
||||||
|
- python-version: 3.9
|
||||||
|
requirements-level: min
|
||||||
|
|
||||||
|
- db-service: postgresql12
|
||||||
|
requirements-level: min
|
||||||
|
|
||||||
|
- search-service: elasticsearch7
|
||||||
|
requirements-level: min
|
||||||
|
|
||||||
|
include:
|
||||||
|
|
||||||
|
- db-service: postgresql12
|
||||||
|
DB_EXTRAS: "postgresql"
|
||||||
|
|
||||||
|
|
||||||
|
- search-service: elasticsearch7
|
||||||
|
SEARCH_EXTRAS: "elasticsearch7"
|
||||||
|
|
||||||
|
env:
|
||||||
|
DB: ${{ matrix.db-service }}
|
||||||
|
SEARCH: ${{ matrix.search-service }}
|
||||||
|
EXTRAS: all,${{ matrix.DB_EXTRAS }},${{ matrix.SEARCH_EXTRAS }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Set up Python ${{ matrix.python-version }}
|
||||||
|
uses: actions/setup-python@v2
|
||||||
|
with:
|
||||||
|
python-version: ${{ matrix.python-version }}
|
||||||
|
|
||||||
|
- name: Generate dependencies
|
||||||
|
run: |
|
||||||
|
python -m pip install --upgrade pip setuptools py wheel requirements-builder
|
||||||
|
requirements-builder -e "$EXTRAS" --level=${{ matrix.requirements-level }} setup.py > .${{ matrix.requirements-level }}-${{ matrix.python-version }}-requirements.txt
|
||||||
|
- name: Cache pip
|
||||||
|
uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: ~/.cache/pip
|
||||||
|
key: ${{ runner.os }}-pip-${{ hashFiles('.${{ matrix.requirements-level }}-${{ matrix.python-version }}-requirements.txt') }}
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
pip install -r .${{ matrix.requirements-level }}-${{ matrix.python-version }}-requirements.txt
|
||||||
|
pip install ".[$EXTRAS]"
|
||||||
|
pip freeze
|
||||||
|
docker --version
|
||||||
|
docker-compose --version
|
||||||
|
- name: Run tests
|
||||||
|
run: |
|
||||||
|
./run-tests.sh
|
||||||
53
.travis.yml
53
.travis.yml
@@ -1,53 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
#
|
|
||||||
# Copyright (C) 2020 Mojib Wali.
|
|
||||||
#
|
|
||||||
# invenio-config-tugraz is free software; you can redistribute it and/or
|
|
||||||
# modify it under the terms of the MIT License; see LICENSE file for more
|
|
||||||
# details.
|
|
||||||
branches:
|
|
||||||
except:
|
|
||||||
- /^v\d+\.\d+(\.\d+)?(\S*)?$/
|
|
||||||
|
|
||||||
notifications:
|
|
||||||
email: false
|
|
||||||
|
|
||||||
sudo: false
|
|
||||||
|
|
||||||
language: python
|
|
||||||
|
|
||||||
matrix:
|
|
||||||
fast_finish: true
|
|
||||||
allow_failures:
|
|
||||||
# To allow failures, you need to specify the full environment
|
|
||||||
- env: REQUIREMENTS=devel
|
|
||||||
|
|
||||||
cache:
|
|
||||||
- pip
|
|
||||||
|
|
||||||
env:
|
|
||||||
- REQUIREMENTS=lowest
|
|
||||||
- REQUIREMENTS=release DEPLOY=true
|
|
||||||
- REQUIREMENTS=devel
|
|
||||||
|
|
||||||
python:
|
|
||||||
- "3.6"
|
|
||||||
- "3.7"
|
|
||||||
|
|
||||||
before_install:
|
|
||||||
- "nvm install 6; nvm use 6"
|
|
||||||
- "travis_retry pip install --upgrade pip setuptools py"
|
|
||||||
- "travis_retry pip install twine wheel coveralls requirements-builder"
|
|
||||||
- "requirements-builder -e all --level=min setup.py > .travis-lowest-requirements.txt"
|
|
||||||
- "requirements-builder -e all --level=pypi setup.py > .travis-release-requirements.txt"
|
|
||||||
- "requirements-builder -e all --level=dev --req requirements-devel.txt setup.py > .travis-devel-requirements.txt"
|
|
||||||
|
|
||||||
install:
|
|
||||||
- "travis_retry pip install -r .travis-${REQUIREMENTS}-requirements.txt"
|
|
||||||
- "travis_retry pip install -e .[all]"
|
|
||||||
|
|
||||||
script:
|
|
||||||
- "./run-tests.sh"
|
|
||||||
|
|
||||||
after_success:
|
|
||||||
- coveralls
|
|
||||||
10
CHANGES.rst
10
CHANGES.rst
@@ -1,5 +1,5 @@
|
|||||||
..
|
..
|
||||||
Copyright (C) 2020 Mojib Wali.
|
Copyright (C) 2020 - 2021 Graz University of Technology.
|
||||||
|
|
||||||
invenio-config-tugraz is free software; you can redistribute it and/or
|
invenio-config-tugraz is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the MIT License; see LICENSE file for more
|
modify it under the terms of the MIT License; see LICENSE file for more
|
||||||
@@ -7,6 +7,14 @@
|
|||||||
|
|
||||||
Changes
|
Changes
|
||||||
=======
|
=======
|
||||||
|
Version 0.7.1 (released 2021-12-07)
|
||||||
|
|
||||||
|
- configs: adds new & changed configs for v7 #76
|
||||||
|
|
||||||
|
Version 0.7.0 (released 2021-12-06)
|
||||||
|
|
||||||
|
- fix: update blueprint reorder #74
|
||||||
|
- dep: upgrade rdm-records version & OAI #72
|
||||||
|
|
||||||
Version 0.1.0 (released TBD)
|
Version 0.1.0 (released TBD)
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ Types of Contributions
|
|||||||
Report Bugs
|
Report Bugs
|
||||||
~~~~~~~~~~~
|
~~~~~~~~~~~
|
||||||
|
|
||||||
Report bugs at https://github.com/mb-wali/invenio-config-tugraz/issues.
|
Report bugs at https://github.com/tu-graz-library/invenio-config-tugraz/issues.
|
||||||
|
|
||||||
If you are reporting a bug, please include:
|
If you are reporting a bug, please include:
|
||||||
|
|
||||||
@@ -41,7 +41,7 @@ Submit Feedback
|
|||||||
~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
The best way to send feedback is to file an issue at
|
The best way to send feedback is to file an issue at
|
||||||
https://github.com/mb-wali/invenio-config-tugraz/issues.
|
https://github.com/tu-graz-library/invenio-config-tugraz/issues.
|
||||||
|
|
||||||
If you are proposing a feature:
|
If you are proposing a feature:
|
||||||
|
|
||||||
@@ -113,6 +113,6 @@ Before you submit a pull request, check that it meets these guidelines:
|
|||||||
1. The pull request should include tests and must not decrease test coverage.
|
1. The pull request should include tests and must not decrease test coverage.
|
||||||
2. If the pull request adds functionality, the docs should be updated. Put
|
2. If the pull request adds functionality, the docs should be updated. Put
|
||||||
your new functionality into a function with a docstring.
|
your new functionality into a function with a docstring.
|
||||||
3. The pull request should work for Python 2.7, 3.5 and 3.6. Check
|
3. The pull request should work for Python 3.6 and 3.7. Check
|
||||||
https://travis-ci.org/https://github.com/https://github.com/mb-/pull_requests
|
https://github.com/github/tu-graz-library/invenio-config-tugraz//actions?query=event%3Apull_request
|
||||||
and make sure that the tests pass for all supported Python versions.
|
and make sure that the tests pass for all supported Python versions.
|
||||||
|
|||||||
12
MANIFEST.in
12
MANIFEST.in
@@ -34,11 +34,21 @@ recursive-include docs *.py
|
|||||||
recursive-include docs *.rst
|
recursive-include docs *.rst
|
||||||
recursive-include docs *.txt
|
recursive-include docs *.txt
|
||||||
recursive-include docs Makefile
|
recursive-include docs Makefile
|
||||||
recursive-include invenio_config_tugraz *.html
|
|
||||||
recursive-include tests *.py
|
recursive-include tests *.py
|
||||||
|
|
||||||
|
|
||||||
# added by check_manifest.py
|
# added by check_manifest.py
|
||||||
recursive-include invenio_config_tugraz *.crt
|
recursive-include invenio_config_tugraz *.crt
|
||||||
recursive-include invenio_config_tugraz *.json
|
recursive-include invenio_config_tugraz *.json
|
||||||
recursive-include invenio_config_tugraz *.key
|
recursive-include invenio_config_tugraz *.key
|
||||||
recursive-include invenio_config_tugraz *.xml
|
recursive-include invenio_config_tugraz *.xml
|
||||||
|
recursive-include invenio_config_tugraz *.gitkeep
|
||||||
|
recursive-include invenio_config_tugraz *.txt
|
||||||
|
recursive-include invenio_config_tugraz *.html
|
||||||
|
|
||||||
|
|
||||||
|
# added by check-manifest
|
||||||
|
recursive-include invenio_config_tugraz *.csv
|
||||||
|
|
||||||
|
# added by check-manifest
|
||||||
|
recursive-include invenio_config_tugraz *.pdf
|
||||||
|
|||||||
15
README.rst
15
README.rst
@@ -1,5 +1,5 @@
|
|||||||
..
|
..
|
||||||
Copyright (C) 2020 Mojib Wali.
|
Copyright (C) 2020-2021 Graz University of Technology.
|
||||||
|
|
||||||
invenio-config-tugraz is free software; you can redistribute it and/or
|
invenio-config-tugraz is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the MIT License; see LICENSE file for more
|
modify it under the terms of the MIT License; see LICENSE file for more
|
||||||
@@ -9,16 +9,16 @@
|
|||||||
invenio-config-tugraz
|
invenio-config-tugraz
|
||||||
=======================
|
=======================
|
||||||
|
|
||||||
.. image:: https://travis-ci.com/mb-wali/invenio-config-tugraz.svg
|
.. image:: https://github.com/tu-graz-library/invenio-config-tugraz/workflows/CI/badge.svg
|
||||||
:target: https://travis-ci.com/github/mb-wali/invenio-config-tugraz
|
:target: https://github.com/tu-graz-library/invenio-config-tugraz/actions
|
||||||
|
|
||||||
.. image:: https://img.shields.io/pypi/dm/invenio-config-tugraz.svg
|
.. image:: https://img.shields.io/pypi/dm/invenio-config-tugraz.svg
|
||||||
:target: https://pypi.python.org/pypi/invenio-config-tugraz
|
:target: https://pypi.python.org/pypi/invenio-config-tugraz
|
||||||
|
|
||||||
.. image:: https://img.shields.io/github/tag/mb-wali/invenio-config-tugraz.svg
|
.. image:: https://img.shields.io/github/tag/tu-graz-library/invenio-config-tugraz.svg
|
||||||
:target: https://github.com/mb-wali/invenio-config-tugraz/releases
|
:target: https://github.com/mb-wali/invenio-config-tugraz/releases
|
||||||
|
|
||||||
.. image:: https://img.shields.io/github/license/mb-wali/invenio-config-tugraz.svg
|
.. image:: https://img.shields.io/github/license/tu-graz-library/invenio-config-tugraz.svg
|
||||||
:target: https://github.com/mb-wali/invenio-config-tugraz/blob/master/LICENSE
|
:target: https://github.com/mb-wali/invenio-config-tugraz/blob/master/LICENSE
|
||||||
|
|
||||||
.. image:: https://readthedocs.org/projects/invenio-config-tugraz/badge/?version=latest
|
.. image:: https://readthedocs.org/projects/invenio-config-tugraz/badge/?version=latest
|
||||||
@@ -27,6 +27,9 @@
|
|||||||
.. image:: https://img.shields.io/coveralls/mb-wali/invenio-config-tugraz.svg
|
.. image:: https://img.shields.io/coveralls/mb-wali/invenio-config-tugraz.svg
|
||||||
:target: https://coveralls.io/r/mb-wali/invenio-config-tugraz
|
:target: https://coveralls.io/r/mb-wali/invenio-config-tugraz
|
||||||
|
|
||||||
|
.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
|
||||||
|
:target: https://github.com/psf/black
|
||||||
|
|
||||||
invenio module that adds tugraz configs.
|
invenio module that adds tugraz configs.
|
||||||
|
|
||||||
Override configs from diffrent invenio modules to meet TU Graz requirement:
|
Override configs from diffrent invenio modules to meet TU Graz requirement:
|
||||||
@@ -35,6 +38,8 @@ Override configs from diffrent invenio modules to meet TU Graz requirement:
|
|||||||
* Invenio-Mail
|
* Invenio-Mail
|
||||||
* Invenio-shibboleth
|
* Invenio-shibboleth
|
||||||
* Invenio-accounts
|
* Invenio-accounts
|
||||||
|
* Flask-security
|
||||||
|
* Defined routes for TUG
|
||||||
|
|
||||||
Further documentation is available on
|
Further documentation is available on
|
||||||
https://invenio-config-tugraz.readthedocs.io/
|
https://invenio-config-tugraz.readthedocs.io/
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ encoding = utf-8
|
|||||||
|
|
||||||
# Extraction from Jinja2 templates
|
# Extraction from Jinja2 templates
|
||||||
|
|
||||||
[jinja2: **/templates/**.html]
|
[jinja2: **/templates/**.*]
|
||||||
encoding = utf-8
|
encoding = utf-8
|
||||||
extensions = jinja2.ext.autoescape, jinja2.ext.with_
|
extensions = jinja2.ext.autoescape, jinja2.ext.with_
|
||||||
|
|
||||||
|
|||||||
114
docs/conf.py
114
docs/conf.py
@@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
import sphinx.environment
|
# import sphinx.environment
|
||||||
|
|
||||||
# -- General configuration ------------------------------------------------
|
# -- General configuration ------------------------------------------------
|
||||||
|
|
||||||
@@ -18,37 +18,37 @@ import sphinx.environment
|
|||||||
# needs_sphinx = '1.0'
|
# needs_sphinx = '1.0'
|
||||||
|
|
||||||
# Do not warn on external images.
|
# Do not warn on external images.
|
||||||
suppress_warnings = ['image.nonlocal_uri']
|
suppress_warnings = ["image.nonlocal_uri"]
|
||||||
|
|
||||||
# Add any Sphinx extension module names here, as strings. They can be
|
# Add any Sphinx extension module names here, as strings. They can be
|
||||||
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
|
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
|
||||||
# ones.
|
# ones.
|
||||||
extensions = [
|
extensions = [
|
||||||
'sphinx.ext.autodoc',
|
"sphinx.ext.autodoc",
|
||||||
'sphinx.ext.coverage',
|
"sphinx.ext.coverage",
|
||||||
'sphinx.ext.doctest',
|
"sphinx.ext.doctest",
|
||||||
'sphinx.ext.intersphinx',
|
"sphinx.ext.intersphinx",
|
||||||
'sphinx.ext.viewcode',
|
"sphinx.ext.viewcode",
|
||||||
]
|
]
|
||||||
|
|
||||||
# Add any paths that contain templates here, relative to this directory.
|
# Add any paths that contain templates here, relative to this directory.
|
||||||
templates_path = ['_templates']
|
templates_path = ["_templates"]
|
||||||
|
|
||||||
# The suffix(es) of source filenames.
|
# The suffix(es) of source filenames.
|
||||||
# You can specify multiple suffix as a list of string:
|
# You can specify multiple suffix as a list of string:
|
||||||
# source_suffix = ['.rst', '.md']
|
# source_suffix = ['.rst', '.md']
|
||||||
source_suffix = '.rst'
|
source_suffix = ".rst"
|
||||||
|
|
||||||
# The encoding of source files.
|
# The encoding of source files.
|
||||||
# source_encoding = 'utf-8-sig'
|
# source_encoding = 'utf-8-sig'
|
||||||
|
|
||||||
# The master toctree document.
|
# The master toctree document.
|
||||||
master_doc = 'index'
|
master_doc = "index"
|
||||||
|
|
||||||
# General information about the project.
|
# General information about the project.
|
||||||
project = u'invenio-config-tugraz'
|
project = u"invenio-config-tugraz"
|
||||||
copyright = u'2020, Mojib Wali'
|
copyright = u"2020, Mojib Wali"
|
||||||
author = u'Mojib Wali'
|
author = u"Mojib Wali"
|
||||||
|
|
||||||
# The version info for the project you're documenting, acts as replacement for
|
# The version info for the project you're documenting, acts as replacement for
|
||||||
# |version| and |release|, also used in various other places throughout the
|
# |version| and |release|, also used in various other places throughout the
|
||||||
@@ -58,11 +58,14 @@ author = u'Mojib Wali'
|
|||||||
|
|
||||||
# Get the version string. Cannot be done with import!
|
# Get the version string. Cannot be done with import!
|
||||||
g = {}
|
g = {}
|
||||||
with open(os.path.join(os.path.dirname(__file__), '..',
|
with open(
|
||||||
'invenio_config_tugraz', 'version.py'),
|
os.path.join(
|
||||||
'rt') as fp:
|
os.path.dirname(__file__), "..", "invenio_config_tugraz", "version.py"
|
||||||
|
),
|
||||||
|
"rt",
|
||||||
|
) as fp:
|
||||||
exec(fp.read(), g)
|
exec(fp.read(), g)
|
||||||
version = g['__version__']
|
version = g["__version__"]
|
||||||
|
|
||||||
# The full version, including alpha/beta/rc tags.
|
# The full version, including alpha/beta/rc tags.
|
||||||
release = version
|
release = version
|
||||||
@@ -100,7 +103,7 @@ exclude_patterns = []
|
|||||||
# show_authors = False
|
# show_authors = False
|
||||||
|
|
||||||
# The name of the Pygments (syntax highlighting) style to use.
|
# The name of the Pygments (syntax highlighting) style to use.
|
||||||
pygments_style = 'sphinx'
|
pygments_style = "sphinx"
|
||||||
|
|
||||||
# A list of ignored prefixes for module index sorting.
|
# A list of ignored prefixes for module index sorting.
|
||||||
# modindex_common_prefix = []
|
# modindex_common_prefix = []
|
||||||
@@ -113,19 +116,19 @@ todo_include_todos = False
|
|||||||
|
|
||||||
|
|
||||||
# -- Options for HTML output ----------------------------------------------
|
# -- Options for HTML output ----------------------------------------------
|
||||||
html_theme = 'alabaster'
|
html_theme = "alabaster"
|
||||||
|
|
||||||
html_theme_options = {
|
html_theme_options = {
|
||||||
'description': 'invenio module that adds tugraz configs.',
|
"description": "invenio module that adds tugraz configs.",
|
||||||
'github_user': 'inveniosoftware',
|
"github_user": "TU Graz",
|
||||||
'github_repo': 'invenio-config-tugraz',
|
"github_repo": "invenio-config-tugraz",
|
||||||
'github_button': False,
|
"github_button": False,
|
||||||
'github_banner': True,
|
"github_banner": True,
|
||||||
'show_powered_by': False,
|
"show_powered_by": False,
|
||||||
'extra_nav_links': {
|
"extra_nav_links": {
|
||||||
'invenio-config-tugraz@GitHub': 'https://github.com/mb-wali/invenio-config-tugraz',
|
"invenio-config-tugraz@GitHub": "https://github.com/tu-graz-library/invenio-config-tugraz",
|
||||||
'invenio-config-tugraz@PyPI': 'https://pypi.python.org/pypi/invenio-config-tugraz/',
|
"invenio-config-tugraz@PyPI": "https://pypi.python.org/pypi/invenio-config-tugraz/",
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
# The theme to use for HTML and HTML Help pages. See the documentation for
|
# The theme to use for HTML and HTML Help pages. See the documentation for
|
||||||
@@ -175,12 +178,12 @@ html_theme_options = {
|
|||||||
|
|
||||||
# Custom sidebar templates, maps document names to template names.
|
# Custom sidebar templates, maps document names to template names.
|
||||||
html_sidebars = {
|
html_sidebars = {
|
||||||
'**': [
|
"**": [
|
||||||
'about.html',
|
"about.html",
|
||||||
'navigation.html',
|
"navigation.html",
|
||||||
'relations.html',
|
"relations.html",
|
||||||
'searchbox.html',
|
"searchbox.html",
|
||||||
'donate.html',
|
"donate.html",
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -229,20 +232,17 @@ html_sidebars = {
|
|||||||
# html_search_scorer = 'scorer.js'
|
# html_search_scorer = 'scorer.js'
|
||||||
|
|
||||||
# Output file base name for HTML help builder.
|
# Output file base name for HTML help builder.
|
||||||
htmlhelp_basename = 'invenio-config-tugraz_namedoc'
|
htmlhelp_basename = "invenio-config-tugraz_namedoc"
|
||||||
|
|
||||||
# -- Options for LaTeX output ---------------------------------------------
|
# -- Options for LaTeX output ---------------------------------------------
|
||||||
|
|
||||||
latex_elements = {
|
latex_elements = {
|
||||||
# The paper size ('letterpaper' or 'a4paper').
|
# The paper size ('letterpaper' or 'a4paper').
|
||||||
# 'papersize': 'letterpaper',
|
# 'papersize': 'letterpaper',
|
||||||
|
|
||||||
# The font size ('10pt', '11pt' or '12pt').
|
# The font size ('10pt', '11pt' or '12pt').
|
||||||
# 'pointsize': '10pt',
|
# 'pointsize': '10pt',
|
||||||
|
|
||||||
# Additional stuff for the LaTeX preamble.
|
# Additional stuff for the LaTeX preamble.
|
||||||
# 'preamble': '',
|
# 'preamble': '',
|
||||||
|
|
||||||
# Latex figure (float) alignment
|
# Latex figure (float) alignment
|
||||||
# 'figure_align': 'htbp',
|
# 'figure_align': 'htbp',
|
||||||
}
|
}
|
||||||
@@ -251,8 +251,13 @@ latex_elements = {
|
|||||||
# (source start file, target name, title,
|
# (source start file, target name, title,
|
||||||
# author, documentclass [howto, manual, or own class]).
|
# author, documentclass [howto, manual, or own class]).
|
||||||
latex_documents = [
|
latex_documents = [
|
||||||
(master_doc, 'invenio-config-tugraz.tex', u'invenio-config-tugraz Documentation',
|
(
|
||||||
u'Mojib Wali', 'manual'),
|
master_doc,
|
||||||
|
"invenio-config-tugraz.tex",
|
||||||
|
u"invenio-config-tugraz Documentation",
|
||||||
|
u"Mojib Wali",
|
||||||
|
"manual",
|
||||||
|
),
|
||||||
]
|
]
|
||||||
|
|
||||||
# The name of an image file (relative to this directory) to place at the top of
|
# The name of an image file (relative to this directory) to place at the top of
|
||||||
@@ -281,8 +286,13 @@ latex_documents = [
|
|||||||
# One entry per manual page. List of tuples
|
# One entry per manual page. List of tuples
|
||||||
# (source start file, name, description, authors, manual section).
|
# (source start file, name, description, authors, manual section).
|
||||||
man_pages = [
|
man_pages = [
|
||||||
(master_doc, 'invenio-config-tugraz', u'invenio-config-tugraz Documentation',
|
(
|
||||||
[author], 1)
|
master_doc,
|
||||||
|
"invenio-config-tugraz",
|
||||||
|
u"invenio-config-tugraz Documentation",
|
||||||
|
[author],
|
||||||
|
1,
|
||||||
|
)
|
||||||
]
|
]
|
||||||
|
|
||||||
# If true, show URL addresses after external links.
|
# If true, show URL addresses after external links.
|
||||||
@@ -295,9 +305,15 @@ man_pages = [
|
|||||||
# (source start file, target name, title, author,
|
# (source start file, target name, title, author,
|
||||||
# dir menu entry, description, category)
|
# dir menu entry, description, category)
|
||||||
texinfo_documents = [
|
texinfo_documents = [
|
||||||
(master_doc, 'invenio-config-tugraz', u'invenio-config-tugraz Documentation',
|
(
|
||||||
author, 'invenio-config-tugraz', 'invenio module that adds tugraz configs.',
|
master_doc,
|
||||||
'Miscellaneous'),
|
"invenio-config-tugraz",
|
||||||
|
u"invenio-config-tugraz Documentation",
|
||||||
|
author,
|
||||||
|
"invenio-config-tugraz",
|
||||||
|
"invenio module that adds tugraz configs.",
|
||||||
|
"Miscellaneous",
|
||||||
|
),
|
||||||
]
|
]
|
||||||
|
|
||||||
# Documents to append as an appendix to all manuals.
|
# Documents to append as an appendix to all manuals.
|
||||||
@@ -315,10 +331,12 @@ texinfo_documents = [
|
|||||||
|
|
||||||
# Example configuration for intersphinx: refer to the Python standard library.
|
# Example configuration for intersphinx: refer to the Python standard library.
|
||||||
intersphinx_mapping = {
|
intersphinx_mapping = {
|
||||||
'python': ('https://docs.python.org/', None),
|
"python": ("https://docs.python.org/", None),
|
||||||
|
'flask': ('https://flask.palletsprojects.com/', None),
|
||||||
|
'werkzeug': ('https://werkzeug.palletsprojects.com/', None),
|
||||||
# TODO: Configure external documentation references, eg:
|
# TODO: Configure external documentation references, eg:
|
||||||
# 'Flask-Admin': ('https://flask-admin.readthedocs.io/en/latest/', None),
|
# 'Flask-Admin': ('https://flask-admin.readthedocs.io/en/latest/', None),
|
||||||
}
|
}
|
||||||
|
|
||||||
# Autodoc configuraton.
|
# Autodoc configuraton.
|
||||||
autoclass_content = 'both'
|
autoclass_content = "both"
|
||||||
|
|||||||
@@ -8,8 +8,8 @@
|
|||||||
|
|
||||||
"""invenio module that adds tugraz configs."""
|
"""invenio module that adds tugraz configs."""
|
||||||
|
|
||||||
from .ext import invenioconfigtugraz
|
from .ext import InvenioConfigTugraz
|
||||||
from .generators import RecordIp
|
from .generators import RecordIp
|
||||||
from .version import __version__
|
from .version import __version__
|
||||||
|
|
||||||
__all__ = ('__version__', 'invenioconfigtugraz', 'RecordIp')
|
__all__ = ("__version__", "InvenioConfigTugraz", "RecordIp")
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
# Copyright (C) 2020 Mojib Wali.
|
# Copyright (C) 2020-2021 Graz University of Technology.
|
||||||
#
|
#
|
||||||
# invenio-config-tugraz is free software; you can redistribute it and/or
|
# invenio-config-tugraz is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the MIT License; see LICENSE file for more
|
# modify it under the terms of the MIT License; see LICENSE file for more
|
||||||
@@ -46,39 +46,43 @@ Using Custom Generator for a policy:
|
|||||||
RECORDS_PERMISSIONS_RECORD_POLICY = TUGRAZPermissionPolicy
|
RECORDS_PERMISSIONS_RECORD_POLICY = TUGRAZPermissionPolicy
|
||||||
|
|
||||||
|
|
||||||
Permissions for Invenio (RDM) Records.
|
Permissions for Invenio records.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from invenio_records_permissions.generators import Admin, AnyUser, \
|
# from invenio_records_permissions.generators import (
|
||||||
AnyUserIfPublic, Disable, RecordOwners
|
# Admin,
|
||||||
from invenio_records_permissions.policies.base import BasePermissionPolicy
|
# AnyUser,
|
||||||
|
# AnyUserIfPublic,
|
||||||
|
# RecordOwners,
|
||||||
|
# )
|
||||||
|
# from invenio_records_permissions.policies.base import BasePermissionPolicy
|
||||||
|
|
||||||
from .generators import RecordIp
|
# from .generators import RecordIp
|
||||||
|
|
||||||
|
|
||||||
class TUGRAZPermissionPolicy(BasePermissionPolicy):
|
# class TUGRAZPermissionPolicy(BasePermissionPolicy):
|
||||||
"""Access control configuration for records.
|
# """Access control configuration for records.
|
||||||
|
|
||||||
This overrides the /api/records endpoint.
|
# This overrides the /api/records endpoint.
|
||||||
|
|
||||||
"""
|
# """
|
||||||
|
|
||||||
# Read access to API given to everyone.
|
# # Read access to API given to everyone.
|
||||||
can_search = [AnyUser(), RecordIp()]
|
# can_search = [AnyUser(), RecordIp()]
|
||||||
|
|
||||||
# Read access given to everyone if public record/files and owners always.
|
# # Read access given to everyone if public record/files and owners always.
|
||||||
can_read = [AnyUserIfPublic(), RecordOwners(), RecordIp()]
|
# can_read = [AnyUserIfPublic(), RecordOwners(), RecordIp()]
|
||||||
|
|
||||||
# Create action given to no one (Not even superusers) bc Deposits should
|
# # Create action given to no one (Not even superusers) bc Deposits should
|
||||||
# be used.
|
# # be used.
|
||||||
can_create = [AnyUser()]
|
# can_create = [AnyUser()]
|
||||||
|
|
||||||
# Update access given to record owners.
|
# # Update access given to record owners.
|
||||||
can_update = [RecordOwners()]
|
# can_update = [RecordOwners()]
|
||||||
|
|
||||||
# Delete access given to admins only.
|
# # Delete access given to admins only.
|
||||||
can_delete = [Admin()]
|
# can_delete = [Admin()]
|
||||||
|
|
||||||
# Associated files permissions (which are really bucket permissions)
|
# # Associated files permissions (which are really bucket permissions)
|
||||||
can_read_files = [AnyUserIfPublic(), RecordOwners()]
|
# can_read_files = [AnyUserIfPublic(), RecordOwners()]
|
||||||
can_update_files = [RecordOwners()]
|
# can_update_files = [RecordOwners()]
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
# Copyright (C) 2020 Mojib Wali.
|
# Copyright (C) 2020-2021 Graz University of Technology.
|
||||||
#
|
#
|
||||||
# invenio-config-tugraz is free software; you can redistribute it and/or
|
# invenio-config-tugraz is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the MIT License; see LICENSE file for more
|
# modify it under the terms of the MIT License; see LICENSE file for more
|
||||||
@@ -8,9 +8,11 @@
|
|||||||
|
|
||||||
"""invenio module that adds tugraz configs."""
|
"""invenio module that adds tugraz configs."""
|
||||||
|
|
||||||
|
from os.path import abspath, dirname, join
|
||||||
|
|
||||||
from flask_babelex import gettext as _
|
from flask_babelex import gettext as _
|
||||||
|
|
||||||
INVENIO_CONFIG_TUGRAZ_SHIBBOLETH = True
|
INVENIO_CONFIG_TUGRAZ_SHIBBOLETH = False
|
||||||
"""Set True if SAML is configured"""
|
"""Set True if SAML is configured"""
|
||||||
|
|
||||||
INVENIO_CONFIG_TUGRAZ_SINGLE_IP = []
|
INVENIO_CONFIG_TUGRAZ_SINGLE_IP = []
|
||||||
@@ -27,57 +29,64 @@ INVENIO_CONFIG_TUGRAZ_IP_RANGES =
|
|||||||
[["127.0.0.2", "127.0.0.99"], ["127.0.1.3", "127.0.1.5"]]
|
[["127.0.0.2", "127.0.0.99"], ["127.0.1.3", "127.0.1.5"]]
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
CONFIG_TUGRAZ_ROUTES = {
|
||||||
|
"guide": "/guide",
|
||||||
|
"terms": "/terms",
|
||||||
|
"gdpr": "/gdpr",
|
||||||
|
}
|
||||||
|
"""Defined routes for TUG."""
|
||||||
|
|
||||||
# Invenio-App
|
# Invenio-App
|
||||||
# ===========
|
# ===========
|
||||||
# See https://invenio-app.readthedocs.io/en/latest/configuration.html
|
# See https://invenio-app.readthedocs.io/en/latest/configuration.html
|
||||||
|
|
||||||
APP_ALLOWED_HOSTS = ['0.0.0.0',
|
|
||||||
'localhost',
|
|
||||||
'127.0.0.1',
|
|
||||||
'invenio-dev01.tugraz.at',
|
|
||||||
'invenio-test.tugraz.at'
|
|
||||||
]
|
|
||||||
"""Allowed Hosts"""
|
|
||||||
|
|
||||||
APP_DEFAULT_SECURE_HEADERS = {
|
APP_DEFAULT_SECURE_HEADERS = {
|
||||||
'content_security_policy': {
|
"content_security_policy": {
|
||||||
'default-src': [
|
"default-src": [
|
||||||
"'self'",
|
"'self'",
|
||||||
'fonts.googleapis.com',
|
"data:",
|
||||||
'*.gstatic.com',
|
|
||||||
'data:',
|
|
||||||
"'unsafe-inline'",
|
"'unsafe-inline'",
|
||||||
"'unsafe-eval'",
|
|
||||||
"blob:",
|
"blob:",
|
||||||
|
"ub-support.tugraz.at", # zammad contact form
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
'content_security_policy_report_only': False,
|
"content_security_policy_report_only": False,
|
||||||
'content_security_policy_report_uri': None,
|
"content_security_policy_report_uri": None,
|
||||||
'force_file_save': False,
|
"force_file_save": False,
|
||||||
'force_https': True,
|
"force_https": True,
|
||||||
'force_https_permanent': False,
|
"force_https_permanent": False,
|
||||||
'frame_options': 'sameorigin',
|
"frame_options": "sameorigin",
|
||||||
'frame_options_allow_from': None,
|
"frame_options_allow_from": None,
|
||||||
'session_cookie_http_only': True,
|
"session_cookie_http_only": True,
|
||||||
'session_cookie_secure': True,
|
"session_cookie_secure": True,
|
||||||
'strict_transport_security': True,
|
"strict_transport_security": True,
|
||||||
'strict_transport_security_include_subdomains': True,
|
"strict_transport_security_include_subdomains": True,
|
||||||
'strict_transport_security_max_age': 31556926, # One year in seconds
|
"strict_transport_security_max_age": 31556926, # One year in seconds
|
||||||
'strict_transport_security_preload': False,
|
"strict_transport_security_preload": False,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Invenio-I18N
|
||||||
|
# ============
|
||||||
|
# See https://invenio-i18n.readthedocs.io/en/latest/configuration.html
|
||||||
|
BABEL_DEFAULT_LOCALE = "en"
|
||||||
|
# Default time zone
|
||||||
|
BABEL_DEFAULT_TIMEZONE = "Europe/Vienna"
|
||||||
|
# Other supported languages (do not include BABEL_DEFAULT_LOCALE in list).
|
||||||
|
I18N_LANGUAGES = [("de", _("German"))]
|
||||||
|
|
||||||
# Invenio-Mail
|
# Invenio-Mail
|
||||||
# ===========
|
# ===========
|
||||||
# See https://invenio-mail.readthedocs.io/en/latest/configuration.html
|
# See https://invenio-mail.readthedocs.io/en/latest/configuration.html
|
||||||
|
|
||||||
MAIL_SERVER = 'localhost'
|
MAIL_SERVER = "localhost"
|
||||||
"""Domain ip where mail server is running."""
|
"""Domain ip where mail server is running."""
|
||||||
|
|
||||||
SECURITY_EMAIL_SENDER = "info@invenio-test.tugraz.at"
|
SECURITY_EMAIL_SENDER = "info@invenio-test.tugraz.at"
|
||||||
"""Email address used as sender of account registration emails."""
|
"""Email address used as sender of account registration emails."""
|
||||||
"""Domain name should match the domain used in web server."""
|
"""Domain name should match the domain used in web server."""
|
||||||
|
|
||||||
SECURITY_EMAIL_SUBJECT_REGISTER = _("Welcome to RDM!")
|
SECURITY_EMAIL_SUBJECT_REGISTER = _("Welcome to TU Graz Repository!")
|
||||||
"""Email subject for account registration emails."""
|
"""Email subject for account registration emails."""
|
||||||
|
|
||||||
MAIL_SUPPRESS_SEND = True
|
MAIL_SUPPRESS_SEND = True
|
||||||
@@ -102,10 +111,9 @@ Set this to False when sending actual emails.
|
|||||||
# ]
|
# ]
|
||||||
# REST_ENABLE_CORS = True
|
# REST_ENABLE_CORS = True
|
||||||
|
|
||||||
|
# Invenio-userprofiles
|
||||||
# Invenio-shibboleth
|
|
||||||
# ===========
|
# ===========
|
||||||
# See https://invenio-shibboleth.readthedocs.io/en/latest/configuration.html
|
# See https://invenio-userprofiles.readthedocs.io/en/latest/configuration.html
|
||||||
|
|
||||||
USERPROFILES_EXTEND_SECURITY_FORMS = True
|
USERPROFILES_EXTEND_SECURITY_FORMS = True
|
||||||
"""Set True in order to register user_profile.
|
"""Set True in order to register user_profile.
|
||||||
@@ -114,32 +122,45 @@ This also forces user to add username and fullname
|
|||||||
when register.
|
when register.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
USERPROFILES_EMAIL_ENABLED = True
|
||||||
|
"""Exclude the user email in the profile form."""
|
||||||
|
|
||||||
|
USERPROFILES_READ_ONLY = True
|
||||||
|
"""Allow users to change profile info (name, email, etc...)."""
|
||||||
|
|
||||||
|
# Invenio-saml
|
||||||
|
# ===========
|
||||||
|
# See https://invenio-saml.readthedocs.io/en/latest/configuration.html
|
||||||
|
|
||||||
SSO_SAML_IDPS = {}
|
SSO_SAML_IDPS = {}
|
||||||
"""Configuration of IDPS. Actual values can be find in to invenio.cfg file"""
|
"""Configuration of IDPS. Actual values can be find in to invenio.cfg file"""
|
||||||
|
|
||||||
SSO_SAML_DEFAULT_BLUEPRINT_PREFIX = '/shibboleth'
|
SSO_SAML_DEFAULT_BLUEPRINT_PREFIX = "/shibboleth"
|
||||||
"""Base URL for the extensions endpoint."""
|
"""Base URL for the extensions endpoint."""
|
||||||
|
|
||||||
SSO_SAML_DEFAULT_METADATA_ROUTE = '/metadata/<idp>'
|
SSO_SAML_DEFAULT_METADATA_ROUTE = "/metadata/<idp>"
|
||||||
"""URL route for the metadata request."""
|
"""URL route for the metadata request."""
|
||||||
"""This is also SP entityID https://domain/shibboleth/metadata/<idp>"""
|
"""This is also SP entityID https://domain/shibboleth/metadata/<idp>"""
|
||||||
|
|
||||||
SSO_SAML_DEFAULT_SSO_ROUTE = '/login/<idp>'
|
SSO_SAML_DEFAULT_SSO_ROUTE = "/login/<idp>"
|
||||||
"""URL route for the SP login."""
|
"""URL route for the SP login."""
|
||||||
|
|
||||||
SSO_SAML_DEFAULT_ACS_ROUTE = '/authorized/<idp>'
|
SSO_SAML_DEFAULT_ACS_ROUTE = "/authorized/<idp>"
|
||||||
"""URL route to handle the IdP login request."""
|
"""URL route to handle the IdP login request."""
|
||||||
|
|
||||||
SSO_SAML_DEFAULT_SLO_ROUTE = '/slo/<idp>'
|
SSO_SAML_DEFAULT_SLO_ROUTE = "/slo/<idp>"
|
||||||
"""URL route for the SP logout."""
|
"""URL route for the SP logout."""
|
||||||
|
|
||||||
SSO_SAML_DEFAULT_SLS_ROUTE = '/sls/<idp>'
|
SSO_SAML_DEFAULT_SLS_ROUTE = "/sls/<idp>"
|
||||||
"""URL route to handle the IdP logout request."""
|
"""URL route to handle the IdP logout request."""
|
||||||
|
|
||||||
# Invenio-accounts
|
# Invenio-accounts
|
||||||
# ===========
|
# ===========
|
||||||
# See https://invenio-accounts.readthedocs.io/en/latest/configuration.html
|
# See https://invenio-accounts.readthedocs.io/en/latest/configuration.html
|
||||||
|
|
||||||
|
ACCOUNTS_LOCAL_LOGIN_ENABLED = True
|
||||||
|
"""Allow local login."""
|
||||||
|
|
||||||
SECURITY_CHANGEABLE = False
|
SECURITY_CHANGEABLE = False
|
||||||
"""Allow password change by users."""
|
"""Allow password change by users."""
|
||||||
|
|
||||||
@@ -159,6 +180,15 @@ SECURITY_CONFIRMABLE = False
|
|||||||
Instead user will get a welcome email.
|
Instead user will get a welcome email.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# Flask-Security
|
||||||
|
# =============
|
||||||
|
# See https://pythonhosted.org/Flask-Security/configuration.html
|
||||||
|
SECURITY_EMAIL_PLAINTEXT = True
|
||||||
|
"""Render email content as plaintext."""
|
||||||
|
|
||||||
|
SECURITY_EMAIL_HTML = False
|
||||||
|
"""Render email content as HTML."""
|
||||||
|
|
||||||
|
|
||||||
ACCOUNTS = True
|
ACCOUNTS = True
|
||||||
"""Tells if the templates should use the accounts module.
|
"""Tells if the templates should use the accounts module.
|
||||||
@@ -185,9 +215,118 @@ RECAPTCHA_PRIVATE_KEY = None
|
|||||||
# =======
|
# =======
|
||||||
# See:
|
# See:
|
||||||
# https://invenio-records-permissions.readthedocs.io/en/latest/configuration.html
|
# https://invenio-records-permissions.readthedocs.io/en/latest/configuration.html
|
||||||
#
|
# Uncomment these to enable overriding RDM permissions
|
||||||
# Uncomment these to enable overriden
|
# from .rdm_permissions import TUGRAZRDMRecordServiceConfig
|
||||||
# RECORDS_PERMISSIONS_RECORD_POLICY = (
|
# RDM_RECORDS_BIBLIOGRAPHIC_SERVICE_CONFIG = TUGRAZRDMRecordServiceConfig
|
||||||
# 'invenio_config_tugraz.permissions.TUGRAZPermissionPolicy'
|
|
||||||
# )
|
|
||||||
"""Access control configuration for records."""
|
"""Access control configuration for records."""
|
||||||
|
|
||||||
|
# invenio-rdm-records
|
||||||
|
# =======
|
||||||
|
# See:
|
||||||
|
# https://invenio-rdm-records.readthedocs.io/en/latest/configuration.html
|
||||||
|
#
|
||||||
|
RDM_RECORDS_USER_FIXTURE_PASSWORDS = {"info@tugraz.at": None}
|
||||||
|
"""Overrides for the user fixtures' passwords.
|
||||||
|
The password set for a user fixture in this dictionary overrides the
|
||||||
|
password set in the ``users.yaml`` file. This can be used to set custom
|
||||||
|
passwords for the fixture users (of course, this has to be configured
|
||||||
|
before the fixtures are installed, e.g. by setting up the services).
|
||||||
|
If ``None`` or an empty string is configured in this dictionary, then the
|
||||||
|
password from ``users.yaml`` will be used. If that is also absent, a password
|
||||||
|
will be generated randomly.
|
||||||
|
"""
|
||||||
|
|
||||||
|
DATACITE_FORMAT = "{prefix}/{id}"
|
||||||
|
"""Customize the generated DOI string."""
|
||||||
|
|
||||||
|
# Invenio-app-rdm
|
||||||
|
# =========================
|
||||||
|
# See https://github.com/inveniosoftware/invenio-app-rdm/blob/master/invenio_app_rdm/config.py
|
||||||
|
APP_RDM_DEPOSIT_FORM_DEFAULTS = {
|
||||||
|
"publisher": "Graz University of Technology",
|
||||||
|
}
|
||||||
|
"""Default values for new records in the deposit UI.
|
||||||
|
|
||||||
|
The keys denote the dot-separated path, where in the record's metadata
|
||||||
|
the values should be set (see invenio-records.dictutils).
|
||||||
|
If the value is callable, its return value will be used for the field
|
||||||
|
(e.g. lambda/function for dynamic calculation of values).
|
||||||
|
"""
|
||||||
|
|
||||||
|
SQLALCHEMY_ECHO = False
|
||||||
|
"""Enable to see all SQL queries."""
|
||||||
|
|
||||||
|
SQLALCHEMY_ENGINE_OPTIONS = {
|
||||||
|
"pool_pre_ping": False,
|
||||||
|
"pool_recycle": 3600,
|
||||||
|
# set a more agressive timeout to ensure http requests don't wait for long
|
||||||
|
"pool_timeout": 10,
|
||||||
|
}
|
||||||
|
"""SQLAlchemy engine options.
|
||||||
|
|
||||||
|
This is used to configure for instance the database connection pool.
|
||||||
|
Specifically for connection pooling the following options below are relevant.
|
||||||
|
Note, that the connection pool settings have to be aligned with:
|
||||||
|
|
||||||
|
1. your database server's max allowed connections settings, and
|
||||||
|
2. your application deployment (number of processes/threads)
|
||||||
|
|
||||||
|
**Disconnect handling**
|
||||||
|
|
||||||
|
Note, it's possible that a connection you get from the connection pool is no
|
||||||
|
longer open. This happens if e.g. the database server was restarted or the
|
||||||
|
server has a timeout that closes the connection. In these case you'll see an
|
||||||
|
error similar to::
|
||||||
|
|
||||||
|
psycopg2.OperationalError: server closed the connection unexpectedly
|
||||||
|
This probably means the server terminated abnormally
|
||||||
|
before or while processing the request.
|
||||||
|
|
||||||
|
The errors can be avoided by using the ``pool_pre_ping`` option, which will
|
||||||
|
ensure the connection is open first by issuing a ``SELECT 1``. The pre-ping
|
||||||
|
feature however, comes with a performance penalty, and thus it may be better
|
||||||
|
to first try adjusting the ``pool_recyle`` to ensure connections are closed and
|
||||||
|
reopened regularly.
|
||||||
|
|
||||||
|
... code-block:: python
|
||||||
|
|
||||||
|
SQLALCHEMY_ENGINE_OPTIONS = dict(
|
||||||
|
# enable the connection pool “pre-ping” feature that tests connections
|
||||||
|
# for liveness upon each checkout.
|
||||||
|
pool_pre_ping=True,
|
||||||
|
|
||||||
|
# the number of connections to allow in connection pool “overflow”,
|
||||||
|
# that is connections that can be opened above and beyond the
|
||||||
|
# pool_size setting
|
||||||
|
max_overflow=10,
|
||||||
|
|
||||||
|
# the number of connections to keep open inside the connection
|
||||||
|
pool_size=5,
|
||||||
|
|
||||||
|
# recycle connections after the given number of seconds has passed.
|
||||||
|
pool_recycle=3600,
|
||||||
|
|
||||||
|
# number of seconds to wait before giving up on getting a connection
|
||||||
|
# from the pool
|
||||||
|
pool_timeout=30,
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
See https://docs.sqlalchemy.org/en/latest/core/engines.html.
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Redis (cache)
|
||||||
|
# ========
|
||||||
|
# Cache or Redis configurations
|
||||||
|
RATELIMIT_AUTHENTICATED_USER = "25000 per hour;1000 per minute"
|
||||||
|
"""Increase defaults for authenticated users."""
|
||||||
|
|
||||||
|
RATELIMIT_GUEST_USER = "5000 per hour;500 per minute"
|
||||||
|
"""Increase defaults for guest users."""
|
||||||
|
|
||||||
|
# OAI-PMH
|
||||||
|
# =======
|
||||||
|
# See https://github.com/inveniosoftware/invenio-oaiserver/blob/master/invenio_oaiserver/config.py
|
||||||
|
|
||||||
|
OAISERVER_ID_PREFIX = "repository.tugraz.at"
|
||||||
|
"""The prefix that will be applied to the generated OAI-PMH ids."""
|
||||||
|
|||||||
@@ -7,13 +7,12 @@
|
|||||||
# details.
|
# details.
|
||||||
|
|
||||||
"""invenio module that adds tugraz configs."""
|
"""invenio module that adds tugraz configs."""
|
||||||
|
from flask import Blueprint
|
||||||
from flask_babelex import gettext as _
|
|
||||||
|
|
||||||
from . import config
|
from . import config
|
||||||
|
|
||||||
|
|
||||||
class invenioconfigtugraz(object):
|
class InvenioConfigTugraz(object):
|
||||||
"""invenio-config-tugraz extension."""
|
"""invenio-config-tugraz extension."""
|
||||||
|
|
||||||
def __init__(self, app=None):
|
def __init__(self, app=None):
|
||||||
@@ -24,10 +23,10 @@ class invenioconfigtugraz(object):
|
|||||||
def init_app(self, app):
|
def init_app(self, app):
|
||||||
"""Flask application initialization."""
|
"""Flask application initialization."""
|
||||||
self.init_config(app)
|
self.init_config(app)
|
||||||
app.extensions['invenio-config-tugraz'] = self
|
app.extensions["invenio-config-tugraz"] = self
|
||||||
|
|
||||||
def init_config(self, app):
|
def init_config(self, app):
|
||||||
"""Initialize configuration."""
|
"""Initialize configuration."""
|
||||||
for k in dir(config):
|
for k in dir(config):
|
||||||
if k.startswith('INVENIO_CONFIG_TUGRAZ_'):
|
if k.startswith("INVENIO_CONFIG_TUGRAZ_"):
|
||||||
app.config.setdefault(k, getattr(config, k))
|
app.config.setdefault(k, getattr(config, k))
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
# Copyright (C) 2020 Mojib Wali.
|
# Copyright (C) 2020-2021 Graz University of Technology.
|
||||||
#
|
#
|
||||||
# invenio-config-tugraz is free software; you can redistribute it and/or
|
# invenio-config-tugraz is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the MIT License; see LICENSE file for more
|
# modify it under the terms of the MIT License; see LICENSE file for more
|
||||||
@@ -153,27 +153,32 @@ The succinct encoding of the permissions for your instance gives you
|
|||||||
|
|
||||||
from elasticsearch_dsl.query import Q
|
from elasticsearch_dsl.query import Q
|
||||||
from flask import current_app, request
|
from flask import current_app, request
|
||||||
|
from invenio_access.permissions import any_user, superuser_access
|
||||||
from invenio_records_permissions.generators import Generator
|
from invenio_records_permissions.generators import Generator
|
||||||
|
|
||||||
|
|
||||||
class RecordIp(Generator):
|
class RecordIp(Generator):
|
||||||
"""Allowed any user with accessing with the IP."""
|
"""Allowed any user with accessing with the IP."""
|
||||||
|
|
||||||
# TODO: Implement
|
def needs(self, record=None, **kwargs):
|
||||||
def needs(self, **kwargs):
|
"""Enabling Needs, Set of Needs granting permission."""
|
||||||
"""Enabling Needs, Set of Needs granting permission.
|
if record is None:
|
||||||
|
return []
|
||||||
|
|
||||||
If ANY of the Needs are matched, permission is granted.
|
# check if singleip is in the records restriction
|
||||||
|
is_single_ip = record.get("access", {}).get("access_right") == "singleip"
|
||||||
|
|
||||||
.. note::
|
# check if the user ip is on list
|
||||||
|
visible = self.check_permission()
|
||||||
|
|
||||||
``_load_permissions()`` method from `Permission
|
if not is_single_ip:
|
||||||
<https://invenio-access.readthedocs.io/en/latest/api.html
|
# if record does not have singleip - return any_user
|
||||||
#invenio_access.permissions.Permission>`_ adds by default the
|
return [any_user]
|
||||||
``superuser_access`` Need (if tied to a User or Role) for us.
|
# if record has singleip, then check the ip of user - if ip user is on list - return any_user
|
||||||
It also expands ActionNeeds into the Users/Roles that
|
elif visible:
|
||||||
provide them.
|
return [any_user]
|
||||||
"""
|
else:
|
||||||
|
# non of the above - return empty
|
||||||
return []
|
return []
|
||||||
|
|
||||||
def excludes(self, **kwargs):
|
def excludes(self, **kwargs):
|
||||||
@@ -196,19 +201,23 @@ class RecordIp(Generator):
|
|||||||
"""
|
"""
|
||||||
return []
|
return []
|
||||||
|
|
||||||
def query_filter(self, **kwargs):
|
def query_filter(self, *args, **kwargs):
|
||||||
"""Elasticsearch filters, List of ElasticSearch query filters.
|
"""Filters for singleip records."""
|
||||||
|
# check if the user ip is on list
|
||||||
|
visible = self.check_permission()
|
||||||
|
|
||||||
These filters consist of additive queries mapping to what the current
|
if not visible:
|
||||||
user should be able to retrieve via search.
|
# If user ip is not on the list, and If the record contains 'singleip' will not be seen
|
||||||
"""
|
return ~Q("match", **{"access.access_right": "singleip"})
|
||||||
return Q('match_all')
|
|
||||||
|
# Lists all records
|
||||||
|
return Q("match_all")
|
||||||
|
|
||||||
def check_permission(self):
|
def check_permission(self):
|
||||||
"""Check for User IP address in config variable."""
|
"""Check for User IP address in config variable."""
|
||||||
# Get user IP
|
# Get user IP
|
||||||
user_ip = request.remote_addr # pragma: no cover
|
user_ip = request.remote_addr
|
||||||
# Checks if the user IP is among single IPs
|
# Checks if the user IP is among single IPs
|
||||||
if user_ip in current_app.config['INVENIO_CONFIG_TUGRAZ_SINGLE_IP']:
|
if user_ip in current_app.config["INVENIO_CONFIG_TUGRAZ_SINGLE_IP"]:
|
||||||
return True # pragma: no cover
|
return True
|
||||||
return False # pragma: no cover
|
return False
|
||||||
|
|||||||
86
invenio_config_tugraz/rdm_permissions.py
Normal file
86
invenio_config_tugraz/rdm_permissions.py
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# Copyright (C) 2020-2021 Graz University of Technology.
|
||||||
|
#
|
||||||
|
# invenio-config-tugraz is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the MIT License; see LICENSE file for more
|
||||||
|
# details.
|
||||||
|
|
||||||
|
"""
|
||||||
|
Records permission policies.
|
||||||
|
|
||||||
|
Default policies for records:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
# Read access given to everyone.
|
||||||
|
can_search = [AnyUser()]
|
||||||
|
# Create action given to no one (Not even superusers) bc Deposits should
|
||||||
|
# be used.
|
||||||
|
can_create = [Disable()]
|
||||||
|
# Read access given to everyone if public record/files and owners always.
|
||||||
|
can_read = [AnyUserIfPublic(), RecordOwners()]
|
||||||
|
# Update access given to record owners.
|
||||||
|
can_update = [RecordOwners()]
|
||||||
|
# Delete access given to admins only.
|
||||||
|
can_delete = [Admin()]
|
||||||
|
# Associated files permissions (which are really bucket permissions)
|
||||||
|
can_read_files = [AnyUserIfPublic(), RecordOwners()]
|
||||||
|
can_update_files = [RecordOwners()]
|
||||||
|
|
||||||
|
How to override default policies for rdm-records.
|
||||||
|
|
||||||
|
Using Custom Generator for a policy:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
from invenio_rdm_records.services import (
|
||||||
|
BibliographicRecordServiceConfig,
|
||||||
|
RDMRecordPermissionPolicy,
|
||||||
|
)
|
||||||
|
|
||||||
|
from invenio_config_tugraz.generators import RecordIp
|
||||||
|
|
||||||
|
class TUGRAZPermissionPolicy(RDMRecordPermissionPolicy):
|
||||||
|
|
||||||
|
# Create access given to SuperUser only.
|
||||||
|
|
||||||
|
can_create = [SuperUser()]
|
||||||
|
|
||||||
|
RDM_RECORDS_BIBLIOGRAPHIC_SERVICE_CONFIG = TUGRAZBibliographicRecordServiceConfig
|
||||||
|
|
||||||
|
|
||||||
|
Permissions for Invenio (RDM) Records.
|
||||||
|
"""
|
||||||
|
|
||||||
|
# from invenio_rdm_records.services import RDMRecordPermissionPolicy
|
||||||
|
# from invenio_rdm_records.services.config import RDMRecordServiceConfig
|
||||||
|
# from invenio_rdm_records.services.generators import IfDraft, IfRestricted, RecordOwners
|
||||||
|
# from invenio_records_permissions.generators import (
|
||||||
|
# Admin,
|
||||||
|
# AnyUser,
|
||||||
|
# AuthenticatedUser,
|
||||||
|
# Disable,
|
||||||
|
# SuperUser,
|
||||||
|
# SystemProcess,
|
||||||
|
# )
|
||||||
|
|
||||||
|
|
||||||
|
# class TUGRAZPermissionPolicy(RDMRecordPermissionPolicy):
|
||||||
|
# """Access control configuration for rdm records.
|
||||||
|
|
||||||
|
# This overrides the origin:
|
||||||
|
# https://github.com/inveniosoftware/invenio-rdm-records/blob/master/invenio_rdm_records/services/permissions.py.
|
||||||
|
# Access control configuration for records.
|
||||||
|
# Note that even if the array is empty, the invenio_access Permission class
|
||||||
|
# always adds the ``superuser-access``, so admins will always be allowed.
|
||||||
|
# - Create action given to everyone for now.
|
||||||
|
# - Read access given to everyone if public record and given to owners
|
||||||
|
# always. (inherited)
|
||||||
|
# - Update access given to record owners. (inherited)
|
||||||
|
# - Delete access given to admins only. (inherited)
|
||||||
|
# """
|
||||||
|
|
||||||
|
|
||||||
|
# class TUGRAZRDMRecordServiceConfig(RDMRecordServiceConfig):
|
||||||
|
# """Overriding BibliographicRecordServiceConfig."""
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
access_right,access_right_name,icon,notes
|
||||||
|
open, Open Access, lock open
|
||||||
|
embargoed, Embargoed, ban
|
||||||
|
restricted, Restricted, key
|
||||||
|
closed, Private, lock
|
||||||
|
singleip, Single Ip, lock
|
||||||
|
@@ -0,0 +1,2 @@
|
|||||||
|
access_right,access_right_name,icon,notes
|
||||||
|
open, Open Access, lock open
|
||||||
|
@@ -1 +0,0 @@
|
|||||||
MIICjjCCAfegAwIBAgIBADANBgkqhkiG9w0BAQ0FADBkMQswCQYDVQQGEwJhdDENMAsGA1UECAwER3JhejEPMA0GA1UECgwGVFVHUkFaMRAwDgYDVQQDDAdpbnZlbmlvMSMwIQYJKoZIhvcNAQkBFhRtb2ppYi53YWxpQHR1Z3Jhei5hdDAeFw0yMDAxMTAyMDIwMTlaFw0yMTAxMDkyMDIwMTlaMGQxCzAJBgNVBAYTAmF0MQ0wCwYDVQQIDARHcmF6MQ8wDQYDVQQKDAZUVUdSQVoxEDAOBgNVBAMMB2ludmVuaW8xIzAhBgkqhkiG9w0BCQEWFG1vamliLndhbGlAdHVncmF6LmF0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5ZrPhRhyDyLTe93rpgqN9MMfnCsg+2QBW4EOuQnMXJzF1dqrFEsexot1FRW83IjqbY+680PmGABQtxUpS4Kinr/pLYbPhQ2WPQRad7mtOn/dD40VVwfG0GfcLrnKe5F4QLfNjervjl8jH/AKPCYwwfSeuw1LNoRjy1uDwkp9cRQIDAQABo1AwTjAdBgNVHQ4EFgQUPv2+wS1RuagCOed7w1FzouBmpP4wHwYDVR0jBBgwFoAUPv2+wS1RuagCOed7w1FzouBmpP4wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQ0FAAOBgQA4qvU7gbgE/MoljUW68qMPs8z8Q2Ngttp6F1KOMNO9rgrYWAJh4u6BMt11mlBgBlLLJzG67wXpBr0l78IcOXun4w955te0VRp7aZ0b1uOPt0aUoDOXuBAhZURLZfbsogpWiE6bdB8N0nHTwk2WG2PPIC5Z99UdDivcP5ZeSPAkUw==
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
MIICxjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIHxNp8P2PsV8CAggAMBQGCCqGSIb3DQMHBAjOyik6fsEC3gSCAoC4tFsYAl4GexyXESiRKpOQzHQNFtQtwDEevT1IKgsafSNjOMJZLKrnoejNoxEQUPPPXgGEd83Fmp2cSHm+YVksH06zcsA+RKf5ab6t0bsgcyljGzkHEDQtMRPcaXNlVMbU9VEDOX26MgmlU/pd+GGfE99IbEFc6qN1e7qOnmKSw93Q3o05ubO3wEI76JhOioGGXB3pEn8f4XLDwck0thzYD6H2vdF+kyIdM8w1BgyLdeP0aDkfG1V3rLGhE8246rwVUzRSZv6BCNBZFk7YO1d7j0+BDxnbHFS631zdCgMcd/XS8u6acc3IYr/bQLH4a1y0X3Z+8ks8arEgUtXqYx9wMlp5lajlsr9JDIU5OnuZ2XY+4sqDQsTZPjBpxK8oMjvJNNatnTf+18htkTdovpInlP7xpEjp1L7H74iKY25UsAZ9e+gqHZwILnk418mQ1E4JYU6JRUZspJSFfqwn9FL6DnvhzPIhtzwhr3eL4f4RXWxxe2xCzvWg+GaWuMfZdj77SV4pMOi7vb3HlYY6luShVlYKdSaw+jf6XVy4ZMTWT5wcE1mc3tAJqF18Mi8amOetpZhz16ISOKnO0rKrfmxteNPQn2AB8QquGGn050PTW4m8zFXDBiyg2xvcRLAW/8ych3k+pkEZi4tVCkLcHM56J/XUEKMCxiSok+vbzxfVf1D2vYFFS7Lw1nP5RnLKFdn8XdHQ+lu2diod18wYBQP4eoU+XjjP2zjlpULiWHt7PpCERqGg7H2Z2amIL5rTeqQuyXczw1/xG/VBNn9qe3DXFodvoV6OZb3efNT/eJgOyaPLi2FmB7Kpdp4JIdJgLnaBCwNBXkpGSwb732O/cug8
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
|
|
||||||
{
|
|
||||||
|
|
||||||
"strict": true,
|
|
||||||
"debug": true,
|
|
||||||
"idp": {
|
|
||||||
"entityId": "https://sso.tugraz.at/idp/shibboleth",
|
|
||||||
"singleLogoutService": {
|
|
||||||
"binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect",
|
|
||||||
"url": "https://sso.tugraz.at/slo/Logout"
|
|
||||||
},
|
|
||||||
|
|
||||||
"singleSignOnService": {
|
|
||||||
"binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect",
|
|
||||||
"url": "https://sso.tugraz.at/idp/profile/SAML2/Redirect/SSO"
|
|
||||||
},
|
|
||||||
|
|
||||||
"x509cert": "MIIDHzCCAgegAwIBAgIUG6ra0BvXswfyErcCDmzw3AV+uI0wDQYJKoZIhvcNAQEFBQAwGDEWMBQGA1UEAxMNc3NvLnR1Z3Jhei5hdDAeFw0xMDAzMjkxNzEzMTZaFw0zMDAzMjkxODEzMTZaMBgxFjAUBgNVBAMTDXNzby50dWdyYXouYXQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCEyQxHIM1zxbBnXn60Ksg7B7HcPLPcN7bXLrLPOFXtkZxm0YkHY5Rxignm7wHD7C81U09DFS2eT8qRCcVtVz+kuwdgS54fC/alg9oLxXk4CgKjhtZZ2ECLdTHfUXOA5uOLlpoN1LY6VpIjSYe3UEX3HxfhXx/fPeE8VInGCKnml8Too22G30htB/EU44A2yqrR3LUngJIaq //N0QbeMYitNh02o6xB5+bp6k6noM7DH6S9phe0kCEibaiLaCf7k9LpNnAz9bPtQVth0gdJqoUry/iK1QBTFTEXvvJynFEp0+5Wz/XFmEcFhsaK8OcHd0R9FfpX5Z2fewA2Q0SLKz+bAgMBAAGjYTBfMD4GA1UdEQQ3MDWCDXNzby50dWdyYXouYXSGJGh0dHBzOi8vc3NvLnR1Z3Jhei5hdC9pZHAvc2hpYmJvbGV0aDAdBgNVHQ4EFgQUXd76PcSiXR6wFna5qQi+S0W/9Y0wDQYJKoZIhvcNAQEFBQADggEBACgkQqxBtYY1OcuoAUP/P+ukJW7XyofK89qs2dkGClx7s0hR/1zImWgljgfguLJOSfC/CWE1wfNK9bTi4Fu9809PmOoaCxkNmniFRAyaOiBoUz5XIpJniW7wBo+YBpBlXZXi5PmU2DOsfZxo7fs4se32dHO1WqgJodqkK2Wa4HDiigh42trZ9i3uS73uHSSCeIJYQNj84BMJ+ifgj3Zi/TgLS+IX7Ayy2bkDzIzIRnj7ULQ/MgfacGXQXJPHyp+w+YvydQalPAWc43+5DkNacN34K8cE3XjHq1kx/BgYOtQ7M2Xa1oApLzPoHO4D2kaf6FCgGR8Mx7GVAz0aQVxfB8I="
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
<?xml version="1.0"?>
|
|
||||||
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" entityID="https://sso.tugraz.at/idp/shibboleth">
|
|
||||||
<md:IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
|
|
||||||
<md:KeyDescriptor use="signing">
|
|
||||||
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
|
|
||||||
<ds:X509Data>
|
|
||||||
<ds:X509Certificate>MIIDHzCCAgegAwIBAgIUG6ra0BvXswfyErcCDmzw3AV+uI0wDQYJKoZIhvcNAQEFBQAwGDEWMBQGA1UEAxMNc3NvLnR1Z3Jhei5hdDAeFw0xMDAzMjkxNzEzMTZaFw0zMDAzMjkxODEzMTZaMBgxFjAUBgNVBAMTDXNzby50dWdyYXouYXQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCEyQxHIM1zxbBnXn60Ksg7B7HcPLPcN7bXLrLPOFXtkZxm0YkHY5Rxignm7wHD7C81U09DFS2eT8qRCcVtVz+kuwdgS54fC/alg9oLxXk4CgKjhtZZ2ECLdTHfUXOA5uOLlpoN1LY6VpIjSYe3UEX3HxfhXx/fPeE8VInGCKnml8Too22G30htB/EU44A2yqrR3LUngJIaq//N0QbeMYitNh02o6xB5+bp6k6noM7DH6S9phe0kCEibaiLaCf7k9LpNnAz9bPtQVth0gdJqoUry/iK1QBTFTEXvvJynFEp0+5Wz/XFmEcFhsaK8OcHd0R9FfpX5Z2fewA2Q0SLKz+bAgMBAAGjYTBfMD4GA1UdEQQ3MDWCDXNzby50dWdyYXouYXSGJGh0dHBzOi8vc3NvLnR1Z3Jhei5hdC9pZHAvc2hpYmJvbGV0aDAdBgNVHQ4EFgQUXd76PcSiXR6wFna5qQi+S0W/9Y0wDQYJKoZIhvcNAQEFBQADggEBACgkQqxBtYY1OcuoAUP/P+ukJW7XyofK89qs2dkGClx7s0hR/1zImWgljgfguLJOSfC/CWE1wfNK9bTi4Fu9809PmOoaCxkNmniFRAyaOiBoUz5XIpJniW7wBo+YBpBlXZXi5PmU2DOsfZxo7fs4se32dHO1WqgJodqkK2Wa4HDiigh42trZ9i3uS73uHSSCeIJYQNj84BMJ+ifgj3Zi/TgLS+IX7Ayy2bkDzIzIRnj7ULQ/MgfacGXQXJPHyp+w+YvydQalPAWc43+5DkNacN34K8cE3XjHq1kx/BgYOtQ7M2Xa1oApLzPoHO4D2kaf6FCgGR8Mx7GVAz0aQVxfB8I=</ds:X509Certificate>
|
|
||||||
</ds:X509Data>
|
|
||||||
</ds:KeyInfo>
|
|
||||||
</md:KeyDescriptor>
|
|
||||||
<md:KeyDescriptor use="encryption">
|
|
||||||
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
|
|
||||||
<ds:X509Data>
|
|
||||||
<ds:X509Certificate>MIICxjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIHxNp8P2PsV8CAggAMBQGCCqGSIb3DQMHBAjOyik6fsEC3gSCAoC4tFsYAl4GexyXESiRKpOQzHQNFtQtwDEevT1IKgsafSNjOMJZLKrnoejNoxEQUPPPXgGEd83Fmp2cSHm+YVksH06zcsA+RKf5ab6t0bsgcyljGzkHEDQtMRPcaXNlVMbU9VEDOX26MgmlU/pd+GGfE99IbEFc6qN1e7qOnmKSw93Q3o05ubO3wEI76JhOioGGXB3pEn8f4XLDwck0thzYD6H2vdF+kyIdM8w1BgyLdeP0aDkfG1V3rLGhE8246rwVUzRSZv6BCNBZFk7YO1d7j0+BDxnbHFS631zdCgMcd/XS8u6acc3IYr/bQLH4a1y0X3Z+8ks8arEgUtXqYx9wMlp5lajlsr9JDIU5OnuZ2XY+4sqDQsTZPjBpxK8oMjvJNNatnTf+18htkTdovpInlP7xpEjp1L7H74iKY25UsAZ9e+gqHZwILnk418mQ1E4JYU6JRUZspJSFfqwn9FL6DnvhzPIhtzwhr3eL4f4RXWxxe2xCzvWg+GaWuMfZdj77SV4pMOi7vb3HlYY6luShVlYKdSaw+jf6XVy4ZMTWT5wcE1mc3tAJqF18Mi8amOetpZhz16ISOKnO0rKrfmxteNPQn2AB8QquGGn050PTW4m8zFXDBiyg2xvcRLAW/8ych3k+pkEZi4tVCkLcHM56J/XUEKMCxiSok+vbzxfVf1D2vYFFS7Lw1nP5RnLKFdn8XdHQ+lu2diod18wYBQP4eoU+XjjP2zjlpULiWHt7PpCERqGg7H2Z2amIL5rTeqQuyXczw1/xG/VBNn9qe3DXFodvoV6OZb3efNT/eJgOyaPLi2FmB7Kpdp4JIdJgLnaBCwNBXkpGSwb732O/cug8</ds:X509Certificate>
|
|
||||||
</ds:X509Data>
|
|
||||||
</ds:KeyInfo>
|
|
||||||
</md:KeyDescriptor>
|
|
||||||
<md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://sso.tugraz.at/slo/Logout"/>
|
|
||||||
<md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</md:NameIDFormat>
|
|
||||||
<md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://sso.tugraz.at/idp/profile/SAML2/Redirect/SSO"/>
|
|
||||||
</md:IDPSSODescriptor>
|
|
||||||
<md:ContactPerson contactType="technical">
|
|
||||||
<md:GivenName>Administrator</md:GivenName>
|
|
||||||
<md:EmailAddress>admin@example.org</md:EmailAddress>
|
|
||||||
</md:ContactPerson>
|
|
||||||
</md:EntityDescriptor>
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
MIICjjCCAfegAwIBAgIBADANBgkqhkiG9w0BAQ0FADBkMQswCQYDVQQGEwJhdDENMAsGA1UECAwER3JhejEPMA0GA1UECgwGVFVHUkFaMRAwDgYDVQQDDAdpbnZlbmlvMSMwIQYJKoZIhvcNAQkBFhRtb2ppYi53YWxpQHR1Z3Jhei5hdDAeFw0yMDAxMTAyMDIwMTlaFw0yMTAxMDkyMDIwMTlaMGQxCzAJBgNVBAYTAmF0MQ0wCwYDVQQIDARHcmF6MQ8wDQYDVQQKDAZUVUdSQVoxEDAOBgNVBAMMB2ludmVuaW8xIzAhBgkqhkiG9w0BCQEWFG1vamliLndhbGlAdHVncmF6LmF0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5ZrPhRhyDyLTe93rpgqN9MMfnCsg+2QBW4EOuQnMXJzF1dqrFEsexot1FRW83IjqbY+680PmGABQtxUpS4Kinr/pLYbPhQ2WPQRad7mtOn/dD40VVwfG0GfcLrnKe5F4QLfNjervjl8jH/AKPCYwwfSeuw1LNoRjy1uDwkp9cRQIDAQABo1AwTjAdBgNVHQ4EFgQUPv2+wS1RuagCOed7w1FzouBmpP4wHwYDVR0jBBgwFoAUPv2+wS1RuagCOed7w1FzouBmpP4wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQ0FAAOBgQA4qvU7gbgE/MoljUW68qMPs8z8Q2Ngttp6F1KOMNO9rgrYWAJh4u6BMt11mlBgBlLLJzG67wXpBr0l78IcOXun4w955te0VRp7aZ0b1uOPt0aUoDOXuBAhZURLZfbsogpWiE6bdB8N0nHTwk2WG2PPIC5Z99UdDivcP5ZeSPAkUw==
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
-----BEGIN RSA PRIVATE KEY-----
|
|
||||||
MIICxjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIHxNp8P2PsV8CAggA
|
|
||||||
MBQGCCqGSIb3DQMHBAjOyik6fsEC3gSCAoC4tFsYAl4GexyXESiRKpOQzHQNFtQt
|
|
||||||
wDEevT1IKgsafSNjOMJZLKrnoejNoxEQUPPPXgGEd83Fmp2cSHm+YVksH06zcsA+
|
|
||||||
RKf5ab6t0bsgcyljGzkHEDQtMRPcaXNlVMbU9VEDOX26MgmlU/pd+GGfE99IbEFc
|
|
||||||
6qN1e7qOnmKSw93Q3o05ubO3wEI76JhOioGGXB3pEn8f4XLDwck0thzYD6H2vdF+
|
|
||||||
kyIdM8w1BgyLdeP0aDkfG1V3rLGhE8246rwVUzRSZv6BCNBZFk7YO1d7j0+BDxnb
|
|
||||||
HFS631zdCgMcd/XS8u6acc3IYr/bQLH4a1y0X3Z+8ks8arEgUtXqYx9wMlp5lajl
|
|
||||||
sr9JDIU5OnuZ2XY+4sqDQsTZPjBpxK8oMjvJNNatnTf+18htkTdovpInlP7xpEjp
|
|
||||||
1L7H74iKY25UsAZ9e+gqHZwILnk418mQ1E4JYU6JRUZspJSFfqwn9FL6DnvhzPIh
|
|
||||||
tzwhr3eL4f4RXWxxe2xCzvWg+GaWuMfZdj77SV4pMOi7vb3HlYY6luShVlYKdSaw
|
|
||||||
+jf6XVy4ZMTWT5wcE1mc3tAJqF18Mi8amOetpZhz16ISOKnO0rKrfmxteNPQn2AB
|
|
||||||
8QquGGn050PTW4m8zFXDBiyg2xvcRLAW/8ych3k+pkEZi4tVCkLcHM56J/XUEKMC
|
|
||||||
xiSok+vbzxfVf1D2vYFFS7Lw1nP5RnLKFdn8XdHQ+lu2diod18wYBQP4eoU+XjjP
|
|
||||||
2zjlpULiWHt7PpCERqGg7H2Z2amIL5rTeqQuyXczw1/xG/VBNn9qe3DXFodvoV6O
|
|
||||||
Zb3efNT/eJgOyaPLi2FmB7Kpdp4JIdJgLnaBCwNBXkpGSwb732O/cug8
|
|
||||||
-----END RSA PRIVATE KEY-----
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
{
|
|
||||||
|
|
||||||
"strict": true,
|
|
||||||
"debug": true,
|
|
||||||
"idp": {
|
|
||||||
"entityId": "https://app.onelogin.com/saml/metadata/01661574-91ed-4735-a3b9-f4ddebb2cbb8",
|
|
||||||
"singleLogoutService": {
|
|
||||||
"binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect",
|
|
||||||
"url": "https://tugraz-dev.onelogin.com/trust/saml2/http-redirect/slo/1070112"
|
|
||||||
},
|
|
||||||
|
|
||||||
"singleSignOnService": {
|
|
||||||
"binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect",
|
|
||||||
"url": "https://tugraz-dev.onelogin.com/trust/saml2/http-post/sso/01661574-91ed-4735-a3b9-f4ddebb2cbb8"
|
|
||||||
},
|
|
||||||
|
|
||||||
"x509cert": "MIID2DCCAsCgAwIBAgIUWRGl84DFd+GbLYt0BmwyI+FCKVIwDQYJKoZIhvcNAQEFBQAwRDEPMA0GA1UECgwGVFVHUkFaMRUwEwYDVQQLDAxPbmVMb2dpbiBJZFAxGjAYBgNVBAMMEU9uZUxvZ2luIEFjY291bnQgMB4XDTIwMDEyODEwNDI1M1oXDTI1MDEyODEwNDI1M1owRDEPMA0GA1UECgwGVFVHUkFaMRUwEwYDVQQLDAxPbmVMb2dpbiBJZFAxGjAYBgNVBAMMEU9uZUxvZ2luIEFjY291bnQgMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAve5a++I/VHC22fMk5v8GwCvdIyiziOwGjq0XXyjTg9TyhHJZbfDXa7S0NjK7dK4+d3iaB3MvCpnr+7H2J2Cohracgy2BQz9Z4BqsjDat016zkAPoID9R6osliqocw1jESnyL59OJWftAiA4rFmQs6v/b56vgre8EP6qKbykq6mWvepGyBbfjRsYbFoIDmnW8kJoZtLMDQfTBvEF2veHDt9EbsWP+hyedMYTWCfsbTHhFKNrhRKr3m3k+w6Zsca2zp3A8xiFv0fcl6PglEwEZz2Iwb0ySifaf4ZLDVjSekpCLf29doBJYUeE5TUP8oHfATOcWW+m5D3MXVcMUax+AFwIDAQABo4HBMIG+MAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFK4GHoSfnMQKb8RjP2HrGzJ4ICiDMH8GA1UdIwR4MHaAFK4GHoSfnMQKb8RjP2HrGzJ4ICiDoUikRjBEMQ8wDQYDVQQKDAZUVUdSQVoxFTATBgNVBAsMDE9uZUxvZ2luIElkUDEaMBgGA1UEAwwRT25lTG9naW4gQWNjb3VudCCCFFkRpfOAxXfhmy2LdAZsMiPhQilSMA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQUFAAOCAQEAUg7UHFju0QA7ubcSLBuvEMUQL9jxtzDi0ndSi8qqtLJSjBalcfll0X/gI+sAMGMd0MW7P3abOVVfGBSlZN01KCPC2WHKRwzyO3sOCatkPrn2SYthQWHD/W7psyFgoDt5lQNijLyZdpvZbRIotxcWpoaTcBzaArd/0MNe1VaGlLK5GeqtbwL+dQD+O3mtSUfF918qeiOHEwI7nfPo7vjUyRT8Ov1loqP5+A0/R1CyL0Dh/tVdIkOHx6EjrIXsb/K6xXPknYZqPApPkZq514ZCEPhAILFU+5R/cQMZMZEacCdKuQ9XMkR8bqnh8xu620SCYiSVPXtVW4bpXKs0nJazBQ=="
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
<?xml version="1.0"?>
|
|
||||||
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" entityID="https://app.onelogin.com/saml/metadata/01661574-91ed-4735-a3b9-f4ddebb2cbb8">
|
|
||||||
<md:IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
|
|
||||||
<md:KeyDescriptor use="signing">
|
|
||||||
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
|
|
||||||
<ds:X509Data>
|
|
||||||
<ds:X509Certificate>MIID2DCCAsCgAwIBAgIUWRGl84DFd+GbLYt0BmwyI+FCKVIwDQYJKoZIhvcNAQEFBQAwRDEPMA0GA1UECgwGVFVHUkFaMRUwEwYDVQQLDAxPbmVMb2dpbiBJZFAxGjAYBgNVBAMMEU9uZUxvZ2luIEFjY291bnQgMB4XDTIwMDEyODEwNDI1M1oXDTI1MDEyODEwNDI1M1owRDEPMA0GA1UECgwGVFVHUkFaMRUwEwYDVQQLDAxPbmVMb2dpbiBJZFAxGjAYBgNVBAMMEU9uZUxvZ2luIEFjY291bnQgMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAve5a++I/VHC22fMk5v8GwCvdIyiziOwGjq0XXyjTg9TyhHJZbfDXa7S0NjK7dK4+d3iaB3MvCpnr+7H2J2Cohracgy2BQz9Z4BqsjDat016zkAPoID9R6osliqocw1jESnyL59OJWftAiA4rFmQs6v/b56vgre8EP6qKbykq6mWvepGyBbfjRsYbFoIDmnW8kJoZtLMDQfTBvEF2veHDt9EbsWP+hyedMYTWCfsbTHhFKNrhRKr3m3k+w6Zsca2zp3A8xiFv0fcl6PglEwEZz2Iwb0ySifaf4ZLDVjSekpCLf29doBJYUeE5TUP8oHfATOcWW+m5D3MXVcMUax+AFwIDAQABo4HBMIG+MAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFK4GHoSfnMQKb8RjP2HrGzJ4ICiDMH8GA1UdIwR4MHaAFK4GHoSfnMQKb8RjP2HrGzJ4ICiDoUikRjBEMQ8wDQYDVQQKDAZUVUdSQVoxFTATBgNVBAsMDE9uZUxvZ2luIElkUDEaMBgGA1UEAwwRT25lTG9naW4gQWNjb3VudCCCFFkRpfOAxXfhmy2LdAZsMiPhQilSMA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQUFAAOCAQEAUg7UHFju0QA7ubcSLBuvEMUQL9jxtzDi0ndSi8qqtLJSjBalcfll0X/gI+sAMGMd0MW7P3abOVVfGBSlZN01KCPC2WHKRwzyO3sOCatkPrn2SYthQWHD/W7psyFgoDt5lQNijLyZdpvZbRIotxcWpoaTcBzaArd/0MNe1VaGlLK5GeqtbwL+dQD+O3mtSUfF918qeiOHEwI7nfPo7vjUyRT8Ov1loqP5+A0/R1CyL0Dh/tVdIkOHx6EjrIXsb/K6xXPknYZqPApPkZq514ZCEPhAILFU+5R/cQMZMZEacCdKuQ9XMkR8bqnh8xu620SCYiSVPXtVW4bpXKs0nJazBQ==</ds:X509Certificate>
|
|
||||||
</ds:X509Data>
|
|
||||||
</ds:KeyInfo>
|
|
||||||
</md:KeyDescriptor>
|
|
||||||
<md:KeyDescriptor use="encryption">
|
|
||||||
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
|
|
||||||
<ds:X509Data>
|
|
||||||
<ds:X509Certificate>MIICxjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIHxNp8P2PsV8CAggAMBQGCCqGSIb3DQMHBAjOyik6fsEC3gSCAoC4tFsYAl4GexyXESiRKpOQzHQNFtQtwDEevT1IKgsafSNjOMJZLKrnoejNoxEQUPPPXgGEd83Fmp2cSHm+YVksH06zcsA+RKf5ab6t0bsgcyljGzkHEDQtMRPcaXNlVMbU9VEDOX26MgmlU/pd+GGfE99IbEFc6qN1e7qOnmKSw93Q3o05ubO3wEI76JhOioGGXB3pEn8f4XLDwck0thzYD6H2vdF+kyIdM8w1BgyLdeP0aDkfG1V3rLGhE8246rwVUzRSZv6BCNBZFk7YO1d7j0+BDxnbHFS631zdCgMcd/XS8u6acc3IYr/bQLH4a1y0X3Z+8ks8arEgUtXqYx9wMlp5lajlsr9JDIU5OnuZ2XY+4sqDQsTZPjBpxK8oMjvJNNatnTf+18htkTdovpInlP7xpEjp1L7H74iKY25UsAZ9e+gqHZwILnk418mQ1E4JYU6JRUZspJSFfqwn9FL6DnvhzPIhtzwhr3eL4f4RXWxxe2xCzvWg+GaWuMfZdj77SV4pMOi7vb3HlYY6luShVlYKdSaw+jf6XVy4ZMTWT5wcE1mc3tAJqF18Mi8amOetpZhz16ISOKnO0rKrfmxteNPQn2AB8QquGGn050PTW4m8zFXDBiyg2xvcRLAW/8ych3k+pkEZi4tVCkLcHM56J/XUEKMCxiSok+vbzxfVf1D2vYFFS7Lw1nP5RnLKFdn8XdHQ+lu2diod18wYBQP4eoU+XjjP2zjlpULiWHt7PpCERqGg7H2Z2amIL5rTeqQuyXczw1/xG/VBNn9qe3DXFodvoV6OZb3efNT/eJgOyaPLi2FmB7Kpdp4JIdJgLnaBCwNBXkpGSwb732O/cug8</ds:X509Certificate>
|
|
||||||
</ds:X509Data>
|
|
||||||
</ds:KeyInfo>
|
|
||||||
</md:KeyDescriptor>
|
|
||||||
<md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://tugraz-dev.onelogin.com/trust/saml2/http-redirect/slo/1070112"/>
|
|
||||||
<md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</md:NameIDFormat>
|
|
||||||
<md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://tugraz-dev.onelogin.com/trust/saml2/http-post/sso/01661574-91ed-4735-a3b9-f4ddebb2cbb8"/>
|
|
||||||
</md:IDPSSODescriptor>
|
|
||||||
<md:ContactPerson contactType="technical">
|
|
||||||
<md:GivenName>Administrator</md:GivenName>
|
|
||||||
<md:EmailAddress>admin@example.org</md:EmailAddress>
|
|
||||||
</md:ContactPerson>
|
|
||||||
</md:EntityDescriptor>
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
18
invenio_config_tugraz/templates/security/email/welcome.txt
Normal file
18
invenio_config_tugraz/templates/security/email/welcome.txt
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{{ _('Dear user,') }}
|
||||||
|
|
||||||
|
{{ _('Welcome to the Repository of TU Graz!') }}
|
||||||
|
|
||||||
|
{{ _('To help you get started, here are some useful links:') }}
|
||||||
|
|
||||||
|
- {{ _('Guidelines:')}} {{ _('Repository Guide')}} ({{ _('how to upload files')}}) (https://{{ config.SITE_HOSTNAME }}{{ url_for('invenio_config_tugraz.guide') }})
|
||||||
|
- {{ _('Search Guide')}} (https://{{ config.SITE_HOSTNAME }}{{url_for('invenio_app_rdm.help_search')}})
|
||||||
|
- {{ _('Terms And Conditions') }} (https://{{ config.SITE_HOSTNAME }}{{ url_for('invenio_config_tugraz.terms') }})
|
||||||
|
- {{ _('Data Protection Rights')}} (https://{{ config.SITE_HOSTNAME }}{{ url_for('invenio_config_tugraz.gdpr') }})
|
||||||
|
{% if security.confirmable %}
|
||||||
|
{{ _('You can confirm your email through the link below:') }}
|
||||||
|
{{ confirmation_link }}">
|
||||||
|
{% endif %}
|
||||||
|
{{ _('If you require any assistance please do not hesitate to contact us at repository-support@tugraz.at.') }}
|
||||||
|
|
||||||
|
{{ _('Best regards,') }}
|
||||||
|
{{ _('TU Graz Repository Team') }}
|
||||||
0
invenio_config_tugraz/translations/.gitkeep
Normal file
0
invenio_config_tugraz/translations/.gitkeep
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
# German translations for invenio-config-tugraz.
|
||||||
|
# Copyright (C) 2021 Graz University of Technology
|
||||||
|
# This file is distributed under the same license as the
|
||||||
|
# invenio-config-tugraz project.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2021.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: invenio-config-tugraz 0.5.5\n"
|
||||||
|
"Report-Msgid-Bugs-To: mojib.wali@tugraz.at\n"
|
||||||
|
"POT-Creation-Date: 2021-04-27 15:30+0200\n"
|
||||||
|
"PO-Revision-Date: 2021-04-22 11:57+0200\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language: de\n"
|
||||||
|
"Language-Team: de <LL@li.org>\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Generated-By: Babel 2.9.0\n"
|
||||||
|
|
||||||
|
#: invenio_config_tugraz/config.py:87
|
||||||
|
msgid "Welcome to TU Graz Repository!"
|
||||||
|
msgstr "Willkommen im TU Graz Repository!"
|
||||||
|
|
||||||
|
#: invenio_config_tugraz/templates/security/email/welcome.txt:1
|
||||||
|
msgid "Dear user,"
|
||||||
|
msgstr "Lieber Nutzer,"
|
||||||
|
|
||||||
|
#: invenio_config_tugraz/templates/security/email/welcome.txt:3
|
||||||
|
msgid "Welcome to the Repository of TU Graz!"
|
||||||
|
msgstr "Willkommen im TU Graz Repository!"
|
||||||
|
|
||||||
|
#: invenio_config_tugraz/templates/security/email/welcome.txt:5
|
||||||
|
msgid "To help you get started, here are some useful links:"
|
||||||
|
msgstr ""
|
||||||
|
"Um Ihnen den Einstieg zu erleichtern, finden Sie hier einige nützliche "
|
||||||
|
"Links:"
|
||||||
|
|
||||||
|
#: invenio_config_tugraz/templates/security/email/welcome.txt:7
|
||||||
|
msgid "Guidelines:"
|
||||||
|
msgstr "Leitfaden:"
|
||||||
|
|
||||||
|
#: invenio_config_tugraz/templates/security/email/welcome.txt:7
|
||||||
|
msgid "Repository Guide"
|
||||||
|
msgstr "Handbuch"
|
||||||
|
|
||||||
|
#: invenio_config_tugraz/templates/security/email/welcome.txt:7
|
||||||
|
msgid "how to upload files"
|
||||||
|
msgstr "wie man Dateien hochlädt"
|
||||||
|
|
||||||
|
#: invenio_config_tugraz/templates/security/email/welcome.txt:8
|
||||||
|
msgid "Search Guide"
|
||||||
|
msgstr "Suchanleitung"
|
||||||
|
|
||||||
|
#: invenio_config_tugraz/templates/security/email/welcome.txt:9
|
||||||
|
msgid "Terms And Conditions"
|
||||||
|
msgstr "Nutzungsbedingungen"
|
||||||
|
|
||||||
|
#: invenio_config_tugraz/templates/security/email/welcome.txt:10
|
||||||
|
msgid "Data Protection Rights"
|
||||||
|
msgstr "Datenschutzerklärung"
|
||||||
|
|
||||||
|
#: invenio_config_tugraz/templates/security/email/welcome.txt:13
|
||||||
|
msgid "You can confirm your email through the link below:"
|
||||||
|
msgstr "Sie können Ihre E-Mail über den folgenden Link bestätigen:"
|
||||||
|
|
||||||
|
#: invenio_config_tugraz/templates/security/email/welcome.txt:16
|
||||||
|
msgid ""
|
||||||
|
"If you require any assistance please do not hesitate to contact us at "
|
||||||
|
"repository-support@tugraz.at."
|
||||||
|
msgstr ""
|
||||||
|
"Wenn Sie Hilfe benötigen, zögern Sie bitte nicht, uns unter repository-"
|
||||||
|
"support@tugraz.at zu kontaktieren."
|
||||||
|
|
||||||
|
#: invenio_config_tugraz/templates/security/email/welcome.txt:18
|
||||||
|
msgid "Best regards,"
|
||||||
|
msgstr "Mit freundlichen Grüßen,"
|
||||||
|
|
||||||
|
#: invenio_config_tugraz/templates/security/email/welcome.txt:19
|
||||||
|
msgid "TU Graz Repository Team"
|
||||||
|
msgstr "TU Graz Repository Team"
|
||||||
|
|
||||||
78
invenio_config_tugraz/translations/messages.pot
Normal file
78
invenio_config_tugraz/translations/messages.pot
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
# Translations template for invenio-config-tugraz.
|
||||||
|
# Copyright (C) 2021 Graz University of Technology
|
||||||
|
# This file is distributed under the same license as the
|
||||||
|
# invenio-config-tugraz project.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2021.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: invenio-config-tugraz 0.5.5\n"
|
||||||
|
"Report-Msgid-Bugs-To: mojib.wali@tugraz.at\n"
|
||||||
|
"POT-Creation-Date: 2021-04-27 15:30+0200\n"
|
||||||
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Generated-By: Babel 2.9.0\n"
|
||||||
|
|
||||||
|
#: invenio_config_tugraz/config.py:87
|
||||||
|
msgid "Welcome to TU Graz Repository!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: invenio_config_tugraz/templates/security/email/welcome.txt:1
|
||||||
|
msgid "Dear user,"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: invenio_config_tugraz/templates/security/email/welcome.txt:3
|
||||||
|
msgid "Welcome to the Repository of TU Graz!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: invenio_config_tugraz/templates/security/email/welcome.txt:5
|
||||||
|
msgid "To help you get started, here are some useful links:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: invenio_config_tugraz/templates/security/email/welcome.txt:7
|
||||||
|
msgid "Guidelines:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: invenio_config_tugraz/templates/security/email/welcome.txt:7
|
||||||
|
msgid "Repository Guide"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: invenio_config_tugraz/templates/security/email/welcome.txt:7
|
||||||
|
msgid "how to upload files"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: invenio_config_tugraz/templates/security/email/welcome.txt:8
|
||||||
|
msgid "Search Guide"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: invenio_config_tugraz/templates/security/email/welcome.txt:9
|
||||||
|
msgid "Terms And Conditions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: invenio_config_tugraz/templates/security/email/welcome.txt:10
|
||||||
|
msgid "Data Protection Rights"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: invenio_config_tugraz/templates/security/email/welcome.txt:13
|
||||||
|
msgid "You can confirm your email through the link below:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: invenio_config_tugraz/templates/security/email/welcome.txt:16
|
||||||
|
msgid ""
|
||||||
|
"If you require any assistance please do not hesitate to contact us at "
|
||||||
|
"repository-support@tugraz.at."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: invenio_config_tugraz/templates/security/email/welcome.txt:18
|
||||||
|
msgid "Best regards,"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: invenio_config_tugraz/templates/security/email/welcome.txt:19
|
||||||
|
msgid "TU Graz Repository Team"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
# Copyright (C) 2020 Mojib Wali.
|
# Copyright (C) 2020-2021 Graz University of Technology.
|
||||||
#
|
#
|
||||||
# invenio-config-tugraz is free software; you can redistribute it and/or
|
# invenio-config-tugraz is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the MIT License; see LICENSE file for more
|
# modify it under the terms of the MIT License; see LICENSE file for more
|
||||||
@@ -12,4 +12,4 @@ This file is imported by ``invenio_config_tugraz.__init__``,
|
|||||||
and parsed by ``setup.py``.
|
and parsed by ``setup.py``.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
__version__ = '0.2.0'
|
__version__ = "0.7.1"
|
||||||
|
|||||||
73
invenio_config_tugraz/views.py
Normal file
73
invenio_config_tugraz/views.py
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# Copyright (C) 2020-2021 Graz University of Technology.
|
||||||
|
#
|
||||||
|
# invenio-config-tugraz is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the MIT License; see LICENSE file for more
|
||||||
|
# details.
|
||||||
|
|
||||||
|
"""invenio module for TUGRAZ config."""
|
||||||
|
|
||||||
|
from os import environ
|
||||||
|
from typing import Dict
|
||||||
|
|
||||||
|
from elasticsearch_dsl.utils import AttrDict
|
||||||
|
from flask import Blueprint, current_app, redirect, url_for
|
||||||
|
from flask_babelex import get_locale
|
||||||
|
|
||||||
|
|
||||||
|
def ui_blueprint(app):
|
||||||
|
"""Blueprint for the routes and resources provided by invenio-config-tugraz."""
|
||||||
|
routes = app.config.get("CONFIG_TUGRAZ_ROUTES")
|
||||||
|
|
||||||
|
blueprint = Blueprint(
|
||||||
|
"invenio_config_tugraz",
|
||||||
|
__name__,
|
||||||
|
template_folder="templates",
|
||||||
|
static_folder="static",
|
||||||
|
)
|
||||||
|
|
||||||
|
blueprint.add_url_rule(routes["guide"], view_func=guide)
|
||||||
|
blueprint.add_url_rule(routes["terms"], view_func=terms)
|
||||||
|
blueprint.add_url_rule(routes["gdpr"], view_func=gdpr)
|
||||||
|
|
||||||
|
@blueprint.before_app_first_request
|
||||||
|
def rank_higher():
|
||||||
|
"""Rank this modules blueprint higher than blueprint of security module.
|
||||||
|
|
||||||
|
Needed in order to overwrite email templates.
|
||||||
|
|
||||||
|
Since the blueprints are in a dict and the order of insertion is
|
||||||
|
retained, popping and reinserting all items (except ours), ensures
|
||||||
|
our blueprint will be in front.
|
||||||
|
"""
|
||||||
|
bps = current_app.blueprints
|
||||||
|
for blueprint_name in list(bps.keys()):
|
||||||
|
if blueprint_name != "invenio_config_tugraz":
|
||||||
|
bps.update({blueprint_name: bps.pop(blueprint_name)})
|
||||||
|
|
||||||
|
return blueprint
|
||||||
|
|
||||||
|
|
||||||
|
def guide():
|
||||||
|
"""TUGraz_Repository_Guide."""
|
||||||
|
locale = get_locale()
|
||||||
|
return redirect(url_for('static',
|
||||||
|
filename=f'documents/TUGraz_Repository_Guide_02_{locale}.pdf',
|
||||||
|
_external=True))
|
||||||
|
|
||||||
|
|
||||||
|
def terms():
|
||||||
|
"""Terms_And_Conditions."""
|
||||||
|
locale = get_locale()
|
||||||
|
return redirect(url_for('static',
|
||||||
|
filename=f'documents/TUGraz_Repository_Terms_And_Conditions_{locale}.pdf',
|
||||||
|
_external=True))
|
||||||
|
|
||||||
|
|
||||||
|
def gdpr():
|
||||||
|
"""General_Data_Protection_Rights."""
|
||||||
|
locale = get_locale()
|
||||||
|
return redirect(url_for('static',
|
||||||
|
filename=f'documents/TUGraz_Repository_General_Data_Protection_Rights_{locale}.pdf',
|
||||||
|
_external=True))
|
||||||
@@ -7,6 +7,6 @@
|
|||||||
# details.
|
# details.
|
||||||
|
|
||||||
[pytest]
|
[pytest]
|
||||||
addopts = --isort --pydocstyle --pycodestyle --doctest-glob="*.rst" --doctest-modules --cov=invenio_config_tugraz --cov-report=term-missing
|
addopts = --isort --pydocstyle --pycodestyle --doctest-glob="*.rst" --doctest-modules --cov=invenio_config_tugraz --cov-report=term-missing tests invenio_config_tugraz
|
||||||
testpaths = tests invenio_config_tugraz
|
testpaths = tests invenio_config_tugraz
|
||||||
live_server_scope = module
|
live_server_scope = module
|
||||||
30
run-tests.sh
30
run-tests.sh
@@ -1,17 +1,33 @@
|
|||||||
#!/usr/bin/env sh
|
#!/usr/bin/env bash
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
# Copyright (C) 2020 Mojib Wali.
|
# Copyright (C) 2019-2020 CERN.
|
||||||
|
# Copyright (C) 2019-2020 Northwestern University.
|
||||||
|
# Copyright (C) 2020 Graz University of Technology.
|
||||||
#
|
#
|
||||||
# invenio-config-tugraz is free software; you can redistribute it and/or
|
# invenio-config-tugraz is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the MIT License; see LICENSE file for more
|
# modify it under the terms of the MIT License; see LICENSE file for more
|
||||||
# details.
|
# details.
|
||||||
|
|
||||||
docker-services-cli up postgresql es redis
|
|
||||||
python -m check_manifest --ignore ".travis-*" && \
|
# Quit on errors
|
||||||
python -m sphinx.cmd.build -qnNW docs docs/_build/html && \
|
set -o errexit
|
||||||
docker-services-cli up es postgresql redis
|
|
||||||
|
# Quit on unbound symbols
|
||||||
|
set -o nounset
|
||||||
|
|
||||||
|
# Always bring down docker services
|
||||||
|
|
||||||
|
function cleanup() {
|
||||||
|
eval "$(docker-services-cli down --env)"
|
||||||
|
}
|
||||||
|
trap cleanup EXIT
|
||||||
|
|
||||||
|
|
||||||
|
python -m check_manifest --ignore ".*-requirements.txt"
|
||||||
|
python -m sphinx.cmd.build -qnN docs docs/_build/html
|
||||||
|
eval "$(docker-services-cli up --db ${DB:-postgresql} --search ${SEARCH:-elasticsearch} --cache ${CACHE:-redis} --env)"
|
||||||
python -m pytest
|
python -m pytest
|
||||||
tests_exit_code=$?
|
tests_exit_code=$?
|
||||||
docker-services-cli down
|
python -m sphinx.cmd.build -qnN -b doctest docs docs/_build/doctest
|
||||||
exit "$tests_exit_code"
|
exit "$tests_exit_code"
|
||||||
19
setup.cfg
19
setup.cfg
@@ -24,7 +24,7 @@ add_ignore = D401
|
|||||||
directory = invenio_config_tugraz/translations/
|
directory = invenio_config_tugraz/translations/
|
||||||
|
|
||||||
[extract_messages]
|
[extract_messages]
|
||||||
copyright_holder = Mojib Wali
|
copyright_holder = Graz University of Technology
|
||||||
msgid_bugs_address = mojib.wali@tugraz.at
|
msgid_bugs_address = mojib.wali@tugraz.at
|
||||||
mapping-file = babel.ini
|
mapping-file = babel.ini
|
||||||
output-file = invenio_config_tugraz/translations/messages.pot
|
output-file = invenio_config_tugraz/translations/messages.pot
|
||||||
@@ -37,3 +37,20 @@ output-dir = invenio_config_tugraz/translations/
|
|||||||
[update_catalog]
|
[update_catalog]
|
||||||
input-file = invenio_config_tugraz/translations/messages.pot
|
input-file = invenio_config_tugraz/translations/messages.pot
|
||||||
output-dir = invenio_config_tugraz/translations/
|
output-dir = invenio_config_tugraz/translations/
|
||||||
|
|
||||||
|
[flake8]
|
||||||
|
max-line-length = 88
|
||||||
|
extend-ignore = E203
|
||||||
|
select = C,E,F,W,B,B950
|
||||||
|
ignore = E501
|
||||||
|
|
||||||
|
[isort]
|
||||||
|
multi_line_output = 3
|
||||||
|
include_trailing_comma = True
|
||||||
|
force_grid_wrap = 0
|
||||||
|
use_parentheses = True
|
||||||
|
ensure_newline_before_comments = True
|
||||||
|
line_length = 88
|
||||||
|
|
||||||
|
[pycodestyle]
|
||||||
|
ignore = E203,E501
|
||||||
|
|||||||
106
setup.py
106
setup.py
@@ -1,6 +1,6 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
# Copyright (C) 2020 Mojib Wali.
|
# Copyright (C) 2020-2021 Graz University of Technology.
|
||||||
#
|
#
|
||||||
# invenio-config-tugraz is free software; you can redistribute it and/or
|
# invenio-config-tugraz is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the MIT License; see LICENSE file for more
|
# modify it under the terms of the MIT License; see LICENSE file for more
|
||||||
@@ -12,35 +12,47 @@ import os
|
|||||||
|
|
||||||
from setuptools import find_packages, setup
|
from setuptools import find_packages, setup
|
||||||
|
|
||||||
readme = open('README.rst').read()
|
readme = open("README.rst").read()
|
||||||
history = open('CHANGES.rst').read()
|
history = open("CHANGES.rst").read()
|
||||||
|
|
||||||
tests_require = [
|
tests_require = [
|
||||||
'pytest-invenio>=1.4.0',
|
"pytest-invenio>=1.4.1",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# Should follow invenio-app-rdm
|
||||||
|
invenio_search_version = ">=1.4.1,<1.5.0"
|
||||||
|
invenio_db_version = ">=1.0.9,<1.1.0"
|
||||||
|
|
||||||
extras_require = {
|
extras_require = {
|
||||||
'docs': [
|
"elasticsearch7": [f"invenio-search[elasticsearch7]{invenio_search_version}"],
|
||||||
'Sphinx>=1.5.1',
|
"mysql": [f"invenio-db[mysql,versioning]{invenio_db_version}"],
|
||||||
|
"postgresql": [f"invenio-db[postgresql,versioning]{invenio_db_version}"],
|
||||||
|
"sqlite": [f"invenio-db[versioning]{invenio_db_version}"],
|
||||||
|
"docs": [
|
||||||
|
"Sphinx==4.2.0",
|
||||||
],
|
],
|
||||||
'tests': tests_require,
|
"tests": tests_require,
|
||||||
}
|
}
|
||||||
|
|
||||||
extras_require['all'] = []
|
extras_require["all"] = []
|
||||||
for reqs in extras_require.values():
|
for name, reqs in extras_require.items():
|
||||||
extras_require['all'].extend(reqs)
|
if name[0] == ":" or name in (
|
||||||
|
"elasticsearch7",
|
||||||
|
"mysql",
|
||||||
|
"postgresql",
|
||||||
|
"sqlite",
|
||||||
|
):
|
||||||
|
continue
|
||||||
|
extras_require["all"].extend(reqs)
|
||||||
|
|
||||||
setup_requires = [
|
setup_requires = [
|
||||||
'Babel>=1.3',
|
"Babel>=2.8,<3",
|
||||||
'pytest-runner>=3.0.0,<5',
|
|
||||||
]
|
]
|
||||||
|
|
||||||
install_requires = [
|
install_requires = [
|
||||||
'Flask-BabelEx>=0.9.4',
|
# keep this in sync with invenioRDM release
|
||||||
'elasticsearch_dsl>=7.2.1',
|
"invenio-rdm-records>=0.33.2,<0.34.0",
|
||||||
'invenio-rdm-records~=0.18.3',
|
"invenio-cache>=1.1.0"
|
||||||
'invenio_search>=1.3.1',
|
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
packages = find_packages()
|
packages = find_packages()
|
||||||
@@ -48,33 +60,36 @@ packages = find_packages()
|
|||||||
|
|
||||||
# Get the version string. Cannot be done with import!
|
# Get the version string. Cannot be done with import!
|
||||||
g = {}
|
g = {}
|
||||||
with open(os.path.join('invenio_config_tugraz', 'version.py'), 'rt') as fp:
|
with open(os.path.join("invenio_config_tugraz", "version.py"), "rt") as fp:
|
||||||
exec(fp.read(), g)
|
exec(fp.read(), g)
|
||||||
version = g['__version__']
|
version = g["__version__"]
|
||||||
|
|
||||||
setup(
|
setup(
|
||||||
name='invenio-config-tugraz',
|
name="invenio-config-tugraz",
|
||||||
version=version,
|
version=version,
|
||||||
description=__doc__,
|
description=__doc__,
|
||||||
long_description=readme + '\n\n' + history,
|
long_description=readme + "\n\n" + history,
|
||||||
keywords='invenio, config, Tu Graz',
|
keywords="invenio, config, Tu Graz",
|
||||||
license='MIT',
|
license="MIT",
|
||||||
author='Mojib Wali',
|
author="Mojib Wali",
|
||||||
author_email='mojib.wali@tugraz.at',
|
author_email="mb_wali@hotmail.com",
|
||||||
url='https://github.com/mb-wali/invenio-config-tugraz',
|
url="https://github.com/tu-graz-library/invenio-config-tugraz",
|
||||||
packages=packages,
|
packages=packages,
|
||||||
zip_safe=False,
|
zip_safe=False,
|
||||||
include_package_data=True,
|
include_package_data=True,
|
||||||
platforms='any',
|
platforms="any",
|
||||||
entry_points={
|
entry_points={
|
||||||
'invenio_base.apps': [
|
"invenio_base.apps": [
|
||||||
'invenio_config_tugraz = invenio_config_tugraz:invenioconfigtugraz',
|
"invenio_config_tugraz = invenio_config_tugraz:InvenioConfigTugraz",
|
||||||
],
|
],
|
||||||
'invenio_i18n.translations': [
|
"invenio_base.blueprints": [
|
||||||
'messages = invenio_config_tugraz',
|
"invenio_config_tugraz = invenio_config_tugraz.views:ui_blueprint",
|
||||||
],
|
],
|
||||||
'invenio_config.module': [
|
"invenio_i18n.translations": [
|
||||||
'invenio_config_tugraz = invenio_config_tugraz.config',
|
"messages = invenio_config_tugraz",
|
||||||
|
],
|
||||||
|
"invenio_config.module": [
|
||||||
|
"invenio_config_tugraz = invenio_config_tugraz.config",
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
extras_require=extras_require,
|
extras_require=extras_require,
|
||||||
@@ -82,17 +97,18 @@ setup(
|
|||||||
setup_requires=setup_requires,
|
setup_requires=setup_requires,
|
||||||
tests_require=tests_require,
|
tests_require=tests_require,
|
||||||
classifiers=[
|
classifiers=[
|
||||||
'Environment :: Web Environment',
|
"Environment :: Web Environment",
|
||||||
'Intended Audience :: Developers',
|
"Intended Audience :: Developers",
|
||||||
'License :: OSI Approved :: MIT License',
|
"License :: OSI Approved :: MIT License",
|
||||||
'Operating System :: OS Independent',
|
"Operating System :: OS Independent",
|
||||||
'Programming Language :: Python',
|
"Programming Language :: Python",
|
||||||
'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
|
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",
|
||||||
'Topic :: Software Development :: Libraries :: Python Modules',
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
||||||
'Programming Language :: Python :: 3',
|
"Programming Language :: Python :: 3",
|
||||||
'Programming Language :: Python :: 3.6',
|
"Programming Language :: Python :: 3.6",
|
||||||
'Programming Language :: Python :: 3.7',
|
"Programming Language :: Python :: 3.7",
|
||||||
'Programming Language :: Python :: 3.8',
|
"Programming Language :: Python :: 3.8",
|
||||||
'Development Status :: 3 - Alpha',
|
"Programming Language :: Python :: 3.9",
|
||||||
|
"Development Status :: 5 - Production/Stable",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -12,17 +12,20 @@ See https://pytest-invenio.readthedocs.io/ for documentation on which test
|
|||||||
fixtures are available.
|
fixtures are available.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
import tempfile
|
import tempfile
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from flask import Flask
|
from flask import Flask
|
||||||
from flask_babelex import Babel
|
from flask_babelex import Babel
|
||||||
|
from invenio_db import InvenioDB, db
|
||||||
|
from sqlalchemy_utils.functions import create_database, database_exists, drop_database
|
||||||
|
|
||||||
from invenio_config_tugraz import invenioconfigtugraz
|
from invenio_config_tugraz import InvenioConfigTugraz
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope='module')
|
@pytest.fixture(scope="module")
|
||||||
def celery_config():
|
def celery_config():
|
||||||
"""Override pytest-invenio fixture.
|
"""Override pytest-invenio fixture.
|
||||||
|
|
||||||
@@ -31,13 +34,130 @@ def celery_config():
|
|||||||
return {}
|
return {}
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope='module')
|
@pytest.fixture()
|
||||||
def create_app(instance_path):
|
def create_app(request):
|
||||||
"""Application factory fixture."""
|
"""Basic Flask application."""
|
||||||
def factory(**config):
|
instance_path = tempfile.mkdtemp()
|
||||||
app = Flask('testapp', instance_path=instance_path)
|
app = Flask("testapp")
|
||||||
app.config.update(**config)
|
DB = os.getenv("SQLALCHEMY_DATABASE_URI", "sqlite://")
|
||||||
|
app.config.update(
|
||||||
|
INVENIO_CONFIG_TUGRAZ_SINGLE_IP=["127.0.0.1", "127.0.0.2"],
|
||||||
|
INVENIO_CONFIG_TUGRAZ_IP_RANGES=[
|
||||||
|
["127.0.0.2", "127.0.0.99"],
|
||||||
|
["127.0.1.3", "127.0.1.5"],
|
||||||
|
],
|
||||||
|
SQLALCHEMY_DATABASE_URI=DB,
|
||||||
|
SQLALCHEMY_TRACK_MODIFICATIONS=False,
|
||||||
|
)
|
||||||
Babel(app)
|
Babel(app)
|
||||||
invenioconfigtugraz(app)
|
InvenioConfigTugraz(app)
|
||||||
|
InvenioDB(app)
|
||||||
|
|
||||||
|
with app.app_context():
|
||||||
|
db_url = str(db.engine.url)
|
||||||
|
if db_url != "sqlite://" and not database_exists(db_url):
|
||||||
|
create_database(db_url)
|
||||||
|
db.create_all()
|
||||||
|
|
||||||
|
def teardown():
|
||||||
|
with app.app_context():
|
||||||
|
db_url = str(db.engine.url)
|
||||||
|
db.session.close()
|
||||||
|
if db_url != "sqlite://":
|
||||||
|
drop_database(db_url)
|
||||||
|
shutil.rmtree(instance_path)
|
||||||
|
|
||||||
|
request.addfinalizer(teardown)
|
||||||
|
app.test_request_context().push()
|
||||||
|
|
||||||
return app
|
return app
|
||||||
return factory
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope='function')
|
||||||
|
def open_record():
|
||||||
|
"""Open record data as dict coming from the external world."""
|
||||||
|
return {
|
||||||
|
"access": {
|
||||||
|
"metadata": False,
|
||||||
|
"files": False,
|
||||||
|
"owned_by": [1],
|
||||||
|
"access_right": "open"
|
||||||
|
},
|
||||||
|
"metadata": {
|
||||||
|
"publication_date": "2020-06-01",
|
||||||
|
"resource_type": {
|
||||||
|
"type": "image",
|
||||||
|
"subtype": "image-photo"
|
||||||
|
},
|
||||||
|
# Technically not required
|
||||||
|
"creators": [{
|
||||||
|
"name": "Troy Brown",
|
||||||
|
"type": "personal"
|
||||||
|
}, {
|
||||||
|
"name": "Phillip Lester",
|
||||||
|
"type": "personal",
|
||||||
|
"identifiers": {"orcid": "0000-0002-1825-0097"},
|
||||||
|
"affiliations": [{
|
||||||
|
"name": "Carter-Morris",
|
||||||
|
"identifiers": {"ror": "03yrm5c26"}
|
||||||
|
}]
|
||||||
|
}, {
|
||||||
|
"name": "Steven Williamson",
|
||||||
|
"type": "personal",
|
||||||
|
"identifiers": {"orcid": "0000-0002-1825-0097"},
|
||||||
|
"affiliations": [{
|
||||||
|
"name": "Ritter and Sons",
|
||||||
|
"identifiers": {"ror": "03yrm5c26"}
|
||||||
|
}, {
|
||||||
|
"name": "Montgomery, Bush and Madden",
|
||||||
|
"identifiers": {"ror": "03yrm5c26"}
|
||||||
|
}]
|
||||||
|
}],
|
||||||
|
"title": "A Romans story"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope='function')
|
||||||
|
def singleip_record():
|
||||||
|
"""Single Ip record data as dict coming from the external world."""
|
||||||
|
return {
|
||||||
|
"access": {
|
||||||
|
"metadata": False,
|
||||||
|
"files": False,
|
||||||
|
"owned_by": [1],
|
||||||
|
"access_right": "singleip"
|
||||||
|
},
|
||||||
|
"metadata": {
|
||||||
|
"publication_date": "2020-06-01",
|
||||||
|
"resource_type": {
|
||||||
|
"type": "image",
|
||||||
|
"subtype": "image-photo"
|
||||||
|
},
|
||||||
|
# Technically not required
|
||||||
|
"creators": [{
|
||||||
|
"name": "Troy Brown",
|
||||||
|
"type": "personal"
|
||||||
|
}, {
|
||||||
|
"name": "Phillip Lester",
|
||||||
|
"type": "personal",
|
||||||
|
"identifiers": {"orcid": "0000-0002-1825-0097"},
|
||||||
|
"affiliations": [{
|
||||||
|
"name": "Carter-Morris",
|
||||||
|
"identifiers": {"ror": "03yrm5c26"}
|
||||||
|
}]
|
||||||
|
}, {
|
||||||
|
"name": "Steven Williamson",
|
||||||
|
"type": "personal",
|
||||||
|
"identifiers": {"orcid": "0000-0002-1825-0097"},
|
||||||
|
"affiliations": [{
|
||||||
|
"name": "Ritter and Sons",
|
||||||
|
"identifiers": {"ror": "03yrm5c26"}
|
||||||
|
}, {
|
||||||
|
"name": "Montgomery, Bush and Madden",
|
||||||
|
"identifiers": {"ror": "03yrm5c26"}
|
||||||
|
}]
|
||||||
|
}],
|
||||||
|
"title": "A Romans story"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -6,12 +6,24 @@
|
|||||||
# modify it under the terms of the MIT License; see LICENSE file for more
|
# modify it under the terms of the MIT License; see LICENSE file for more
|
||||||
# details.
|
# details.
|
||||||
|
|
||||||
|
"""Test Generators."""
|
||||||
|
|
||||||
|
from invenio_access.permissions import any_user
|
||||||
|
|
||||||
from invenio_config_tugraz.generators import RecordIp
|
from invenio_config_tugraz.generators import RecordIp
|
||||||
|
|
||||||
|
|
||||||
def test_recordip():
|
def test_recordip(create_app, open_record, singleip_record):
|
||||||
|
"""Test Generator RecordIp."""
|
||||||
generator = RecordIp()
|
generator = RecordIp()
|
||||||
|
open_record = open_record
|
||||||
|
singleiprec = singleip_record
|
||||||
|
|
||||||
assert generator.needs() == []
|
assert generator.needs(record=None) == []
|
||||||
assert generator.excludes() == []
|
assert generator.needs(record=open_record) == [any_user]
|
||||||
assert generator.query_filter().to_dict() == {'match_all': {}}
|
assert generator.needs(record=singleiprec) == []
|
||||||
|
|
||||||
|
assert generator.excludes(record=open_record) == []
|
||||||
|
assert generator.excludes(record=open_record) == []
|
||||||
|
|
||||||
|
assert generator.query_filter().to_dict() == {'bool': {'must_not': [{'match': {'access.access_right': 'singleip'}}]}}
|
||||||
|
|||||||
@@ -10,23 +10,24 @@
|
|||||||
|
|
||||||
from flask import Flask
|
from flask import Flask
|
||||||
|
|
||||||
from invenio_config_tugraz import invenioconfigtugraz
|
from invenio_config_tugraz import InvenioConfigTugraz
|
||||||
|
|
||||||
|
|
||||||
def test_version():
|
def test_version():
|
||||||
"""Test version import."""
|
"""Test version import."""
|
||||||
from invenio_config_tugraz import __version__
|
from invenio_config_tugraz import __version__
|
||||||
|
|
||||||
assert __version__
|
assert __version__
|
||||||
|
|
||||||
|
|
||||||
def test_init():
|
def test_init():
|
||||||
"""Test extension initialization."""
|
"""Test extension initialization."""
|
||||||
app = Flask('testapp')
|
app = Flask("testapp")
|
||||||
ext = invenioconfigtugraz(app)
|
ext = InvenioConfigTugraz(app)
|
||||||
assert 'invenio-config-tugraz' in app.extensions
|
assert "invenio-config-tugraz" in app.extensions
|
||||||
|
|
||||||
app = Flask('testapp')
|
app = Flask("testapp")
|
||||||
ext = invenioconfigtugraz()
|
ext = InvenioConfigTugraz()
|
||||||
assert 'invenio-config-tugraz' not in app.extensions
|
assert "invenio-config-tugraz" not in app.extensions
|
||||||
ext.init_app(app)
|
ext.init_app(app)
|
||||||
assert 'invenio-config-tugraz' in app.extensions
|
assert "invenio-config-tugraz" in app.extensions
|
||||||
|
|||||||
Reference in New Issue
Block a user