mirror of
https://github.com/Cian-H/invenio-config-iform.git
synced 2025-12-23 05:21:57 +00:00
Compare commits
14 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d5fcf60cf7 | ||
|
|
772b21c93a | ||
|
|
c39221378f | ||
|
|
a42f86fcdf | ||
|
|
0dd0db04e2 | ||
|
|
b02ce8a755 | ||
|
|
41dcb8f437 | ||
|
|
35854691bd | ||
|
|
f2e18b95c3 | ||
|
|
16c10593d6 | ||
|
|
dbd870d106 | ||
|
|
f02e992acd | ||
|
|
a7abb0bc5e | ||
|
|
7ca398efdd |
14
CHANGES.rst
14
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,18 @@
|
|||||||
|
|
||||||
Changes
|
Changes
|
||||||
=======
|
=======
|
||||||
|
Version 0.8.0 (released 2022-02-09)
|
||||||
|
|
||||||
|
- dep: bump rdm-records version
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
|
|||||||
@@ -49,3 +49,6 @@ recursive-include invenio_config_tugraz *.html
|
|||||||
|
|
||||||
# added by check-manifest
|
# added by check-manifest
|
||||||
recursive-include invenio_config_tugraz *.csv
|
recursive-include invenio_config_tugraz *.csv
|
||||||
|
|
||||||
|
# added by check-manifest
|
||||||
|
recursive-include invenio_config_tugraz *.pdf
|
||||||
|
|||||||
@@ -38,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/
|
||||||
|
|||||||
@@ -332,6 +332,8 @@ 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),
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,29 +29,24 @@ 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",
|
|
||||||
"repository.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",
|
|
||||||
"*.gstatic.com",
|
|
||||||
"data:",
|
"data:",
|
||||||
"'unsafe-inline'",
|
"'unsafe-inline'",
|
||||||
"'unsafe-eval'",
|
|
||||||
"blob:",
|
"blob:",
|
||||||
"ub-support.tugraz.at", # zammad contact form
|
"ub-support.tugraz.at", # zammad contact form
|
||||||
],
|
],
|
||||||
@@ -71,6 +66,15 @@ APP_DEFAULT_SECURE_HEADERS = {
|
|||||||
"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
|
||||||
@@ -232,10 +236,15 @@ password from ``users.yaml`` will be used. If that is also absent, a password
|
|||||||
will be generated randomly.
|
will be generated randomly.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
DATACITE_FORMAT = "{prefix}/{id}"
|
||||||
|
"""Customize the generated DOI string."""
|
||||||
|
|
||||||
# Invenio-app-rdm
|
# Invenio-app-rdm
|
||||||
# =========================
|
# =========================
|
||||||
# See https://github.com/inveniosoftware/invenio-app-rdm/blob/master/invenio_app_rdm/config.py
|
# See https://github.com/inveniosoftware/invenio-app-rdm/blob/master/invenio_app_rdm/config.py
|
||||||
APP_RDM_DEPOSIT_FORM_DEFAULTS = {}
|
APP_RDM_DEPOSIT_FORM_DEFAULTS = {
|
||||||
|
"publisher": "Graz University of Technology",
|
||||||
|
}
|
||||||
"""Default values for new records in the deposit UI.
|
"""Default values for new records in the deposit UI.
|
||||||
|
|
||||||
The keys denote the dot-separated path, where in the record's metadata
|
The keys denote the dot-separated path, where in the record's metadata
|
||||||
@@ -305,3 +314,27 @@ reopened regularly.
|
|||||||
|
|
||||||
See https://docs.sqlalchemy.org/en/latest/core/engines.html.
|
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."""
|
||||||
|
|
||||||
|
OAISERVER_ADMIN_EMAILS = [
|
||||||
|
'oai@repository.tugraz.at',
|
||||||
|
]
|
||||||
|
"""The e-mail addresses of administrators of the repository.
|
||||||
|
|
||||||
|
It **must** include one or more instances.
|
||||||
|
"""
|
||||||
|
|||||||
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.
@@ -4,10 +4,10 @@
|
|||||||
|
|
||||||
{{ _('To help you get started, here are some useful links:') }}
|
{{ _('To help you get started, here are some useful links:') }}
|
||||||
|
|
||||||
- {{ _('Guidelines:')}} {{ _('Repository Guide')}} ({{ _('how to upload files')}}) (https://{{ config.SITE_HOSTNAME }}{{ url_for('invenio_theme_tugraz.guide') }})
|
- {{ _('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')}})
|
- {{ _('Search Guide')}} (https://{{ config.SITE_HOSTNAME }}{{url_for('invenio_app_rdm.help_search')}})
|
||||||
- {{ _('Terms And Conditions') }} (https://{{ config.SITE_HOSTNAME }}{{ url_for('invenio_theme_tugraz.terms') }})
|
- {{ _('Terms And Conditions') }} (https://{{ config.SITE_HOSTNAME }}{{ url_for('invenio_config_tugraz.terms') }})
|
||||||
- {{ _('Data Protection Rights')}} (https://{{ config.SITE_HOSTNAME }}{{ url_for('invenio_theme_tugraz.gdpr') }})
|
- {{ _('Data Protection Rights')}} (https://{{ config.SITE_HOSTNAME }}{{ url_for('invenio_config_tugraz.gdpr') }})
|
||||||
{% if security.confirmable %}
|
{% if security.confirmable %}
|
||||||
{{ _('You can confirm your email through the link below:') }}
|
{{ _('You can confirm your email through the link below:') }}
|
||||||
{{ confirmation_link }}">
|
{{ confirmation_link }}">
|
||||||
|
|||||||
@@ -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.6.0"
|
__version__ = "0.8.0"
|
||||||
|
|||||||
@@ -12,33 +12,62 @@ from os import environ
|
|||||||
from typing import Dict
|
from typing import Dict
|
||||||
|
|
||||||
from elasticsearch_dsl.utils import AttrDict
|
from elasticsearch_dsl.utils import AttrDict
|
||||||
from flask import Blueprint, current_app
|
from flask import Blueprint, current_app, redirect, url_for
|
||||||
|
from flask_babelex import get_locale
|
||||||
|
|
||||||
|
|
||||||
def ui_blueprint(app):
|
def ui_blueprint(app):
|
||||||
"""Blueprint for the routes and resources provided by invenio-config-tugraz."""
|
"""Blueprint for the routes and resources provided by invenio-config-tugraz."""
|
||||||
|
routes = app.config.get("CONFIG_TUGRAZ_ROUTES")
|
||||||
|
|
||||||
blueprint = Blueprint(
|
blueprint = Blueprint(
|
||||||
"invenio_config_tugraz",
|
"invenio_config_tugraz",
|
||||||
__name__,
|
__name__,
|
||||||
template_folder="templates",
|
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
|
@blueprint.before_app_first_request
|
||||||
def rank_higher():
|
def rank_higher():
|
||||||
"""Rank this modules blueprint higher than blueprint of security module."""
|
"""Rank this modules blueprint higher than blueprint of security module.
|
||||||
blueprints = current_app._blueprint_order
|
|
||||||
our_index = None
|
|
||||||
security_index = None
|
|
||||||
|
|
||||||
for index, bp in enumerate(blueprints):
|
Needed in order to overwrite email templates.
|
||||||
if bp.name == "security":
|
|
||||||
security_index = index
|
|
||||||
if bp.name == "invenio_config_tugraz":
|
|
||||||
our_index = index
|
|
||||||
|
|
||||||
if (security_index is not None) and (our_index > security_index):
|
Since the blueprints are in a dict and the order of insertion is
|
||||||
temp = blueprints[security_index]
|
retained, popping and reinserting all items (except ours), ensures
|
||||||
blueprints[security_index] = blueprints[our_index]
|
our blueprint will be in front.
|
||||||
blueprints[our_index] = temp
|
"""
|
||||||
|
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
|
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))
|
||||||
|
|||||||
@@ -25,9 +25,9 @@ trap cleanup EXIT
|
|||||||
|
|
||||||
|
|
||||||
python -m check_manifest --ignore ".*-requirements.txt"
|
python -m check_manifest --ignore ".*-requirements.txt"
|
||||||
python -m sphinx.cmd.build -qnNW docs docs/_build/html
|
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)"
|
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=$?
|
||||||
python -m sphinx.cmd.build -qnNW -b doctest docs docs/_build/doctest
|
python -m sphinx.cmd.build -qnN -b doctest docs docs/_build/doctest
|
||||||
exit "$tests_exit_code"
|
exit "$tests_exit_code"
|
||||||
|
|||||||
17
setup.py
17
setup.py
@@ -16,12 +16,11 @@ 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",
|
||||||
"invenio-app>=1.3.0,<2.0.0",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
# Should follow invenio-app-rdm
|
# Should follow invenio-app-rdm
|
||||||
invenio_search_version = ">=1.4.0,<1.5.0"
|
invenio_search_version = ">=1.4.1,<1.5.0"
|
||||||
invenio_db_version = ">=1.0.9,<1.1.0"
|
invenio_db_version = ">=1.0.9,<1.1.0"
|
||||||
|
|
||||||
extras_require = {
|
extras_require = {
|
||||||
@@ -30,7 +29,7 @@ extras_require = {
|
|||||||
"postgresql": [f"invenio-db[postgresql,versioning]{invenio_db_version}"],
|
"postgresql": [f"invenio-db[postgresql,versioning]{invenio_db_version}"],
|
||||||
"sqlite": [f"invenio-db[versioning]{invenio_db_version}"],
|
"sqlite": [f"invenio-db[versioning]{invenio_db_version}"],
|
||||||
"docs": [
|
"docs": [
|
||||||
"Sphinx>=3",
|
"Sphinx==4.2.0",
|
||||||
],
|
],
|
||||||
"tests": tests_require,
|
"tests": tests_require,
|
||||||
}
|
}
|
||||||
@@ -47,14 +46,13 @@ for name, reqs in extras_require.items():
|
|||||||
extras_require["all"].extend(reqs)
|
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
|
# keep this in sync with invenioRDM release
|
||||||
"invenio_app_rdm==4.0.0",
|
"invenio-rdm-records>=0.34.4,<0.35.0",
|
||||||
|
"invenio-cache>=1.1.0"
|
||||||
]
|
]
|
||||||
|
|
||||||
packages = find_packages()
|
packages = find_packages()
|
||||||
@@ -110,6 +108,7 @@ setup(
|
|||||||
"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",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user