invenio-app-rdm 13.0.0b2.dev2__py2.py3-none-any.whl → 13.0.0b2.dev4__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- invenio_app_rdm/__init__.py +1 -1
- invenio_app_rdm/config.py +4 -2
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/meta.html +3 -1
- invenio_app_rdm/records_ui/views/decorators.py +91 -8
- invenio_app_rdm/records_ui/views/records.py +7 -4
- invenio_app_rdm/tasks.py +6 -2
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/components/CompareRevisionsDropdown.js +6 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/components/RevisionsDiffViewer.js +5 -0
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/CompareRevisions.js +10 -9
- invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/globals/site.overrides +1 -1
- invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/help/search.en.html +1 -1
- invenio_app_rdm/urls.py +11 -1
- {invenio_app_rdm-13.0.0b2.dev2.dist-info → invenio_app_rdm-13.0.0b2.dev4.dist-info}/METADATA +20 -1
- {invenio_app_rdm-13.0.0b2.dev2.dist-info → invenio_app_rdm-13.0.0b2.dev4.dist-info}/RECORD +50 -18
- {invenio_app_rdm-13.0.0b2.dev2.dist-info → invenio_app_rdm-13.0.0b2.dev4.dist-info}/WHEEL +1 -1
- {invenio_app_rdm-13.0.0b2.dev2.dist-info → invenio_app_rdm-13.0.0b2.dev4.dist-info}/top_level.txt +1 -0
- tests/__init__.py +8 -0
- tests/api/__init__.py +8 -0
- tests/api/conftest.py +24 -0
- tests/api/test_protect_files_rest.py +73 -0
- tests/api/test_record_api.py +175 -0
- tests/api/test_stats_api.py +26 -0
- tests/conftest.py +313 -0
- tests/fixtures/__init__.py +8 -0
- tests/fixtures/app_data/oai_sets.yaml +3 -0
- tests/fixtures/app_data/pages/about.html +1 -0
- tests/fixtures/app_data/pages.yaml +4 -0
- tests/fixtures/conftest.py +27 -0
- tests/fixtures/test_cli.py +25 -0
- tests/fixtures/test_fixtures.py +46 -0
- tests/mock_module/__init__.py +7 -0
- tests/mock_module/templates/mock_mail.html +28 -0
- tests/mock_module/views.py +32 -0
- tests/redirector/__init__.py +8 -0
- tests/redirector/conftest.py +54 -0
- tests/redirector/test_redirector.py +28 -0
- tests/test_tasks.py +104 -0
- tests/test_utils.py +67 -0
- tests/test_version.py +16 -0
- tests/test_views.py +43 -0
- tests/ui/__init__.py +8 -0
- tests/ui/conftest.py +105 -0
- tests/ui/test_deposits.py +115 -0
- tests/ui/test_export_formats.py +37 -0
- tests/ui/test_filters.py +10 -0
- tests/ui/test_signposting_ui.py +95 -0
- tests/ui/test_static.py +25 -0
- tests/ui/test_stats_ui.py +92 -0
- {invenio_app_rdm-13.0.0b2.dev2.dist-info → invenio_app_rdm-13.0.0b2.dev4.dist-info}/LICENSE +0 -0
- {invenio_app_rdm-13.0.0b2.dev2.dist-info → invenio_app_rdm-13.0.0b2.dev4.dist-info}/entry_points.txt +0 -0
invenio_app_rdm/__init__.py
CHANGED
invenio_app_rdm/config.py
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
#
|
|
3
3
|
# Copyright (C) 2019-2025 CERN.
|
|
4
4
|
# Copyright (C) 2019-2020 Northwestern University.
|
|
5
|
-
# Copyright (C) 2021-
|
|
5
|
+
# Copyright (C) 2021-2025 Graz University of Technology.
|
|
6
6
|
# Copyright (C) 2022-2024 KTH Royal Institute of Technology.
|
|
7
7
|
# Copyright (C) 2023 TU Wien
|
|
8
8
|
#
|
|
@@ -184,7 +184,7 @@ def _(x):
|
|
|
184
184
|
# =====
|
|
185
185
|
# See https://flask.palletsprojects.com/en/1.1.x/config/
|
|
186
186
|
|
|
187
|
-
|
|
187
|
+
TRUSTED_HOSTS = ["0.0.0.0", "localhost", "127.0.0.1"]
|
|
188
188
|
"""Allowed hosts.
|
|
189
189
|
|
|
190
190
|
Since HAProxy and Nginx route all requests no matter the host header
|
|
@@ -964,6 +964,8 @@ APP_RDM_DEPOSIT_FORM_PUBLISH_MODAL_EXTRA = ""
|
|
|
964
964
|
|
|
965
965
|
APP_RDM_RECORD_LANDING_PAGE_TEMPLATE = "invenio_app_rdm/records/detail.html"
|
|
966
966
|
|
|
967
|
+
APP_RDM_RECORD_LANDING_PAGE_FAIR_SIGNPOSTING_LEVEL_1_ENABLED = False
|
|
968
|
+
|
|
967
969
|
APP_RDM_RECORD_THUMBNAIL_SIZES = [10, 50, 100, 250, 750, 1200]
|
|
968
970
|
"""Allowed record thumbnail sizes."""
|
|
969
971
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{#
|
|
2
|
-
Copyright (C) 2020-
|
|
2
|
+
Copyright (C) 2020-2025 CERN.
|
|
3
3
|
Copyright (C) 2020 Northwestern University.
|
|
4
4
|
Copyright (C) 2021 New York University.
|
|
5
5
|
Copyright (C) 2023 Front Matter.
|
|
@@ -28,6 +28,8 @@ _external=True) %}
|
|
|
28
28
|
<meta name="citation_pdf_url" content="{{ file_url }}"/>
|
|
29
29
|
{%- endif %}
|
|
30
30
|
<link rel="alternate" type="{{ file.mimetype }}" href="{{ file_url }}">
|
|
31
|
+
{#- See https://signposting.org/FAIR/ #}
|
|
32
|
+
<link rel="item" type="{{ file.mimetype }}" href="{{ file_url }}">
|
|
31
33
|
{%- endfor %}
|
|
32
34
|
{% endif %}
|
|
33
35
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
#
|
|
3
|
-
# Copyright (C) 2019-
|
|
3
|
+
# Copyright (C) 2019-2025 CERN.
|
|
4
4
|
# Copyright (C) 2019-2021 Northwestern University.
|
|
5
5
|
# Copyright (C) 2021 TU Wien.
|
|
6
6
|
#
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
from functools import wraps
|
|
13
13
|
|
|
14
|
-
from flask import g, make_response, redirect, request, session, url_for
|
|
14
|
+
from flask import current_app, g, make_response, redirect, request, session, url_for
|
|
15
15
|
from flask_login import login_required
|
|
16
16
|
from invenio_communities.communities.resources.serializer import (
|
|
17
17
|
UICommunityJSONSerializer,
|
|
@@ -19,6 +19,9 @@ from invenio_communities.communities.resources.serializer import (
|
|
|
19
19
|
from invenio_communities.proxies import current_communities
|
|
20
20
|
from invenio_pidstore.errors import PIDDoesNotExistError
|
|
21
21
|
from invenio_rdm_records.proxies import current_rdm_records
|
|
22
|
+
from invenio_rdm_records.resources.serializers.signposting import (
|
|
23
|
+
FAIRSignpostingProfileLvl1Serializer,
|
|
24
|
+
)
|
|
22
25
|
from invenio_records_resources.services.errors import PermissionDeniedError
|
|
23
26
|
from sqlalchemy.orm.exc import NoResultFound
|
|
24
27
|
|
|
@@ -365,8 +368,63 @@ def pass_draft_community(f):
|
|
|
365
368
|
return view
|
|
366
369
|
|
|
367
370
|
|
|
368
|
-
def
|
|
369
|
-
|
|
371
|
+
def _get_header(rel, value, link_type=None):
|
|
372
|
+
header = f'<{value}> ; rel="{rel}"'
|
|
373
|
+
if link_type:
|
|
374
|
+
header += f' ; type="{link_type}"'
|
|
375
|
+
return header
|
|
376
|
+
|
|
377
|
+
|
|
378
|
+
def _get_signposting_collection(pid_value):
|
|
379
|
+
ui_url = record_url_for(pid_value=pid_value)
|
|
380
|
+
return _get_header("collection", ui_url, "text/html")
|
|
381
|
+
|
|
382
|
+
|
|
383
|
+
def _get_signposting_describes(pid_value):
|
|
384
|
+
ui_url = record_url_for(pid_value=pid_value)
|
|
385
|
+
return _get_header("describes", ui_url, "text/html")
|
|
386
|
+
|
|
387
|
+
|
|
388
|
+
def _get_signposting_linkset(pid_value):
|
|
389
|
+
api_url = record_url_for(_app="api", pid_value=pid_value)
|
|
390
|
+
return _get_header("linkset", api_url, "application/linkset+json")
|
|
391
|
+
|
|
392
|
+
|
|
393
|
+
def add_signposting_landing_page(f):
|
|
394
|
+
"""Add signposting links to the landing page view's response headers."""
|
|
395
|
+
|
|
396
|
+
@wraps(f)
|
|
397
|
+
def view(*args, **kwargs):
|
|
398
|
+
response = make_response(f(*args, **kwargs))
|
|
399
|
+
|
|
400
|
+
# Relies on other decorators having operated before it
|
|
401
|
+
if current_app.config[
|
|
402
|
+
"APP_RDM_RECORD_LANDING_PAGE_FAIR_SIGNPOSTING_LEVEL_1_ENABLED"
|
|
403
|
+
]:
|
|
404
|
+
record = kwargs["record"]
|
|
405
|
+
|
|
406
|
+
signposting_headers = (
|
|
407
|
+
FAIRSignpostingProfileLvl1Serializer().serialize_object(
|
|
408
|
+
record.to_dict()
|
|
409
|
+
)
|
|
410
|
+
)
|
|
411
|
+
|
|
412
|
+
response.headers["Link"] = signposting_headers
|
|
413
|
+
else:
|
|
414
|
+
pid_value = kwargs["pid_value"]
|
|
415
|
+
signposting_link = record_url_for(_app="api", pid_value=pid_value)
|
|
416
|
+
|
|
417
|
+
response.headers["Link"] = (
|
|
418
|
+
f'<{signposting_link}> ; rel="linkset" ; type="application/linkset+json"' # fmt: skip
|
|
419
|
+
)
|
|
420
|
+
|
|
421
|
+
return response
|
|
422
|
+
|
|
423
|
+
return view
|
|
424
|
+
|
|
425
|
+
|
|
426
|
+
def add_signposting_content_resources(f):
|
|
427
|
+
"""Add signposting links to the content resources view's response headers."""
|
|
370
428
|
|
|
371
429
|
@wraps(f)
|
|
372
430
|
def view(*args, **kwargs):
|
|
@@ -374,11 +432,36 @@ def add_signposting(f):
|
|
|
374
432
|
|
|
375
433
|
# Relies on other decorators having operated before it
|
|
376
434
|
pid_value = kwargs["pid_value"]
|
|
377
|
-
signposting_link = record_url_for(_app="api", pid_value=pid_value)
|
|
378
435
|
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
436
|
+
signposting_headers = [
|
|
437
|
+
_get_signposting_collection(pid_value),
|
|
438
|
+
_get_signposting_linkset(pid_value),
|
|
439
|
+
]
|
|
440
|
+
|
|
441
|
+
response.headers["Link"] = " , ".join(signposting_headers)
|
|
442
|
+
|
|
443
|
+
return response
|
|
444
|
+
|
|
445
|
+
return view
|
|
446
|
+
|
|
447
|
+
|
|
448
|
+
def add_signposting_metadata_resources(f):
|
|
449
|
+
"""Add signposting links to the metadata resources view's response headers."""
|
|
450
|
+
|
|
451
|
+
@wraps(f)
|
|
452
|
+
def view(*args, **kwargs):
|
|
453
|
+
response = make_response(f(*args, **kwargs))
|
|
454
|
+
|
|
455
|
+
# Relies on other decorators having operated before it
|
|
456
|
+
pid_value = kwargs["pid_value"]
|
|
457
|
+
|
|
458
|
+
signposting_headers = [
|
|
459
|
+
_get_signposting_describes(pid_value),
|
|
460
|
+
_get_signposting_linkset(pid_value),
|
|
461
|
+
]
|
|
462
|
+
|
|
463
|
+
response.headers["Link"] = " , ".join(signposting_headers)
|
|
464
|
+
|
|
382
465
|
return response
|
|
383
466
|
|
|
384
467
|
return view
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
#
|
|
3
|
-
# Copyright (C) 2019-
|
|
3
|
+
# Copyright (C) 2019-2025 CERN.
|
|
4
4
|
# Copyright (C) 2019-2021 Northwestern University.
|
|
5
5
|
# Copyright (C) 2021-2023 TU Wien.
|
|
6
6
|
#
|
|
@@ -39,7 +39,9 @@ from invenio_app_rdm.records_ui.previewer.iiif_simple import (
|
|
|
39
39
|
|
|
40
40
|
from ..utils import get_external_resources
|
|
41
41
|
from .decorators import (
|
|
42
|
-
|
|
42
|
+
add_signposting_content_resources,
|
|
43
|
+
add_signposting_landing_page,
|
|
44
|
+
add_signposting_metadata_resources,
|
|
43
45
|
pass_file_item,
|
|
44
46
|
pass_file_metadata,
|
|
45
47
|
pass_include_deleted,
|
|
@@ -141,7 +143,7 @@ class PreviewFile:
|
|
|
141
143
|
@pass_record_or_draft(expand=True)
|
|
142
144
|
@pass_record_files
|
|
143
145
|
@pass_record_media_files
|
|
144
|
-
@
|
|
146
|
+
@add_signposting_landing_page
|
|
145
147
|
def record_detail(
|
|
146
148
|
pid_value, record, files, media_files, is_preview=False, include_deleted=False
|
|
147
149
|
):
|
|
@@ -263,6 +265,7 @@ def record_detail(
|
|
|
263
265
|
|
|
264
266
|
@pass_is_preview
|
|
265
267
|
@pass_record_or_draft(expand=False)
|
|
268
|
+
@add_signposting_metadata_resources
|
|
266
269
|
def record_export(
|
|
267
270
|
pid_value, record, export_format=None, permissions=None, is_preview=False
|
|
268
271
|
):
|
|
@@ -325,7 +328,7 @@ def record_file_preview(
|
|
|
325
328
|
|
|
326
329
|
@pass_is_preview
|
|
327
330
|
@pass_file_item(is_media=False)
|
|
328
|
-
@
|
|
331
|
+
@add_signposting_content_resources
|
|
329
332
|
def record_file_download(pid_value, file_item=None, is_preview=False, **kwargs):
|
|
330
333
|
"""Download a file from a record."""
|
|
331
334
|
download = bool(request.args.get("download"))
|
invenio_app_rdm/tasks.py
CHANGED
|
@@ -18,7 +18,10 @@ from .utils.files import send_integrity_report_email
|
|
|
18
18
|
def file_integrity_report():
|
|
19
19
|
"""Send a report of uhealthy/missing files to system admins."""
|
|
20
20
|
# First retry verifying files that errored during their last check
|
|
21
|
-
files = FileInstance.query.filter(
|
|
21
|
+
files = FileInstance.query.filter(
|
|
22
|
+
FileInstance.last_check.is_(None),
|
|
23
|
+
FileInstance.uri.is_not(None),
|
|
24
|
+
)
|
|
22
25
|
for f in files:
|
|
23
26
|
try:
|
|
24
27
|
f.clear_last_check()
|
|
@@ -32,7 +35,8 @@ def file_integrity_report():
|
|
|
32
35
|
FileInstance.query.filter(
|
|
33
36
|
sa.or_(
|
|
34
37
|
FileInstance.last_check.is_(None), FileInstance.last_check.is_(False)
|
|
35
|
-
)
|
|
38
|
+
),
|
|
39
|
+
FileInstance.uri.is_not(None),
|
|
36
40
|
)
|
|
37
41
|
.order_by(FileInstance.created.desc())
|
|
38
42
|
.all()
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* // This file is part of Invenio-App-Rdm
|
|
3
3
|
* // Copyright (C) 2025 CERN.
|
|
4
|
+
* // Copyright (C) 2025 Graz University of Technology.
|
|
4
5
|
* //
|
|
5
6
|
* // Invenio-App-Rdm is free software; you can redistribute it and/or modify it
|
|
6
7
|
* // under the terms of the MIT License; see LICENSE file for more details.
|
|
@@ -81,3 +82,8 @@ CompareRevisionsDropdown.propTypes = {
|
|
|
81
82
|
srcRevision: PropTypes.object,
|
|
82
83
|
targetRevision: PropTypes.object,
|
|
83
84
|
};
|
|
85
|
+
|
|
86
|
+
CompareRevisionsDropdown.defaultProps = {
|
|
87
|
+
srcRevision: 0,
|
|
88
|
+
targetRevision: 0,
|
|
89
|
+
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* // This file is part of Invenio-App-Rdm
|
|
3
3
|
* // Copyright (C) 2025 CERN.
|
|
4
|
+
* // Copyright (C) 2025 Graz University of Technology.
|
|
4
5
|
* //
|
|
5
6
|
* // Invenio-App-Rdm is free software; you can redistribute it and/or modify it
|
|
6
7
|
* // under the terms of the MIT License; see LICENSE file for more details.
|
|
@@ -75,3 +76,7 @@ RevisionsDiffViewer.propTypes = {
|
|
|
75
76
|
diff: PropTypes.object,
|
|
76
77
|
viewerProps: PropTypes.object.isRequired,
|
|
77
78
|
};
|
|
79
|
+
|
|
80
|
+
RevisionsDiffViewer.defaultProps = {
|
|
81
|
+
diff: {},
|
|
82
|
+
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* // This file is part of Invenio-App-Rdm
|
|
3
3
|
* // Copyright (C) 2025 CERN.
|
|
4
|
+
* // Copyright (C) 2025 Graz University of Technology.
|
|
4
5
|
* //
|
|
5
6
|
* // Invenio-App-Rdm is free software; you can redistribute it and/or modify it
|
|
6
7
|
* // under the terms of the MIT License; see LICENSE file for more details.
|
|
@@ -28,6 +29,14 @@ export class CompareRevisions extends Component {
|
|
|
28
29
|
};
|
|
29
30
|
}
|
|
30
31
|
|
|
32
|
+
componentDidMount() {
|
|
33
|
+
this.fetchRevisions();
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
componentWillUnmount() {
|
|
37
|
+
this.cancellableAction && this.cancellableAction.cancel();
|
|
38
|
+
}
|
|
39
|
+
|
|
31
40
|
async fetchRevisions() {
|
|
32
41
|
const { resource } = this.props;
|
|
33
42
|
this.setState({ loading: true });
|
|
@@ -50,14 +59,6 @@ export class CompareRevisions extends Component {
|
|
|
50
59
|
}
|
|
51
60
|
}
|
|
52
61
|
|
|
53
|
-
componentDidMount() {
|
|
54
|
-
this.fetchRevisions();
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
componentWillUnmount() {
|
|
58
|
-
this.cancellableAction && this.cancellableAction.cancel();
|
|
59
|
-
}
|
|
60
|
-
|
|
61
62
|
handleModalClose = () => {
|
|
62
63
|
const { actionCancelCallback } = this.props;
|
|
63
64
|
actionCancelCallback();
|
|
@@ -100,7 +101,7 @@ export class CompareRevisions extends Component {
|
|
|
100
101
|
</Modal.Content>
|
|
101
102
|
)}
|
|
102
103
|
<Modal.Content scrolling>
|
|
103
|
-
<RevisionsDiffViewer diff={
|
|
104
|
+
<RevisionsDiffViewer diff={diff} />
|
|
104
105
|
</Modal.Content>
|
|
105
106
|
</Modal.Content>
|
|
106
107
|
<Modal.Actions>
|
|
@@ -235,7 +235,7 @@
|
|
|
235
235
|
in exactly the same order, and thus for instance would not match a record
|
|
236
236
|
containing the phrase <em>"open access and science"</em>. A proximity search
|
|
237
237
|
allows that the terms are not in the exact order and may include other terms
|
|
238
|
-
|
|
238
|
+
in between. The degree of flexibility is specified by an integer afterwards:
|
|
239
239
|
</p>
|
|
240
240
|
<p>
|
|
241
241
|
<strong>Example:</strong>
|
invenio_app_rdm/urls.py
CHANGED
|
@@ -28,6 +28,9 @@ Design decisions:
|
|
|
28
28
|
- Generated urls are absolute for now
|
|
29
29
|
"""
|
|
30
30
|
|
|
31
|
+
import unicodedata
|
|
32
|
+
from urllib.parse import quote
|
|
33
|
+
|
|
31
34
|
from flask import current_app
|
|
32
35
|
|
|
33
36
|
|
|
@@ -49,7 +52,14 @@ def record_url_for(_app="ui", pid_value=""):
|
|
|
49
52
|
|
|
50
53
|
def download_url_for(pid_value="", filename=""):
|
|
51
54
|
"""Return url for download route."""
|
|
52
|
-
url_prefix = current_app.config.get(
|
|
55
|
+
url_prefix = current_app.config.get("SITE_UI_URL", "")
|
|
56
|
+
|
|
57
|
+
# see https://github.com/pallets/werkzeug/blob/main/src/werkzeug/utils.py#L456-L465
|
|
58
|
+
try:
|
|
59
|
+
filename.encode("ascii")
|
|
60
|
+
except UnicodeEncodeError:
|
|
61
|
+
# safe = RFC 5987 attr-char
|
|
62
|
+
filename = quote(filename, safe="!#$&+-.^_`|~")
|
|
53
63
|
|
|
54
64
|
# We use [] so that this fails and brings to attention the configuration
|
|
55
65
|
# problem if APP_RDM_ROUTES.record_file_download is missing
|
{invenio_app_rdm-13.0.0b2.dev2.dist-info → invenio_app_rdm-13.0.0b2.dev4.dist-info}/METADATA
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: invenio-app-rdm
|
|
3
|
-
Version: 13.0.0b2.
|
|
3
|
+
Version: 13.0.0b2.dev4
|
|
4
4
|
Summary: Invenio Research Data Management.
|
|
5
5
|
Home-page: https://github.com/inveniosoftware/invenio-app-rdm
|
|
6
6
|
Author: CERN
|
|
@@ -96,6 +96,25 @@ https://inveniordm.docs.cern.ch
|
|
|
96
96
|
Changes
|
|
97
97
|
=======
|
|
98
98
|
|
|
99
|
+
Version v13.0.0b2.dev4 (released 2025-03-10)
|
|
100
|
+
|
|
101
|
+
- views: FAIR signposting level 1 support (config flag)
|
|
102
|
+
- tasks: skip health checks for files that don't have a uri
|
|
103
|
+
- views: signposting: files: fix filename encoding issues for downloads
|
|
104
|
+
|
|
105
|
+
Version v13.0.0b2.dev3 (released 2025-02-21)
|
|
106
|
+
|
|
107
|
+
- views: FAIR signposting level 1 support
|
|
108
|
+
- meta: FAIR signposting level 1 support (link rel item)
|
|
109
|
+
- globals: site.overrides: Increase pdf preview iframe height
|
|
110
|
+
- tests: fix mock module paths
|
|
111
|
+
- tests: add __init__.py in all directories
|
|
112
|
+
* This is necessary for pytest v8.x to be able to detect all unique
|
|
113
|
+
tests.
|
|
114
|
+
|
|
115
|
+
- tests: filter out excessive warnings
|
|
116
|
+
- fix: flask changed to TRUSTED_HOSTS
|
|
117
|
+
|
|
99
118
|
Version v13.0.0b2.dev2 (released 2025-02-13)
|
|
100
119
|
|
|
101
120
|
- Bump prerelease dependencies to stable.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
invenio_app_rdm/__init__.py,sha256=
|
|
1
|
+
invenio_app_rdm/__init__.py,sha256=hJh2ID9D2F8shJQctjpBsnXXNr6rUgqvkW32PXDpBj8,699
|
|
2
2
|
invenio_app_rdm/cli.py,sha256=G6QqNU2W6n6ICtTMnpeKFXIsdorncDmVXwwwsGH5F2k,2746
|
|
3
|
-
invenio_app_rdm/config.py,sha256=
|
|
3
|
+
invenio_app_rdm/config.py,sha256=aQHeG7QxiKx01eDi1Xo7hsOfyAfe_yb8SNrq-CDOYag,50448
|
|
4
4
|
invenio_app_rdm/ext.py,sha256=PkZhATGJDgYqBJQh41NdvBZWR83mgI3Eej6rj10UVJE,5278
|
|
5
|
-
invenio_app_rdm/tasks.py,sha256=
|
|
6
|
-
invenio_app_rdm/urls.py,sha256=
|
|
5
|
+
invenio_app_rdm/tasks.py,sha256=FyrIQXVuPjms-dNEnLrVmmdwrX_IykJ87gcSNgOR6O0,1373
|
|
6
|
+
invenio_app_rdm/urls.py,sha256=8S95QSs4yS0rtORsd4veo--rF3LSLwZenoowJ5ubbmM,2496
|
|
7
7
|
invenio_app_rdm/administration/__init__.py,sha256=8r9LeoE9fNHZSVS5QsCfVhRU7MAiEOWJk9MA3Y--4F8,251
|
|
8
8
|
invenio_app_rdm/administration/domains/__init__.py,sha256=Qob5kqjRPxpuSE5yDV2tesN6tmaKp5JcxCxGA8Mrcak,487
|
|
9
9
|
invenio_app_rdm/administration/domains/domains.py,sha256=vafLa-mqkg_tQLjx328E64P_4mksB5kjBlsfunvdatg,5599
|
|
@@ -56,7 +56,7 @@ invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details
|
|
|
56
56
|
invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/description.html,sha256=wqLb_Z6cJ026KEDedJMSsQhQnKWpe7TnMuMVwFAMDX0,912
|
|
57
57
|
invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/details.html,sha256=jdXr5U6YS8UllEuJjjSzusJJ1XkdE75V2q97h43D0NA,12095
|
|
58
58
|
invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/doi.html,sha256=bveXC9JvZVjPKQrtZ8FFUV-fIHEN4nB1VSyomR_obxA,473
|
|
59
|
-
invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/meta.html,sha256=
|
|
59
|
+
invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/meta.html,sha256=guLBzq2zQM9VqGVnRKZ2XHZcAk0YEK1VAf3wEM-mk2M,1732
|
|
60
60
|
invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar.html,sha256=PjmX-aH2YVZl67Q9ydFDOTLlrEwV2hgz64dRfftFF0A,426
|
|
61
61
|
invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/stats.html,sha256=74xWPQNHoFbhN1an-p9SEAFUbW-TwCsBEUAaOEyNgWQ,4370
|
|
62
62
|
invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/subjects.html,sha256=Wu7MCXzGj41K38-VXi-kStvc8fm3Ck68uJ1egfFK0dw,1509
|
|
@@ -80,10 +80,10 @@ invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/
|
|
|
80
80
|
invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/stats_popup.html,sha256=5SVzfIS15Aro2Itd2BiaLbMXm0cvvwk6ZCdYjuSwhBw,625
|
|
81
81
|
invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/version.html,sha256=JpE4e6RpbSR2pQD1rOsfvzD2ur584aRfBWUUap2IMBA,688
|
|
82
82
|
invenio_app_rdm/records_ui/views/__init__.py,sha256=4NxQNADuvMsblEsGd3zkKXSNR5_4eLMcFEFYvc6NxVc,5718
|
|
83
|
-
invenio_app_rdm/records_ui/views/decorators.py,sha256=
|
|
83
|
+
invenio_app_rdm/records_ui/views/decorators.py,sha256=XUSPpstYyh72IdNaIO4wz3sw1fjI_2DNGsKdUu3ueL4,15769
|
|
84
84
|
invenio_app_rdm/records_ui/views/deposits.py,sha256=ZQSlYugqZX1jnS0GFNtJQVq2_KyDS_ECzp1S26qDGAs,21337
|
|
85
85
|
invenio_app_rdm/records_ui/views/filters.py,sha256=Rm55fXJv97cqq8B_6KCe-3PxxHUH4VRu-jd9fTea6r4,6994
|
|
86
|
-
invenio_app_rdm/records_ui/views/records.py,sha256=
|
|
86
|
+
invenio_app_rdm/records_ui/views/records.py,sha256=GdxG3JnXrV1QT0KxOqeYWoDGIiZRZ9w5poihPPd-wTo,16428
|
|
87
87
|
invenio_app_rdm/redirector/__init__.py,sha256=AYCTGmfbmkHW3YJXMqXlWBXcBrUsta-QmL9ULX2bjwA,243
|
|
88
88
|
invenio_app_rdm/redirector/resource.py,sha256=XuH6ZK0HVE5LdXoorlm8aI3deizvnZ5gFa9d1ihYosk,3312
|
|
89
89
|
invenio_app_rdm/redirector/views.py,sha256=CTJ3EGEFKfc0lFwNb9pwH7MbMLiqaWnF8LA3xGIwahc,563
|
|
@@ -105,10 +105,10 @@ invenio_app_rdm/theme/views.py,sha256=UJs2_C28BWsXY1JqbRK4_ML1JRtGo1yM2S0_W37JJo
|
|
|
105
105
|
invenio_app_rdm/theme/webpack.py,sha256=5ucwIJQgM1y9EFdRcsxv_ThPs7hXRzdmipVBxoU1McI,5090
|
|
106
106
|
invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/theme.js,sha256=2-BWDEH3YQPwPt1ey3jUHnMrKTyb0JBPRlydk5_reH8,4151
|
|
107
107
|
invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/utils.js,sha256=zKROcc3qE64-UhM8ha42K-EDDxAXMupxoocZZ9bjEHo,3452
|
|
108
|
-
invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/components/CompareRevisionsDropdown.js,sha256=
|
|
108
|
+
invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/components/CompareRevisionsDropdown.js,sha256=BNdMxfFYPhlrGKPg47oc4X8ILllfCngN61L1b7Yt_8Q,2483
|
|
109
109
|
invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/components/ImpersonateUser.js,sha256=GmZGEPOylGXr6fyNJxS_0hPwCGdO98F2u6Pn8Qrt9ew,2291
|
|
110
110
|
invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/components/ImpersonateUserForm.js,sha256=qsjNiOsHWx9rrP3uA4nxthUEoY9b82n0IO8PfdObxHQ,6815
|
|
111
|
-
invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/components/RevisionsDiffViewer.js,sha256
|
|
111
|
+
invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/components/RevisionsDiffViewer.js,sha256=-2khcBmWr3zztAjy3mRz4d9gu8b8IAZtWbcnwnD5eAk,1932
|
|
112
112
|
invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/components/SetQuotaAction.js,sha256=wwvYfTJ7pBEdoeqcEqmxFLaEwpJnnFW0oRQTyAdDSBw,3038
|
|
113
113
|
invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/components/SetQuotaForm.js,sha256=Ltr03KlCogkg2NjqWc1GkxJlYPWB2LDLHL04w6eJiRU,5749
|
|
114
114
|
invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/components/index.js,sha256=soELMxc1jf_rL62CJ9wtWGVG13yk1PRY7JqseqnKkqU,297
|
|
@@ -116,7 +116,7 @@ invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/domai
|
|
|
116
116
|
invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/domains/search/SearchResultItemLayout.js,sha256=sWIHw6tSCmRa0dYCHTa-fbxnHr9MhyDhMUiGlGV-HWE,6097
|
|
117
117
|
invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/domains/search/index.js,sha256=uajCJbGiHGjRH_YapCGGXATKtAUlXTr0jirx1UfqjCQ,283
|
|
118
118
|
invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/drafts/index.js,sha256=DuPY4wnnwyWF61Oyef1S4SvQrg-DrkZZjjQKlA0DeJo,1159
|
|
119
|
-
invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/CompareRevisions.js,sha256=
|
|
119
|
+
invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/CompareRevisions.js,sha256=J-bx3k8PPSAFg669w_rhZVuSFDS2RjcKyyqxZ029FFU,3768
|
|
120
120
|
invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/RecordActions.js,sha256=FAjkK7TZ4ebjsQh1ZcFFHkVePP2T8msa1OAIjxktKJo,1935
|
|
121
121
|
invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/RecordResourceActions.js,sha256=rrQhCfw1Q8n5SJ9aT-XfZfadEZRK9b1N6hzGkbMAnrU,5528
|
|
122
122
|
invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/RemovalReasonsSelect.js,sha256=8y1YRo1ZyqDfeQL4aNbO9ig3689YpzEBse8kLf_qI8o,2192
|
|
@@ -251,7 +251,7 @@ invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/seg
|
|
|
251
251
|
invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/segment.variables,sha256=HwtfX97PrCMjVYBHj323pUmrjBuUl41yVthXQL_8YHs,141
|
|
252
252
|
invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/globals/reset.overrides,sha256=ms-coZLC-kFoWoZ4UNyJq0FRQ0bSLRziXzbyP7tnmNA,139
|
|
253
253
|
invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/globals/reset.variables,sha256=Luyh-V1w5wDFv2j77bYmTxfn22Cp7h1vLjRsqhf207Y,139
|
|
254
|
-
invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/globals/site.overrides,sha256=
|
|
254
|
+
invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/globals/site.overrides,sha256=Okd5gBx3clt63UUmvSOb1PlHwDEB7-Th9DUJ4LNAXmw,9010
|
|
255
255
|
invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/globals/site.variables,sha256=j59x9AQ5p4omynVitye2tIM3h0GCXSqcajNYJElKxjI,3043
|
|
256
256
|
invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/accordion.overrides,sha256=7SK2kGZU-KMda2SVbuLfP-6hk0vTe_4gFk6O_RvU_hs,3306
|
|
257
257
|
invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/accordion.variables,sha256=JFUnfiL_Xve48EwxRjYq0T-QJA8jboC606L08IjrBXg,322
|
|
@@ -396,7 +396,7 @@ invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/searchbar.html,sha25
|
|
|
396
396
|
invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/site_footer.html,sha256=O4914C0hNrKtHreAanMbhRUiCfb8aubr6pV2chXB_BQ,821
|
|
397
397
|
invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/files_integrity_report/email/files_integrity_report.html,sha256=27L0XZKP5bkOu4tx0QmMMDwIPdtFU_dyVfTfRk9E5QQ,1063
|
|
398
398
|
invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/help/search.de.html,sha256=gefXaGv-ylkBUbvXXJe5EcTS66qoY0-v0XesXICX5_E,9310
|
|
399
|
-
invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/help/search.en.html,sha256
|
|
399
|
+
invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/help/search.en.html,sha256=-EZdjhc4JslSq37_QN3KRL01LBwLJENkRtwBJ-PLSzc,8792
|
|
400
400
|
invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/help/statistics.en.html,sha256=gQSJsmsXaLLA8KqEjkyxn7j299Kc0hnjA0sXq0oXeuI,7780
|
|
401
401
|
invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/help/versioning.en.html,sha256=Rfd4-1vpU92VxppMTLGlS7uzqXWZUtGBARJTalUFuxg,6066
|
|
402
402
|
invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/macros/records_list.html,sha256=GhHhRCn2lD9zyZ7J7_GiLqTQSHGxpWbiuYdZp8ft0bU,1081
|
|
@@ -523,9 +523,41 @@ invenio_app_rdm/users_ui/views/__init__.py,sha256=SMdY2NJj9GICfr3Xuok7qdNYVtA2bJ
|
|
|
523
523
|
invenio_app_rdm/users_ui/views/dashboard.py,sha256=iUn2PrODAwb8ugmMosJKAjPhUzjCiWiAWoXQr9RUFuc,1793
|
|
524
524
|
invenio_app_rdm/users_ui/views/ui.py,sha256=W_eXM8dLVIrNHQB2UEh37C9BYoHauft6RyvcDNFHovA,1742
|
|
525
525
|
invenio_app_rdm/utils/files.py,sha256=CruDyO2gDVadSlWEJD-WHpWHeOQ0juh-Ei9jz3D9yjc,3923
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
526
|
+
tests/__init__.py,sha256=yKVf0yYRuxmXvyAtLjmfpHGVCsEkZOhs_FojAAM_w-8,244
|
|
527
|
+
tests/conftest.py,sha256=6iR-l-DIpQDxN2LLMu6kbHnLsmAW1m8Lq-j8rNNucf8,8956
|
|
528
|
+
tests/test_tasks.py,sha256=6l25lcMjL3ZuQr4hsxbAEjSTu_J1aKkOB3ZXqOZZIy0,3712
|
|
529
|
+
tests/test_utils.py,sha256=nvj59DibjRZgLzwnch83tyCw9R1DEuDSQhU7v7mEOT0,1897
|
|
530
|
+
tests/test_version.py,sha256=c_ayM-WLlD0Q6z939sBnFpMTY160TmFg-9-hGsPa7FE,410
|
|
531
|
+
tests/test_views.py,sha256=Q0mSOqd6xVrAxQMdc0MAdZRUnxv7gFAkKcBQY-gQtUI,1420
|
|
532
|
+
tests/api/__init__.py,sha256=yKVf0yYRuxmXvyAtLjmfpHGVCsEkZOhs_FojAAM_w-8,244
|
|
533
|
+
tests/api/conftest.py,sha256=0HkavUGeZLAF6aP5j8yFoyPFaEQj790x57L_otwvFTo,635
|
|
534
|
+
tests/api/test_protect_files_rest.py,sha256=wbe_PaUbWKnlq5nWDkfqTA2h0HxvI4we4PtxW_ma5tc,2423
|
|
535
|
+
tests/api/test_record_api.py,sha256=9fHo6tWSakVG1bj12JfY1xY2QnYmDAaX_b_QIDj5woM,6000
|
|
536
|
+
tests/api/test_stats_api.py,sha256=UePoplUtJPOZcW0ih22Uw7QFT4h5gPN4pfXGGlOe1W0,1052
|
|
537
|
+
tests/fixtures/__init__.py,sha256=yKVf0yYRuxmXvyAtLjmfpHGVCsEkZOhs_FojAAM_w-8,244
|
|
538
|
+
tests/fixtures/conftest.py,sha256=XeHBsck2uwtOM0d0fcKhu2gPMVq6-_Xp2WxT-2AgQNU,700
|
|
539
|
+
tests/fixtures/test_cli.py,sha256=HivtaI3dqdWZml-rBif_FfyFfi1iG-pAJOol0ckiGHc,751
|
|
540
|
+
tests/fixtures/test_fixtures.py,sha256=dOFejrkfK5LsJyvDem9wa5I03e-yH40TALlelEinre0,1319
|
|
541
|
+
tests/fixtures/app_data/oai_sets.yaml,sha256=nQt7ZNQCUOEJBR6txo5Cc845SbjEnvNfLR4lAeRMBA0,84
|
|
542
|
+
tests/fixtures/app_data/pages.yaml,sha256=t4pyjwMBVI6MxEkwCtg9urMXo5fh0mzWy-Zr8NvCXuQ,73
|
|
543
|
+
tests/fixtures/app_data/pages/about.html,sha256=obB_g3uL1ligwguh0a0-tRLRBB-eGXN1NE-3odp2j-E,11
|
|
544
|
+
tests/mock_module/__init__.py,sha256=gu6vRcXqYTKCXZjvAIHZRv2w1IvpGiDs7atQJbij5M0,236
|
|
545
|
+
tests/mock_module/views.py,sha256=TWJQfcql5XaBNtdR9phVl4tHB0YG6g5IG5n08VZTzXE,770
|
|
546
|
+
tests/mock_module/templates/mock_mail.html,sha256=H_ya78ip4xS-9ZpBuzVpwD-QE8EKEZpoLayKe0u5rHQ,845
|
|
547
|
+
tests/redirector/__init__.py,sha256=yKVf0yYRuxmXvyAtLjmfpHGVCsEkZOhs_FojAAM_w-8,244
|
|
548
|
+
tests/redirector/conftest.py,sha256=KAbp0R8tgGoNvMr8mJ1G2AZX6PzLw-PChtbucrLn5_o,1676
|
|
549
|
+
tests/redirector/test_redirector.py,sha256=iATYglIw3QSoUKpspQCAM4SaG_WmzjL7r1Nmew_KlGY,1002
|
|
550
|
+
tests/ui/__init__.py,sha256=yKVf0yYRuxmXvyAtLjmfpHGVCsEkZOhs_FojAAM_w-8,244
|
|
551
|
+
tests/ui/conftest.py,sha256=id6A9VbwHQtnr8bzQyQXDBDoKUHx8uufuhRVk02mqbk,3015
|
|
552
|
+
tests/ui/test_deposits.py,sha256=BehQzo1r3_f4Uc9jcXRddd9bS5GfQ3jRRYOM0AMbi3w,3792
|
|
553
|
+
tests/ui/test_export_formats.py,sha256=pCXJCTp9ykEWb2oB-ynGjQDhFaVsOs31ym0stwfWCaQ,909
|
|
554
|
+
tests/ui/test_filters.py,sha256=Q90wsJffjMVir7wNX8taGf2KZleLtPbXZXHLTkBpzLA,284
|
|
555
|
+
tests/ui/test_signposting_ui.py,sha256=KCSjQlMD2VKlwQCyZYDwYjtVNL35x3u-ZC4ceD5y21w,3847
|
|
556
|
+
tests/ui/test_static.py,sha256=vO3OQAOhrQESJifnQfM1pw7JYz3J874O8BAb7Cc_PPA,868
|
|
557
|
+
tests/ui/test_stats_ui.py,sha256=LHa_0hjvpYvliSk_jknWy-90CO82jVElUfK5Ua_ZmfA,3554
|
|
558
|
+
invenio_app_rdm-13.0.0b2.dev4.dist-info/LICENSE,sha256=AZXFHRrZa5s4m9DV7zZr4bPGTMUvcEPCodeV_AmFI8k,1204
|
|
559
|
+
invenio_app_rdm-13.0.0b2.dev4.dist-info/METADATA,sha256=llhPnYj4_mF5zohdgicsNAdMhTOiADuTi1v_Z7lUUvw,10582
|
|
560
|
+
invenio_app_rdm-13.0.0b2.dev4.dist-info/WHEEL,sha256=SrDKpSbFN1G94qcmBqS9nyHcDMp9cUS9OC06hC0G3G0,109
|
|
561
|
+
invenio_app_rdm-13.0.0b2.dev4.dist-info/entry_points.txt,sha256=r1vTqYNABeWqRMWitzyR9FnBsAy-KYZKZCp95IziyLY,2070
|
|
562
|
+
invenio_app_rdm-13.0.0b2.dev4.dist-info/top_level.txt,sha256=NqTqrntInEAci7EXcNBvouXFMqwyjVQhEI0b7izYRBY,22
|
|
563
|
+
invenio_app_rdm-13.0.0b2.dev4.dist-info/RECORD,,
|
tests/__init__.py
ADDED
tests/api/__init__.py
ADDED
tests/api/conftest.py
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
#
|
|
3
|
+
# Copyright (C) 2019 CERN.
|
|
4
|
+
# Copyright (C) 2019 Northwestern University.
|
|
5
|
+
#
|
|
6
|
+
# Invenio App RDM is free software; you can redistribute it and/or modify it
|
|
7
|
+
# under the terms of the MIT License; see LICENSE file for more details.
|
|
8
|
+
|
|
9
|
+
"""Pytest fixtures and plugins for the API application."""
|
|
10
|
+
|
|
11
|
+
import pytest
|
|
12
|
+
from invenio_app.factory import create_api
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
@pytest.fixture(scope="module")
|
|
16
|
+
def create_app():
|
|
17
|
+
"""Create test app."""
|
|
18
|
+
return create_api
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@pytest.fixture(scope="module")
|
|
22
|
+
def headers():
|
|
23
|
+
"""Return typical API headers."""
|
|
24
|
+
return {"content-type": "application/json", "accept": "application/json"}
|