Compare commits

...

10 Commits

Author SHA1 Message Date
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
16 changed files with 111 additions and 61 deletions

View File

@@ -49,3 +49,6 @@ 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

View File

@@ -38,6 +38,8 @@ Override configs from diffrent invenio modules to meet TU Graz requirement:
* Invenio-Mail
* Invenio-shibboleth
* Invenio-accounts
* Flask-security
* Defined routes for TUG
Further documentation is available on
https://invenio-config-tugraz.readthedocs.io/

View File

@@ -29,10 +29,19 @@ INVENIO_CONFIG_TUGRAZ_IP_RANGES =
[["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
# ===========
# See https://invenio-app.readthedocs.io/en/latest/configuration.html
# TODO: move this to gitlab vars.
APP_ALLOWED_HOSTS = [
"0.0.0.0",
"localhost",
@@ -47,15 +56,10 @@ APP_DEFAULT_SECURE_HEADERS = {
"content_security_policy": {
"default-src": [
"'self'",
"fonts.googleapis.com",
"*.gstatic.com",
"data:",
"'unsafe-inline'",
"'unsafe-eval'",
"blob:",
"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,
@@ -73,6 +77,15 @@ APP_DEFAULT_SECURE_HEADERS = {
"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
# ===========
# See https://invenio-mail.readthedocs.io/en/latest/configuration.html
@@ -113,19 +126,22 @@ Set this to False when sending actual emails.
# ===========
# 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.
This also forces user to add username and fullname
when register.
"""
USERPROFILES_EMAIL_ENABLED = False
USERPROFILES_EMAIL_ENABLED = True
"""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 = {}
"""Configuration of IDPS. Actual values can be find in to invenio.cfg file"""
@@ -153,13 +169,16 @@ SSO_SAML_DEFAULT_SLS_ROUTE = "/sls/<idp>"
# ===========
# See https://invenio-accounts.readthedocs.io/en/latest/configuration.html
ACCOUNTS_LOCAL_LOGIN_ENABLED = True
"""Allow local login."""
SECURITY_CHANGEABLE = False
"""Allow password change by users."""
SECURITY_RECOVERABLE = False
"""Allow password recovery by users."""
SECURITY_REGISTERABLE = False
SECURITY_REGISTERABLE = True
""""Allow users to register.
With this variable set to "False" users will not be
@@ -228,20 +247,15 @@ password from ``users.yaml`` will be used. If that is also absent, a password
will be generated randomly.
"""
# Custom Access Right
# RDM_RECORDS_CUSTOM_VOCABULARIES = {
# 'access_right': {
# 'path': join(
# dirname(abspath(__file__)),
# 'restrictions', 'access_right', 'access_right_limit.csv'
# )
# }
# }
RDM_RECORDS_DOI_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 = {}
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

View File

@@ -53,34 +53,34 @@ Using Custom Generator for a policy:
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,
)
# 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.
# 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)
"""
# 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."""
# class TUGRAZRDMRecordServiceConfig(RDMRecordServiceConfig):
# """Overriding BibliographicRecordServiceConfig."""

View File

@@ -4,10 +4,10 @@
{{ _('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')}})
- {{ _('Terms And Conditions') }} (https://{{ config.SITE_HOSTNAME }}{{ url_for('invenio_theme_tugraz.terms') }})
- {{ _('Data Protection Rights')}} (https://{{ config.SITE_HOSTNAME }}{{ url_for('invenio_theme_tugraz.gdpr') }})
- {{ _('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 }}">

View File

@@ -1,6 +1,6 @@
# -*- 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
# 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``.
"""
__version__ = "0.5.8"
__version__ = "0.6.2"

View File

@@ -12,17 +12,25 @@ from os import environ
from typing import Dict
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):
"""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."""
@@ -42,3 +50,27 @@ def ui_blueprint(app):
blueprints[our_index] = temp
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))

View File

@@ -16,12 +16,11 @@ readme = open("README.rst").read()
history = open("CHANGES.rst").read()
tests_require = [
"pytest-invenio>=1.4.0",
"invenio-app>=1.3.0,<2.0.0",
"pytest-invenio>=1.4.1",
]
# 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"
extras_require = {
@@ -30,7 +29,7 @@ extras_require = {
"postgresql": [f"invenio-db[postgresql,versioning]{invenio_db_version}"],
"sqlite": [f"invenio-db[versioning]{invenio_db_version}"],
"docs": [
"Sphinx>=3",
"Sphinx>=3,<3.4.2",
],
"tests": tests_require,
}
@@ -47,14 +46,13 @@ for name, reqs in extras_require.items():
extras_require["all"].extend(reqs)
setup_requires = [
"Babel>=1.3",
"pytest-runner>=3.0.0,<5",
"Babel>=2.8,<3",
]
install_requires = [
"Flask-BabelEx>=0.9.4",
# keep this in sync with invenioRDM release
"invenio_app_rdm==3.0.0",
"invenio-rdm-records>=0.32.2,<0.33.0",
"invenio-cache>=1.1.0"
]
packages = find_packages()
@@ -110,6 +108,7 @@ setup(
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Development Status :: 3 - Alpha",
"Programming Language :: Python :: 3.9",
"Development Status :: 5 - Production/Stable",
],
)