mirror of
https://github.com/Cian-H/invenio-config-iform.git
synced 2025-12-23 13:31:58 +00:00
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b33c7e09c3 | ||
|
|
0c775851d8 | ||
|
|
89f6aee814 |
@@ -54,8 +54,6 @@ APP_DEFAULT_SECURE_HEADERS = {
|
|||||||
"'unsafe-eval'",
|
"'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,
|
||||||
@@ -113,19 +111,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 +154,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
|
||||||
@@ -228,16 +232,6 @@ 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
|
|
||||||
# RDM_RECORDS_CUSTOM_VOCABULARIES = {
|
|
||||||
# 'access_right': {
|
|
||||||
# 'path': join(
|
|
||||||
# dirname(abspath(__file__)),
|
|
||||||
# 'restrictions', 'access_right', 'access_right_limit.csv'
|
|
||||||
# )
|
|
||||||
# }
|
|
||||||
# }
|
|
||||||
|
|
||||||
# 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
|
||||||
|
|||||||
@@ -53,34 +53,34 @@ Using Custom Generator for a policy:
|
|||||||
Permissions for Invenio (RDM) Records.
|
Permissions for Invenio (RDM) Records.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from invenio_rdm_records.services import RDMRecordPermissionPolicy
|
# from invenio_rdm_records.services import RDMRecordPermissionPolicy
|
||||||
from invenio_rdm_records.services.config import RDMRecordServiceConfig
|
# from invenio_rdm_records.services.config import RDMRecordServiceConfig
|
||||||
from invenio_rdm_records.services.generators import IfDraft, IfRestricted, RecordOwners
|
# 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,
|
# AuthenticatedUser,
|
||||||
Disable,
|
# Disable,
|
||||||
SuperUser,
|
# SuperUser,
|
||||||
SystemProcess,
|
# SystemProcess,
|
||||||
)
|
# )
|
||||||
|
|
||||||
|
|
||||||
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.
|
# Access control configuration for records.
|
||||||
Note that even if the array is empty, the invenio_access Permission class
|
# Note that even if the array is empty, the invenio_access Permission class
|
||||||
always adds the ``superuser-access``, so admins will always be allowed.
|
# always adds the ``superuser-access``, so admins will always be allowed.
|
||||||
- Create action given to everyone for now.
|
# - Create action given to everyone for now.
|
||||||
- Read access given to everyone if public record and given to owners
|
# - Read access given to everyone if public record and given to owners
|
||||||
always. (inherited)
|
# always. (inherited)
|
||||||
- Update access given to record owners. (inherited)
|
# - Update access given to record owners. (inherited)
|
||||||
- Delete access given to admins only. (inherited)
|
# - Delete access given to admins only. (inherited)
|
||||||
"""
|
# """
|
||||||
|
|
||||||
|
|
||||||
class TUGRAZRDMRecordServiceConfig(RDMRecordServiceConfig):
|
# class TUGRAZRDMRecordServiceConfig(RDMRecordServiceConfig):
|
||||||
"""Overriding BibliographicRecordServiceConfig."""
|
# """Overriding BibliographicRecordServiceConfig."""
|
||||||
|
|||||||
@@ -1,257 +0,0 @@
|
|||||||
{#
|
|
||||||
Copyright (C) 2021 CERN.
|
|
||||||
Copyright (C) 2021 Graz University of Technology.
|
|
||||||
|
|
||||||
Invenio App RDM is free software; you can redistribute it and/or modify it
|
|
||||||
under the terms of the MIT License; see LICENSE file for more details.
|
|
||||||
#}
|
|
||||||
{%- set title = _("Search guide") %}
|
|
||||||
{%- extends "invenio_theme/page.html" %}
|
|
||||||
|
|
||||||
{%- block page_body %}
|
|
||||||
<div class="ui container">
|
|
||||||
<h1>Suchanleitung</h1>
|
|
||||||
<p>
|
|
||||||
Diese Anleitung erklärt anhand von leicht verständlichen Beispielen,
|
|
||||||
wie man erweiterte Suchanfragen schreibt.
|
|
||||||
</p>
|
|
||||||
<h3>Einfache Suche (ein oder mehrere Begriffe)</h3>
|
|
||||||
<p>
|
|
||||||
<strong>Beispiel:</strong>
|
|
||||||
<a href="/search?page=1&size=20&q=open%20science"
|
|
||||||
><code>open science</code></a
|
|
||||||
>
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Die Ergebnisse entsprechen Datensätzen mit den <em>Begriffen</em> <code>open</code>
|
|
||||||
<em>oder</em> <code>science</code> in einem <em>beliebigen Feld</em>. Beachten Sie, dass die Abstammung angewendet wird,
|
|
||||||
so dass z. B. <code>science</code> auch mit
|
|
||||||
<code>sciences</code>übereinstimmt. Die Suchergebnisse werden nach einem Algorithmus geordnet,
|
|
||||||
der Ihre Suchbegriffe berücksichtigt.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Sie können das <em>Vorhandensein</em> beider Terme entweder mit dem
|
|
||||||
<code>+</code> oder dem <code>AND</code> Operator verlangen:
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<strong>Beispiele:</strong>
|
|
||||||
<a href="/search?page=1&size=20&q=%2Bopen%20%2Bscience"
|
|
||||||
><code>+open +science</code></a
|
|
||||||
>
|
|
||||||
oder
|
|
||||||
<a href="/search?page=1&size=20&q=open%20AND%20science"
|
|
||||||
><code>open AND science</code></a
|
|
||||||
>
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Sie können das <em>Nichtvorhandensein</em> eines oder mehrerer Begriffe mit dem Operator
|
|
||||||
<code>-</code> oder <code>NOT</code> verlangen:
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<strong>Beispiele:</strong>
|
|
||||||
<a href="/search?page=1&size=20&q=-open%20%2Bscience"
|
|
||||||
><code>-open +science</code></a
|
|
||||||
>
|
|
||||||
oder
|
|
||||||
<a href="/search?page=1&size=20&q=NOT%20open%20AND%20science"
|
|
||||||
><code>NOT open AND science</code></a
|
|
||||||
>
|
|
||||||
</p>
|
|
||||||
<h3>Phrasensuche</h3>
|
|
||||||
<p>
|
|
||||||
<strong>Beispiel:</strong>
|
|
||||||
<a href="/search?page=1&size=20&q=%22open%20science%22"
|
|
||||||
><code>"open science"</code></a
|
|
||||||
>
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Die Ergebnisse entsprechen Datensätzen mit der <em>phrase</em>
|
|
||||||
<code>open science</code> in einem <em>beliebigen Feld</em>.
|
|
||||||
</p>
|
|
||||||
<h3>Feldsuche</h3>
|
|
||||||
<p>
|
|
||||||
<strong>Beispiel:</strong>
|
|
||||||
<a href="/search?page=1&size=20&q=metadata.title:open"
|
|
||||||
><code>metadata.title:open</code></a
|
|
||||||
>
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Die Ergebnisse stimmen mit Datensätzen überein, bei denen der <em>Begriff</em> <code>open</code> im
|
|
||||||
<em>Feld</em> <code>metadata.title</code>ist. enn Sie nach mehreren Begriffen im Titel suchen möchten,
|
|
||||||
müssen Sie <strong>die Begriffe</strong> mit Klammern gruppieren:
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<strong>Beispiel:</strong>
|
|
||||||
<a href="/search?page=1&size=20&q=metadata.title:(open%20science%29"
|
|
||||||
><code>metadata.title:(open science)</code></a
|
|
||||||
>
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Die vollständige Liste der Felder, die Sie durchsuchen können, finden Sie in der Feldreferenz unten.
|
|
||||||
</p>
|
|
||||||
<h3>Kombinierte einfache, Phrasen- oder Feldsuche</h3>
|
|
||||||
<p>
|
|
||||||
<strong>Beispiel:</strong>
|
|
||||||
<a
|
|
||||||
href="/search?page=1&size=20&q=%2Bmetadata.title:%22open%20science%22%20-metadata.title:policy"
|
|
||||||
><code>+metadata.title:"open science" -metadata.title:policy</code></a
|
|
||||||
>
|
|
||||||
oder z. B.
|
|
||||||
<a href="/search?page=1&size=20&q=metadata.title:(-open%20%2Bscience%29"
|
|
||||||
><code>metadata.title:(-open +science)</code></a
|
|
||||||
>
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Sie können einfache, Phrasen- und Feldsuche kombinieren, um erweiterte Suchanfragen zu konstruieren.
|
|
||||||
</p>
|
|
||||||
<h3>Bereichssuche</h3>
|
|
||||||
<p>
|
|
||||||
<strong>Beispiel:</strong>
|
|
||||||
<a
|
|
||||||
href="/search?page=1&size=20&q=metadata.publication_date:%5B2017%20TO%202018%5D"
|
|
||||||
><code>metadata.publication_date:[2017 TO 2018]</code></a
|
|
||||||
>
|
|
||||||
(Achtung, <code>TO</code> muss großgeschrieben werden).
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Die Ergebnisse entsprechen allen Datensätzen mit einem Veröffentlichungsdatum
|
|
||||||
zwischen 2017-01-01 und 2018-01-01 (beide Daten inklusive).
|
|
||||||
</p>
|
|
||||||
<p>Beachten Sie, dass partielle Daten zu vollständigen Daten erweitert werden, z. B.:</p>
|
|
||||||
<ul>
|
|
||||||
<li>2017 wird erweitert auf 2017-01-01</li>
|
|
||||||
<li>2017-06 wird erweitert auf 2017-06-01</li>
|
|
||||||
</ul>
|
|
||||||
<p>
|
|
||||||
Verwenden Sie eckige Klammern (<code>[]</code>) für <em>einschließende</em> Bereiche und geschweifte
|
|
||||||
Klammern (<code>{}</code>) für <em>ausschließende</em> Bereiche, z. B.:
|
|
||||||
</p>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<code>[2017 TO 2018}</code> ist aufgrund der Datumserweiterung
|
|
||||||
und der exklusiven Obergrenze äquivalent zu
|
|
||||||
<code>[2017-01-01 TO 2017-12-31]</code>.
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<p>Beispiele für andere Bereiche:</p>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<code>metadata.publication_date:{* TO 2017-01-01}</code>: Alle Tage bis 2017.
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<code>metadata.publication_date:[2017-01-01 TO *]</code>: Alle Tage von 2017.
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<h3>Ranking/Sortierung</h3>
|
|
||||||
<p>
|
|
||||||
Standardmäßig werden alle Suchen nach einem internen Ranking-Algorithmus sortiert,
|
|
||||||
der jede Übereinstimmung mit Ihrer Abfrage bewertet. Sowohl in der Benutzeroberfläche
|
|
||||||
als auch in der REST-API ist es möglich, die Ergebnisse zu sortieren nach:
|
|
||||||
</p>
|
|
||||||
<ul>
|
|
||||||
<li>Aktuellste</li>
|
|
||||||
<li>Beste Übereinstimmung</li>
|
|
||||||
</ul>
|
|
||||||
<h3>Reguläre Ausdrücke</h3>
|
|
||||||
<p>
|
|
||||||
Reguläre Ausdrücke sind eine mächtige Sprache für den Mustervergleich, mit der
|
|
||||||
man nach bestimmten Mustern in einem Feld suchen kann. Wenn wir zum Beispiel
|
|
||||||
alle Datensätze mit dem DOI-Präfix 10.5281 finden wollen, können wir eine Suche mit
|
|
||||||
regulären Ausdrücken verwenden:
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<strong>Beispiel:</strong>
|
|
||||||
<a href="/search?page=1&size=20&q=metadata.subjects.identifier:%2F03yrm5c2%5B1%2C6%5D%2F"
|
|
||||||
><code>metadata.subjects.identifier:/03yrm5c2[1,6]/</code></a
|
|
||||||
>
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Vorsicht, der reguläre Ausdruck muss mit dem <em>gesamten</em> Feldwert übereinstimmen.
|
|
||||||
Weitere Einzelheiten finden Sie in der
|
|
||||||
<a
|
|
||||||
href="https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-regexp-query.html#regexp-syntax"
|
|
||||||
>Syntax des regulären Ausdrucks</a
|
|
||||||
>
|
|
||||||
.
|
|
||||||
</p>
|
|
||||||
<h3>Fehlende Werte</h3>
|
|
||||||
<p>
|
|
||||||
Es ist möglich, mit den Feldnamen <code>_exists_</code> und
|
|
||||||
<code>_missing_</code> nach Datensätzen zu suchen,
|
|
||||||
in denen entweder ein Wert fehlt oder die einen Wert in einem bestimmten Feld haben.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<strong>Beispiel:</strong>
|
|
||||||
<a href="/search?page=1&size=20&q=_missing_:metadata.additional_titles"
|
|
||||||
><code>_missing_:metadata.additional_titles</code></a
|
|
||||||
>
|
|
||||||
(alle Datensätze ohne metadata.additional_titles)
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<strong>Beispiel:</strong>
|
|
||||||
<a href="/search?page=1&size=20&q=_exists_:metadata.creators"
|
|
||||||
><code>_exists_:metadata.creators</code></a
|
|
||||||
>
|
|
||||||
(alle Datensätze mit metadata.creators)
|
|
||||||
</p>
|
|
||||||
<h3>Erweiterte Konzepte</h3>
|
|
||||||
<h4>Boosten</h4>
|
|
||||||
<p>
|
|
||||||
Sie können den Boost-Operator <code>^</code> verwenden, wenn ein Begriff relevanter ist als ein
|
|
||||||
anderer. Sie können z. B. nach allen Datensätzen suchen, die den Ausdruck
|
|
||||||
<em>open science</em> entweder <em>im title</em> oder im
|
|
||||||
<em>description</em> feld enthalten, aber Datensätze mit dem Ausdruck im
|
|
||||||
<em>title</em> feld höher einstufen:
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<strong>Beispiel:</strong>
|
|
||||||
<a
|
|
||||||
href="/search?page=1&size=20&q=metadata.title:%22open%20science%22%5E5%20metadata.description:%22open%20science%22"
|
|
||||||
><code>metadata.title:"open science"^5 metadata.description:"open science"</code></a
|
|
||||||
>
|
|
||||||
</p>
|
|
||||||
<h4>Unschärfe</h4>
|
|
||||||
<p>
|
|
||||||
Mit dem Fuzzy-Operator <code>~</code>können Sie nach
|
|
||||||
Begriffen suchen, die Ihrem Suchbegriff ähnlich, aber nicht genau gleich sind.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<strong>Beispiel:</strong>
|
|
||||||
<a href="/search?page=1&size=20&q=oepn~"><code>oepn~</code></a>
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Die Ergebnisse entsprechen Datensätzen mit ähnlichen Begriffen wie <code>oepn</code> die z. B.
|
|
||||||
auch auf <code>open</code> passen würden.
|
|
||||||
</p>
|
|
||||||
<h4>Näherungssuche</h4>
|
|
||||||
<p>
|
|
||||||
Eine Phrasensuche wie <code>"open science"</code> erwartet standardmäßig alle Begriffe in
|
|
||||||
genau der gleichen Reihenfolge und würde daher z. B. nicht auf einen Datensatz
|
|
||||||
passen, der die Phrase <em>"open access and science"</em> enthält.
|
|
||||||
Eine Proximity-Suche erlaubt, dass die Begriffe nicht in der exakten Reihenfolge stehen
|
|
||||||
und auch andere Begriffe dazwischen enthalten können.
|
|
||||||
Der Grad der Flexibilität wird anschließend durch eine Ganzzahl angegeben:
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<strong>Beispiel:</strong>
|
|
||||||
<a href="/search?page=1&size=20&q=%22open%20science%22~5"
|
|
||||||
><code>"open science"~5</code></a
|
|
||||||
>
|
|
||||||
</p>
|
|
||||||
<h4>Wildcards</h4>
|
|
||||||
<p>
|
|
||||||
Sie können Wildcards in Suchbegriffen verwenden, um ein einzelnes Zeichen (mit
|
|
||||||
dem Operator<code>?</code> operator) oder null oder mehr Zeichen (mit dem Operator
|
|
||||||
<code>*</code> ) zu ersetzen.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<strong>Beispiel:</strong>
|
|
||||||
<a href="/search?page=1&size=20&q=ope%3F%20scien*"
|
|
||||||
><code>ope? scien*</code></a
|
|
||||||
>
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Platzhaltersuchen können langsam sein und sollten normalerweise nach Möglichkeit vermieden werden.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
{%- endblock page_body%}
|
|
||||||
@@ -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.5.9"
|
__version__ = "0.6.0"
|
||||||
|
|||||||
2
setup.py
2
setup.py
@@ -54,7 +54,7 @@ setup_requires = [
|
|||||||
install_requires = [
|
install_requires = [
|
||||||
"Flask-BabelEx>=0.9.4",
|
"Flask-BabelEx>=0.9.4",
|
||||||
# keep this in sync with invenioRDM release
|
# keep this in sync with invenioRDM release
|
||||||
"invenio_app_rdm==3.0.0",
|
"invenio_app_rdm==4.0.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
packages = find_packages()
|
packages = find_packages()
|
||||||
|
|||||||
Reference in New Issue
Block a user