Compare commits

...

50 Commits

Author SHA1 Message Date
Mojib Wali
8669f5dcda release: v0.10.0 2022-10-13 11:23:15 +02:00
Mojib Wali
62256b346f global: migrate to v10 2022-10-13 11:12:14 +02:00
Mojib Wali
4a8b02ec4a release: v0.9.1 2022-05-30 14:18:33 +02:00
Mojib Wali
8a592e3fdf ci(publish): ping babel version (#99) 2022-05-30 14:11:36 +02:00
Mojib Wali
42d5e2db05 release: v0.9.0 2022-05-30 13:38:10 +02:00
Mojib Wali
3db870784b config: adds accounts config var 2022-05-30 13:28:34 +02:00
Mojib Wali
73bc8b4575 dep: compatible to v9 rdm
black: formated
2022-05-25 18:49:16 +02:00
David
7fd5a7df3f config: add deposit form quota variable (#91) 2022-05-25 18:39:32 +02:00
Christoph Ladurner
79fe24511a bump invenio-rdm-records version 2022-05-25 12:46:45 +02:00
Christoph Ladurner
5b7a1718fc migrate setup py to cfg (#94)
* global: migrate setup.py to setup.cfg

* global: clean up copyright notices and tests

* migrate to use black as opinionated auto formater

* add .git-blame-ignore-revs
2022-05-12 08:58:50 +02:00
David
9192107e99 fix: update email welcome template with SITE_UI_URL (#93) 2022-04-20 08:31:42 +02:00
Mojib Wali
c43c36ece3 v0.8.4 2022-03-11 10:47:10 +01:00
Mojib Wali
3acbaf65ef revert: use gettext 2022-03-11 10:40:58 +01:00
Mojib Wali
408bdc47b1 v0.8.3 2022-03-10 10:25:35 +01:00
Mojib Wali
6c6138b682 config: fix comment & import 2022-03-10 09:31:15 +01:00
Mojib Wali
cc2c462057 README: update links 2022-03-03 10:17:52 +01:00
Mojib Wali
3f2cf9f800 v0.8.2 2022-03-03 10:12:43 +01:00
Mojib Wali
db0c7a4e21 config: introduced in v8 of invenioRDM 2022-03-03 10:03:20 +01:00
Mojib Wali
91464bbd7c v0.8.1 2022-02-28 15:05:59 +01:00
Mojib Wali
d7fe2926c7 gloabl: changes to pre-v8
* config: set samesite cookie to strict
* dep: bump in base
2022-02-28 14:55:20 +01:00
Mojib Wali
d5fcf60cf7 v0.8.0 2022-02-09 16:29:35 +01:00
David Eckhard
772b21c93a config: add OAISERVER_ADMIN_EMAIL 2021-12-16 11:54:46 +01:00
mb-wali
c39221378f v0.7.1 2021-12-07 09:54:26 +01:00
mb-wali
a42f86fcdf configs: adds new & changed configs for v7 2021-12-06 14:44:05 +01:00
mb-wali
0dd0db04e2 v0.7.0 2021-12-06 09:45:11 +01:00
David Eckhard
b02ce8a755 fix: update blueprint reorder 2021-11-08 10:21:28 +01:00
Mojib
41dcb8f437 docs: adjust sphinx to flask 2
* Add werkzeug to intersphinx for additional type hints
* Describe type hints in bullet points rather than function signatures
* Remove 'warnings as errors' flag from documentation building, as some type hints aren't resolved properly and result in a warning
2021-11-04 10:55:33 +01:00
Mojib
35854691bd config: adds oai prefix 2021-11-04 10:55:33 +01:00
Mojib
f2e18b95c3 dep: upgrade rdm-records version
migrated allowed host to gitlab
2021-11-04 10:55:33 +01:00
Mojib Wali
16c10593d6 v0.6.2 2021-08-05 08:22:37 +02:00
mb-wali
dbd870d106 doi: remove doi 'datacite' suffix 2021-08-04 16:21:04 +02:00
mb-wali
f02e992acd dep: global dep bump
config: adds i18n vars & extracted from gitlab configs
config: form defaults and tighter CSP
2021-08-04 16:21:04 +02:00
Mojib Wali
a7abb0bc5e v0.6.1 2021-06-04 11:46:57 +02:00
mb-wali
7ca398efdd global: adds routes for tug
This: migrated from invenio-theme-tugraz
2021-06-04 11:46:08 +02:00
Mojib Wali
b33c7e09c3 v0.6.0 2021-05-31 13:12:06 +02:00
mb-wali
0c775851d8 refactor: removes search guide
due: added to core module. This closes #64
2021-05-31 13:09:30 +02:00
mb-wali
89f6aee814 migrate: invenioRDM v4
deb: bump in app-rdm
2021-05-31 13:09:30 +02:00
Mojib Wali
44e5857143 v0.5.9 2021-05-07 12:01:04 +02:00
mb-wali
460de9fc35 feature: adds searchguide german 2021-05-07 11:02:25 +02:00
Mojib Wali
b1d7a6558e v0.5.8 2021-04-30 13:32:46 +02:00
mb-wali
890fded625 dep: installing invenio-app-rdm 2021-04-30 13:32:23 +02:00
Mojib Wali
1304563a3e v0.5.7 2021-04-28 09:01:04 +02:00
mb-wali
a08201041a bugfix: search guide url 2021-04-28 08:54:48 +02:00
Mojib Wali
548896be11 v0.5.6 2021-04-27 15:53:59 +02:00
Mojib Wali
a10433aba3 email: welcome email template 2021-04-27 15:48:05 +02:00
Mojib Wali
f0fbabbaa8 v0.5.5 2021-04-22 09:46:08 +02:00
Mojib Wali
5e2a58c764 i18n: adds translation
* babel: adds a wildcard to extract txt files.
* refactor txt file
2021-04-22 09:45:42 +02:00
Mojib Wali
9af1beff88 v0.5.4 2021-04-21 16:11:09 +02:00
rekt-hard
80575cbced feature: override email welcome template
* overrides flask-security welcome template
2021-04-21 16:10:30 +02:00
Unix
60b85e6ad5 global: repo cleanup 2021-03-31 14:22:32 +02:00
36 changed files with 629 additions and 425 deletions

View File

@@ -15,15 +15,6 @@ insert_final_newline = true
trim_trailing_whitespace = true trim_trailing_whitespace = true
charset = utf-8 charset = utf-8
# Python files
[*.py]
indent_size = 4
# isort plugin configuration
known_first_party = invenio_config_tugraz
multi_line_output = 2
default_section = THIRDPARTY
skip = .eggs
# RST files (used by sphinx) # RST files (used by sphinx)
[*.rst] [*.rst]
indent_size = 4 indent_size = 4

1
.git-blame-ignore-revs Normal file
View File

@@ -0,0 +1 @@
766b2cafae4dc74393b103389e6978eca5a9cfd2

View File

@@ -15,7 +15,7 @@ jobs:
- name: Install dependencies - name: Install dependencies
run: | run: |
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install setuptools wheel pip install setuptools wheel "babel<=2.9.1"
- name: Build package - name: Build package
run: | run: |
python setup.py compile_catalog sdist bdist_wheel python setup.py compile_catalog sdist bdist_wheel
@@ -23,4 +23,4 @@ jobs:
uses: pypa/gh-action-pypi-publish@v1.3.1 uses: pypa/gh-action-pypi-publish@v1.3.1
with: with:
user: __token__ user: __token__
password: ${{ secrets.pypi_password }} password: ${{ secrets.pypi_password }}

View File

@@ -20,9 +20,21 @@ jobs:
runs-on: ubuntu-20.04 runs-on: ubuntu-20.04
strategy: strategy:
matrix: matrix:
python-version: [3.6, 3.7, 3.8] python-version: [3.8, 3.9]
requirements-level: [min, pypi] requirements-level: [pypi]
db-service: [postgresql13]
search-service: [opensearch2]
include:
- db-service: postgresql13
DB_EXTRAS: "postgresql"
- search-service: opensearch2
SEARCH_EXTRAS: "opensearch2"
env:
DB: ${{ matrix.db-service }}
SEARCH: ${{ matrix.search-service }}
EXTRAS: tests,${{ matrix.SEARCH_EXTRAS }}
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v2 uses: actions/checkout@v2
@@ -34,9 +46,8 @@ jobs:
- name: Generate dependencies - name: Generate dependencies
run: | run: |
python -m pip install --upgrade pip setuptools py wheel requirements-builder pip install wheel requirements-builder
requirements-builder -e all --level=${{ matrix.requirements-level }} setup.py > .${{ matrix.requirements-level }}-${{ matrix.python-version }}-requirements.txt requirements-builder -e "$EXTRAS" --level=${{ matrix.requirements-level }} setup.py > .${{ matrix.requirements-level }}-${{ matrix.python-version }}-requirements.txt
- name: Cache pip - name: Cache pip
uses: actions/cache@v2 uses: actions/cache@v2
with: with:
@@ -45,10 +56,11 @@ jobs:
- name: Install dependencies - name: Install dependencies
run: | run: |
pip install -r .${{matrix.requirements-level}}-${{ matrix.python-version }}-requirements.txt pip install -r .${{ matrix.requirements-level }}-${{ matrix.python-version }}-requirements.txt
pip install .[all] pip install ".[$EXTRAS]"
pip freeze pip freeze
docker --version
docker-compose --version
- name: Run tests - name: Run tests
run: | run: |
./run-tests.sh ./run-tests.sh

View File

@@ -1,5 +1,5 @@
.. ..
Copyright (C) 2020 Mojib Wali. Copyright (C) 2020 - 2022 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,51 @@
Changes Changes
======= =======
Version 0.10.0 (released 2022-10-13)
- global: migrate to v10 (#101)
Version 0.9.1 (released 2022-05-30)
- ci(publish): ping babel version (#99)
Version 0.9.0 (released 2022-05-30)
- config: adds new introduced configs v9
- dep: compatible to v9 rdm
- config: add deposit form quota variable (#91)
- migrate setup py to cfg (#94)
- fix: update email welcome template with SITE_UI_URL (#93)
Version 0.8.4 (released 2022-03-11)
- config: use gettext
Version 0.8.3 (released 2022-03-10)
- config: fix comment & import
Version 0.8.2 (released 2022-03-03)
- config: new introduced to v8 of invenioRDM
Version 0.8.1 (released 2022-02-28)
- config: set samesite cookie to strict
- dep: bump in base dependencies
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)

View File

@@ -34,15 +34,22 @@ 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 *.gitkeep
recursive-include invenio_config_tugraz *.txt
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
include .git-blame-ignore-revs

View File

@@ -16,10 +16,10 @@
: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/tu-graz-library/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/tu-graz-library/invenio-config-tugraz/releases
.. image:: https://img.shields.io/github/license/tu-graz-library/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/tu-graz-library/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
:target: https://invenio-config-tugraz.readthedocs.io/en/latest/?badge=latest :target: https://invenio-config-tugraz.readthedocs.io/en/latest/?badge=latest
@@ -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/

View File

@@ -13,9 +13,8 @@ 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_
# Extraction from JavaScript files # Extraction from JavaScript files

View File

@@ -8,7 +8,7 @@
"""Sphinx configuration.""" """Sphinx configuration."""
import os from invenio_config_tugraz import __version__
# import sphinx.environment # import sphinx.environment
@@ -46,9 +46,9 @@ source_suffix = ".rst"
master_doc = "index" master_doc = "index"
# General information about the project. # General information about the project.
project = u"invenio-config-tugraz" project = "invenio-config-tugraz"
copyright = u"2020, Mojib Wali" copyright = "2022, TU Graz"
author = u"Mojib Wali" author = "TU Graz"
# 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
@@ -56,26 +56,15 @@ author = u"Mojib Wali"
# #
# The short X.Y version. # The short X.Y version.
# Get the version string. Cannot be done with import!
g = {}
with open(
os.path.join(
os.path.dirname(__file__), "..", "invenio_config_tugraz", "version.py"
),
"rt",
) as fp:
exec(fp.read(), g)
version = g["__version__"]
# The full version, including alpha/beta/rc tags. # The full version, including alpha/beta/rc tags.
release = version release = __version__
# The language for content autogenerated by Sphinx. Refer to documentation # The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages. # for a list of supported languages.
# #
# This is also used if you do content translation via gettext catalogs. # This is also used if you do content translation via gettext catalogs.
# Usually you set "language" from the command line for these cases. # Usually you set "language" from the command line for these cases.
language = None language = "en"
# There are two options for replacing |today|: either, you set today to some # There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used: # non-false value, then it is used:
@@ -254,8 +243,8 @@ latex_documents = [
( (
master_doc, master_doc,
"invenio-config-tugraz.tex", "invenio-config-tugraz.tex",
u"invenio-config-tugraz Documentation", "invenio-config-tugraz Documentation",
u"Mojib Wali", "Mojib Wali",
"manual", "manual",
), ),
] ]
@@ -289,7 +278,7 @@ man_pages = [
( (
master_doc, master_doc,
"invenio-config-tugraz", "invenio-config-tugraz",
u"invenio-config-tugraz Documentation", "invenio-config-tugraz Documentation",
[author], [author],
1, 1,
) )
@@ -308,7 +297,7 @@ texinfo_documents = [
( (
master_doc, master_doc,
"invenio-config-tugraz", "invenio-config-tugraz",
u"invenio-config-tugraz Documentation", "invenio-config-tugraz Documentation",
author, author,
"invenio-config-tugraz", "invenio-config-tugraz",
"invenio module that adds tugraz configs.", "invenio module that adds tugraz configs.",
@@ -332,6 +321,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),
} }

View File

@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# #
# Copyright (C) 2020 Mojib Wali. # Copyright (C) 2020-2022 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
@@ -10,6 +10,7 @@
from .ext import InvenioConfigTugraz from .ext import InvenioConfigTugraz
from .generators import RecordIp from .generators import RecordIp
from .version import __version__
__version__ = "0.10.0"
__all__ = ("__version__", "InvenioConfigTugraz", "RecordIp") __all__ = ("__version__", "InvenioConfigTugraz", "RecordIp")

View File

@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# #
# Copyright (C) 2020 Graz University of Technology. # 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
@@ -49,40 +49,40 @@ Using Custom Generator for a policy:
Permissions for Invenio records. Permissions for Invenio records.
""" """
from invenio_records_permissions.generators import ( # from invenio_records_permissions.generators import (
Admin, # Admin,
AnyUser, # AnyUser,
AnyUserIfPublic, # AnyUserIfPublic,
RecordOwners, # RecordOwners,
) # )
from invenio_records_permissions.policies.base import BasePermissionPolicy # 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()]

View File

@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# #
# Copyright (C) 2020 Graz University of Technology. # Copyright (C) 2020-2022 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,8 +8,6 @@
"""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 = False INVENIO_CONFIG_TUGRAZ_SHIBBOLETH = False
@@ -29,33 +27,26 @@ 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
"api.datacite.org/dois", # datacite
"api.test.datacite.org/dois", # datacite test
], ],
}, },
"content_security_policy_report_only": False, "content_security_policy_report_only": False,
@@ -73,6 +64,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
@@ -113,19 +113,22 @@ Set this to False when sending actual emails.
# =========== # ===========
# See https://invenio-userprofiles.readthedocs.io/en/latest/configuration.html # See https://invenio-userprofiles.readthedocs.io/en/latest/configuration.html
USERPROFILES_EXTEND_SECURITY_FORMS = False USERPROFILES_EXTEND_SECURITY_FORMS = True
"""Set True in order to register user_profile. """Set True in order to register user_profile.
This also forces user to add username and fullname This also forces user to add username and fullname
when register. when register.
""" """
USERPROFILES_EMAIL_ENABLED = False USERPROFILES_EMAIL_ENABLED = True
"""Exclude the user email in the profile form.""" """Exclude the user email in the profile form."""
# Invenio-shibboleth USERPROFILES_READ_ONLY = True
"""Allow users to change profile info (name, email, etc...)."""
# Invenio-saml
# =========== # ===========
# See https://invenio-shibboleth.readthedocs.io/en/latest/configuration.html # 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"""
@@ -153,13 +156,16 @@ SSO_SAML_DEFAULT_SLS_ROUTE = "/sls/<idp>"
# =========== # ===========
# 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."""
SECURITY_RECOVERABLE = False SECURITY_RECOVERABLE = False
"""Allow password recovery by users.""" """Allow password recovery by users."""
SECURITY_REGISTERABLE = False SECURITY_REGISTERABLE = True
""""Allow users to register. """"Allow users to register.
With this variable set to "False" users will not be With this variable set to "False" users will not be
@@ -172,6 +178,18 @@ SECURITY_CONFIRMABLE = False
Instead user will get a welcome email. Instead user will get a welcome email.
""" """
SECURITY_LOGIN_WITHOUT_CONFIRMATION = False
"""Require users to confirm email before being able to login."""
# 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.
@@ -198,16 +216,9 @@ 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 Base permissions - (NOT RECOMMANDED)
# RECORDS_PERMISSIONS_RECORD_POLICY = (
# 'invenio_config_tugraz.base_permissions.TUGRAZPermissionPolicy'
# )
#
# Uncomment these to enable overriding RDM permissions # Uncomment these to enable overriding RDM permissions
# RDM_RECORDS_BIBLIOGRAPHIC_SERVICE_CONFIG = ( # from .rdm_permissions import TUGRAZRDMRecordServiceConfig
# 'invenio_config_tugraz.rdm_permissions.TUGRAZBibliographicRecordServiceConfig' # RDM_RECORDS_BIBLIOGRAPHIC_SERVICE_CONFIG = TUGRAZRDMRecordServiceConfig
# )
"""Access control configuration for records.""" """Access control configuration for records."""
# invenio-rdm-records # invenio-rdm-records
@@ -215,9 +226,7 @@ RECAPTCHA_PRIVATE_KEY = None
# See: # See:
# https://invenio-rdm-records.readthedocs.io/en/latest/configuration.html # https://invenio-rdm-records.readthedocs.io/en/latest/configuration.html
# #
RDM_RECORDS_USER_FIXTURE_PASSWORDS = { RDM_RECORDS_USER_FIXTURE_PASSWORDS = {"info@tugraz.at": None}
"info@tugraz.at": None
}
"""Overrides for the user fixtures' passwords. """Overrides for the user fixtures' passwords.
The password set for a user fixture in this dictionary overrides the 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 password set in the ``users.yaml`` file. This can be used to set custom
@@ -228,20 +237,22 @@ password from ``users.yaml`` will be used. If that is also absent, a password
will be generated randomly. will be generated randomly.
""" """
# Custom Access Right DATACITE_FORMAT = "{prefix}/{id}"
# RDM_RECORDS_CUSTOM_VOCABULARIES = { """Customize the generated DOI string."""
# 'access_right': {
# 'path': join( DATACITE_DATACENTER_SYMBOL = ""
# dirname(abspath(__file__)), """"The OAI-PMH server's metadata format oai_datacite
# 'restrictions', 'access_right', 'access_right_limit.csv' that allows you to harvest record from InvenioRDM in DataCite XML needs
# ) to be configured with your DataCite data center symbol.
# } This is only required if you want your records to be harvestable in DataCite XML format.
# } """
# 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
@@ -250,6 +261,28 @@ If the value is callable, its return value will be used for the field
(e.g. lambda/function for dynamic calculation of values). (e.g. lambda/function for dynamic calculation of values).
""" """
APP_RDM_DEPOSIT_FORM_AUTOCOMPLETE_NAMES = "off"
"""Behavior for autocomplete names search field for creators/contributors.
Available options:
- ``search`` (default): Show search field and form always.
- ``search_only``: Only show search field. Form displayed after selection or
explicit "manual" entry.
- ``off``: Only show person form (no search field).
"""
APP_RDM_DEPOSIT_FORM_QUOTA = {
"maxFiles": 100,
# Easiest way to set this to a certain amount is to start from 1 Gb
# and go from there:
# 1 Gb: 10 ** 9
# 50 Gb: 10 ** 9 * 50
# 100 Mb: 10 ** 9 * 0.1
"maxStorage": 10**9 * 10,
}
"""Deposit file upload quota """
SQLALCHEMY_ECHO = False SQLALCHEMY_ECHO = False
"""Enable to see all SQL queries.""" """Enable to see all SQL queries."""
@@ -311,3 +344,31 @@ 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."""
SESSION_COOKIE_SAMESITE = "Strict"
"""Sets cookie with the samesite flag to 'Strict' by default."""
# 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.
"""

View File

@@ -1,13 +1,12 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# #
# Copyright (C) 2020 Mojib Wali. # Copyright (C) 2020-2022 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.
"""invenio module that adds tugraz configs.""" """invenio module that adds tugraz configs."""
from . import config from . import config

View File

@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# #
# Copyright (C) 2020 Mojib Wali. # Copyright (C) 2020-2022 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
@@ -151,10 +151,10 @@ The succinct encoding of the permissions for your instance gives you
- great flexibility by defining your own actions, generators and policies - great flexibility by defining your own actions, generators and policies
""" """
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, authenticated_user, superuser_access from invenio_access.permissions import any_user
from invenio_records_permissions.generators import Generator from invenio_records_permissions.generators import Generator
from invenio_search.engine import dsl
class RecordIp(Generator): class RecordIp(Generator):
@@ -208,10 +208,10 @@ class RecordIp(Generator):
if not visible: if not visible:
# If user ip is not on the list, and If the record contains 'singleip' will not be seen # 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 ~dsl.Q("match", **{"access.access_right": "singleip"})
# Lists all records # Lists all records
return Q("match_all") return dsl.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."""
@@ -221,20 +221,3 @@ class RecordIp(Generator):
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 return True
return False return False
class AuthenticatedUser(Generator):
"""Allows authenticated users."""
def __init__(self):
"""Constructor."""
super(AuthenticatedUser, self).__init__()
def needs(self, **kwargs):
"""Enabling Needs."""
return [authenticated_user]
def query_filter(self, **kwargs):
"""Filters for current identity as super user."""
# TODO: Implement with new permissions metadata
return []

View File

@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# #
# Copyright (C) 2020 Graz University of Technology. # 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
@@ -53,59 +53,34 @@ Using Custom Generator for a policy:
Permissions for Invenio (RDM) Records. Permissions for Invenio (RDM) Records.
""" """
from invenio_rdm_records.services import ( # from invenio_rdm_records.services import RDMRecordPermissionPolicy
BibliographicRecordServiceConfig, # from invenio_rdm_records.services.config import RDMRecordServiceConfig
RDMRecordPermissionPolicy, # from invenio_rdm_records.services.generators import IfDraft, IfRestricted, RecordOwners
) # from invenio_records_permissions.generators import (
from invenio_records_permissions.generators import ( # Admin,
Admin, # AnyUser,
AnyUser, # AuthenticatedUser,
RecordOwners, # Disable,
SuperUser, # SuperUser,
) # SystemProcess,
# )
from .generators import AuthenticatedUser, RecordIp
class TUGRAZPermissionPolicy(RDMRecordPermissionPolicy): # class TUGRAZPermissionPolicy(RDMRecordPermissionPolicy):
"""Access control configuration for rdm records. # """Access control configuration for rdm records.
This overrides the origin: # This overrides the origin:
https://github.com/inveniosoftware/invenio-rdm-records/blob/master/invenio_rdm_records/services/permissions.py. # 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.
# Read access given to: # - Create action given to everyone for now.
# TODO: # - Read access given to everyone if public record and given to owners
# AnyUserIfPublic : grant access if record is public # always. (inherited)
# RecordIp: grant access for single_ip # - Update access given to record owners. (inherited)
# RecordOwners: owner of records, enable once the deposit is allowed only for loged-in users. # - Delete access given to admins only. (inherited)
# CURRENT: # """
# RecordIp: grant access for single_ip
can_read = [RecordIp()] # RecordOwners()
# Search access given to:
# AnyUser : grant access anyUser
# RecordIp: grant access for single_ip
can_search = [AnyUser(), RecordIp()]
# Update access given to record owners.
can_update = [RecordOwners()]
# Delete access given to admins only.
can_delete = [Admin()]
# Create action given to AuthenticatedUser
# UI - if user is loged in
# API - if user has Access token (Bearer API-TOKEN)
can_create = [AuthenticatedUser()]
# Associated files permissions (which are really bucket permissions)
# can_read_files = [AnyUserIfPublic(), RecordOwners()]
# can_update_files = [RecordOwners()]
class TUGRAZBibliographicRecordServiceConfig(BibliographicRecordServiceConfig): # class TUGRAZRDMRecordServiceConfig(RDMRecordServiceConfig):
"""Overriding BibliographicRecordServiceConfig.""" # """Overriding BibliographicRecordServiceConfig."""
permission_policy_cls = TUGRAZPermissionPolicy

View 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')}}) ({{ config.SITE_UI_URL }}{{ url_for('invenio_config_tugraz.guide') }})
- {{ _('Search Guide')}} ({{ config.SITE_UI_URL }}{{url_for('invenio_app_rdm.help_search')}})
- {{ _('Terms And Conditions') }} ({{ config.SITE_UI_URL }}{{ url_for('invenio_config_tugraz.terms') }})
- {{ _('Data Protection Rights')}} ({{ config.SITE_UI_URL }}{{ 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') }}

View File

@@ -1,15 +1,15 @@
# German translations for invenio-config-tugraz. # German translations for invenio-config-tugraz.
# Copyright (C) 2020 Mojib Wali # Copyright (C) 2021 Graz University of Technology
# This file is distributed under the same license as the # This file is distributed under the same license as the
# invenio-config-tugraz project. # invenio-config-tugraz project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020. # FIRST AUTHOR <EMAIL@ADDRESS>, 2021.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: invenio-config-tugraz 0.1.5\n" "Project-Id-Version: invenio-config-tugraz 0.5.5\n"
"Report-Msgid-Bugs-To: mojib.wali@tugraz.at\n" "Report-Msgid-Bugs-To: mojib.wali@tugraz.at\n"
"POT-Creation-Date: 2020-10-06 09:28+0200\n" "POT-Creation-Date: 2021-04-27 15:30+0200\n"
"PO-Revision-Date: 2020-10-06 09:28+0200\n" "PO-Revision-Date: 2021-04-22 11:57+0200\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: de\n" "Language: de\n"
"Language-Team: de <LL@li.org>\n" "Language-Team: de <LL@li.org>\n"
@@ -17,9 +17,67 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n" "Generated-By: Babel 2.9.0\n"
#: invenio_config_tugraz/config.py:80 #: invenio_config_tugraz/config.py:87
msgid "Welcome to RDM!" 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 "" 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"

View File

@@ -1,24 +1,78 @@
# Translations template for invenio-config-tugraz. # Translations template for invenio-config-tugraz.
# Copyright (C) 2020 Mojib Wali # Copyright (C) 2021 Graz University of Technology
# This file is distributed under the same license as the # This file is distributed under the same license as the
# invenio-config-tugraz project. # invenio-config-tugraz project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020. # FIRST AUTHOR <EMAIL@ADDRESS>, 2021.
# #
#, fuzzy #, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: invenio-config-tugraz 0.1.5\n" "Project-Id-Version: invenio-config-tugraz 0.5.5\n"
"Report-Msgid-Bugs-To: mojib.wali@tugraz.at\n" "Report-Msgid-Bugs-To: mojib.wali@tugraz.at\n"
"POT-Creation-Date: 2020-10-06 09:28+0200\n" "POT-Creation-Date: 2021-04-27 15:30+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n" "Generated-By: Babel 2.9.0\n"
#: invenio_config_tugraz/config.py:80 #: invenio_config_tugraz/config.py:87
msgid "Welcome to RDM!" 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 "" msgstr ""

View File

@@ -1,15 +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.
"""Version information for invenio-config-tugraz.
This file is imported by ``invenio_config_tugraz.__init__``,
and parsed by ``setup.py``.
"""
__version__ = "0.5.3"

View File

@@ -0,0 +1,81 @@
# -*- coding: utf-8 -*-
#
# Copyright (C) 2020-2022 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 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,
)
)

3
pyproject.toml Normal file
View File

@@ -0,0 +1,3 @@
[build-system]
requires = ["setuptools", "wheel", "babel>2.8"]
build-backend = "setuptools.build_meta"

View File

@@ -1,12 +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.
[pytest]
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
live_server_scope = module

View File

@@ -23,11 +23,10 @@ function cleanup() {
} }
trap cleanup EXIT 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 --search ${SEARCH:-elasticsearch} --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"

View File

@@ -1,11 +1,65 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# #
# Copyright (C) 2020 Mojib Wali. # Copyright (C) 2020-2022 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.
[metadata]
name = invenio-config-tugraz
version = attr: invenio_config_tugraz.__version__
description = "Invenio module that adds tugraz configs."
long_description = file: README.rst, CHANGES.rst
keywords = invenio config TU-Graz
license = MIT
author = "Graz University of Technology"
author_email = info@tugraz.at
platforms = any
url = https://github.com/tu-graz-library/invenio-config-tugraz
classifiers =
Environment :: Web Environment
Intended Audience :: Developers
License :: OSI Approved :: MIT License
Operating System :: OS Independent
Programming Language :: Python
Topic :: Internet :: WWW/HTTP :: Dynamic Content
Topic :: Software Development :: Libraries :: Python Modules
Programming Language :: Python :: 3.7
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
Development Status :: 3 - Alpha
[options]
include_package_data = True
packages = find:
python_requires = >=3.8
zip_safe = False
install_requires =
# keep this dependencies identical to invenio-app-rdm
invenio-rdm-records>=0.39.0,<0.40.0
invenio-cache>=1.1.1,<1.2.0
[options.extras_require]
tests =
pytest-black>=0.3.0,<0.3.10
Sphinx>=4.5.0
pytest-invenio>=1.4.7
# elasticsearch7 =
# invenio-search[elasticsearch7]>=2.1.0,<3.0.0
opensearch2 =
invenio-search[opensearch2]>=2.1.0,<3.0.0
[options.entry_points]
invenio_base.apps =
invenio_config_tugraz = invenio_config_tugraz:InvenioConfigTugraz
invenio_base.blueprints =
invenio_config_tugraz = invenio_config_tugraz.views:ui_blueprint
invenio_i18n.translations =
messages = invenio_config_tugraz
invenio_config.module =
invenio_config_tugraz = invenio_config_tugraz.config
[aliases] [aliases]
test = pytest test = pytest
@@ -24,7 +78,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
@@ -38,19 +92,10 @@ output-dir = invenio_config_tugraz/translations/
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] [isort]
multi_line_output = 3 profile=black
include_trailing_comma = True
force_grid_wrap = 0
use_parentheses = True
ensure_newline_before_comments = True
line_length = 88
[pycodestyle] [tool:pytest]
ignore = E203,E501 addopts = --black --isort --pydocstyle --doctest-glob="*.rst" --doctest-modules --cov=invenio_config_tugraz --cov-report=term-missing tests invenio_config_tugraz
testpaths = tests invenio_config_tugraz
live_server_scope = module

View File

@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# #
# Copyright (C) 2020 Mojib Wali. # Copyright (C) 2020-2022 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,93 +8,6 @@
"""invenio module that adds tugraz configs.""" """invenio module that adds tugraz configs."""
import os from setuptools import setup
from setuptools import find_packages, setup setup()
readme = open("README.rst").read()
history = open("CHANGES.rst").read()
tests_require = [
"pytest-invenio>=1.4.0",
"SQLAlchemy-Utils>=0.33.1,<0.36",
"invenio-rdm-records~=0.20.8",
"invenio-search[elasticsearch7]>=1.4.0",
"psycopg2-binary>=2.8.6",
]
extras_require = {
"docs": [
"Sphinx>=3",
],
"tests": tests_require,
}
extras_require["all"] = []
for reqs in extras_require.values():
extras_require["all"].extend(reqs)
setup_requires = [
"Babel>=1.3",
"pytest-runner>=3.0.0,<5",
]
install_requires = [
"Flask-BabelEx>=0.9.4",
"elasticsearch_dsl>=7.2.1",
"sqlalchemy-continuum>=1.3.11",
]
packages = find_packages()
# Get the version string. Cannot be done with import!
g = {}
with open(os.path.join("invenio_config_tugraz", "version.py"), "rt") as fp:
exec(fp.read(), g)
version = g["__version__"]
setup(
name="invenio-config-tugraz",
version=version,
description=__doc__,
long_description=readme + "\n\n" + history,
keywords="invenio, config, Tu Graz",
license="MIT",
author="Mojib Wali",
author_email="mb_wali@hotmail.com",
url="https://github.com/tu-graz-library/invenio-config-tugraz",
packages=packages,
zip_safe=False,
include_package_data=True,
platforms="any",
entry_points={
"invenio_base.apps": [
"invenio_config_tugraz = invenio_config_tugraz:InvenioConfigTugraz",
],
"invenio_i18n.translations": [
"messages = invenio_config_tugraz",
],
"invenio_config.module": [
"invenio_config_tugraz = invenio_config_tugraz.config",
],
},
extras_require=extras_require,
install_requires=install_requires,
setup_requires=setup_requires,
tests_require=tests_require,
classifiers=[
"Environment :: Web Environment",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",
"Topic :: Software Development :: Libraries :: Python Modules",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Development Status :: 3 - Alpha",
],
)

View File

@@ -73,7 +73,7 @@ def create_app(request):
return app return app
@pytest.fixture(scope='function') @pytest.fixture(scope="function")
def open_record(): def open_record():
"""Open record data as dict coming from the external world.""" """Open record data as dict coming from the external world."""
return { return {
@@ -81,44 +81,44 @@ def open_record():
"metadata": False, "metadata": False,
"files": False, "files": False,
"owned_by": [1], "owned_by": [1],
"access_right": "open" "access_right": "open",
}, },
"metadata": { "metadata": {
"publication_date": "2020-06-01", "publication_date": "2020-06-01",
"resource_type": { "resource_type": {"type": "image", "subtype": "image-photo"},
"type": "image",
"subtype": "image-photo"
},
# Technically not required # Technically not required
"creators": [{ "creators": [
"name": "Troy Brown", {"name": "Troy Brown", "type": "personal"},
"type": "personal" {
}, { "name": "Phillip Lester",
"name": "Phillip Lester", "type": "personal",
"type": "personal", "identifiers": {"orcid": "0000-0002-1825-0097"},
"identifiers": {"orcid": "0000-0002-1825-0097"}, "affiliations": [
"affiliations": [{ {"name": "Carter-Morris", "identifiers": {"ror": "03yrm5c26"}}
"name": "Carter-Morris", ],
"identifiers": {"ror": "03yrm5c26"} },
}] {
}, { "name": "Steven Williamson",
"name": "Steven Williamson", "type": "personal",
"type": "personal", "identifiers": {"orcid": "0000-0002-1825-0097"},
"identifiers": {"orcid": "0000-0002-1825-0097"}, "affiliations": [
"affiliations": [{ {
"name": "Ritter and Sons", "name": "Ritter and Sons",
"identifiers": {"ror": "03yrm5c26"} "identifiers": {"ror": "03yrm5c26"},
}, { },
"name": "Montgomery, Bush and Madden", {
"identifiers": {"ror": "03yrm5c26"} "name": "Montgomery, Bush and Madden",
}] "identifiers": {"ror": "03yrm5c26"},
}], },
"title": "A Romans story" ],
} },
],
"title": "A Romans story",
},
} }
@pytest.fixture(scope='function') @pytest.fixture(scope="function")
def singleip_record(): def singleip_record():
"""Single Ip record data as dict coming from the external world.""" """Single Ip record data as dict coming from the external world."""
return { return {
@@ -126,38 +126,38 @@ def singleip_record():
"metadata": False, "metadata": False,
"files": False, "files": False,
"owned_by": [1], "owned_by": [1],
"access_right": "singleip" "access_right": "singleip",
}, },
"metadata": { "metadata": {
"publication_date": "2020-06-01", "publication_date": "2020-06-01",
"resource_type": { "resource_type": {"type": "image", "subtype": "image-photo"},
"type": "image",
"subtype": "image-photo"
},
# Technically not required # Technically not required
"creators": [{ "creators": [
"name": "Troy Brown", {"name": "Troy Brown", "type": "personal"},
"type": "personal" {
}, { "name": "Phillip Lester",
"name": "Phillip Lester", "type": "personal",
"type": "personal", "identifiers": {"orcid": "0000-0002-1825-0097"},
"identifiers": {"orcid": "0000-0002-1825-0097"}, "affiliations": [
"affiliations": [{ {"name": "Carter-Morris", "identifiers": {"ror": "03yrm5c26"}}
"name": "Carter-Morris", ],
"identifiers": {"ror": "03yrm5c26"} },
}] {
}, { "name": "Steven Williamson",
"name": "Steven Williamson", "type": "personal",
"type": "personal", "identifiers": {"orcid": "0000-0002-1825-0097"},
"identifiers": {"orcid": "0000-0002-1825-0097"}, "affiliations": [
"affiliations": [{ {
"name": "Ritter and Sons", "name": "Ritter and Sons",
"identifiers": {"ror": "03yrm5c26"} "identifiers": {"ror": "03yrm5c26"},
}, { },
"name": "Montgomery, Bush and Madden", {
"identifiers": {"ror": "03yrm5c26"} "name": "Montgomery, Bush and Madden",
}] "identifiers": {"ror": "03yrm5c26"},
}], },
"title": "A Romans story" ],
} },
],
"title": "A Romans story",
},
} }

View File

@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# #
# Copyright (C) 2020 Mojib Wali. # Copyright (C) 2020-2022 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,9 @@
"""Test Generators.""" """Test Generators."""
from invenio_access.permissions import any_user, authenticated_user from invenio_access.permissions import any_user
from invenio_config_tugraz.generators import AuthenticatedUser, RecordIp from invenio_config_tugraz.generators import RecordIp
def test_recordip(create_app, open_record, singleip_record): def test_recordip(create_app, open_record, singleip_record):
@@ -26,13 +26,6 @@ def test_recordip(create_app, open_record, singleip_record):
assert generator.excludes(record=open_record) == [] assert generator.excludes(record=open_record) == []
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'}}]}} assert generator.query_filter().to_dict() == {
"bool": {"must_not": [{"match": {"access.access_right": "singleip"}}]}
}
def test_authenticateduser():
"""Test Generator AuthenticatedUser."""
generator = AuthenticatedUser()
assert generator.needs() == [authenticated_user]
assert generator.excludes() == []
assert generator.query_filter() == []

View File

@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# #
# Copyright (C) 2020 Mojib Wali. # Copyright (C) 2020-2022 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