invenio-app-ils 4.6.0__py2.py3-none-any.whl → 5.0.0__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_ils/__init__.py +1 -1
- invenio_app_ils/assets/semantic-ui/less/theme.config +103 -0
- invenio_app_ils/circulation/api.py +9 -5
- invenio_app_ils/circulation/config.py +1 -0
- invenio_app_ils/circulation/loaders/schemas/json/loan_checkout.py +1 -1
- invenio_app_ils/circulation/loaders/schemas/json/loan_request.py +2 -2
- invenio_app_ils/circulation/notifications/api.py +9 -1
- invenio_app_ils/circulation/notifications/messages.py +2 -1
- invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/update_dates.html +19 -0
- invenio_app_ils/cli.py +92 -64
- invenio_app_ils/config.py +10 -2
- invenio_app_ils/documents/loaders/jsonschemas/document.py +1 -1
- invenio_app_ils/eitems/loaders/jsonschemas/eitems.py +2 -2
- invenio_app_ils/patrons/anonymization.py +0 -4
- invenio_app_ils/series/loaders/jsonschemas/series.py +1 -1
- invenio_app_ils/webpack.py +27 -0
- {invenio_app_ils-4.6.0.dist-info → invenio_app_ils-5.0.0.dist-info}/METADATA +52 -42
- {invenio_app_ils-4.6.0.dist-info → invenio_app_ils-5.0.0.dist-info}/RECORD +24 -112
- {invenio_app_ils-4.6.0.dist-info → invenio_app_ils-5.0.0.dist-info}/entry_points.txt +3 -0
- {invenio_app_ils-4.6.0.dist-info → invenio_app_ils-5.0.0.dist-info}/top_level.txt +0 -1
- invenio_app_ils/notifications/admin.py +0 -57
- tests/__init__.py +0 -8
- tests/api/__init__.py +0 -8
- tests/api/acquisition/__init__.py +0 -8
- tests/api/acquisition/test_acq_orders_crud.py +0 -99
- tests/api/acquisition/test_acq_orders_permissions.py +0 -104
- tests/api/acquisition/test_acq_providers_permissions.py +0 -83
- tests/api/circulation/__init__.py +0 -8
- tests/api/circulation/test_expired_loans.py +0 -88
- tests/api/circulation/test_loan_bulk_extend.py +0 -169
- tests/api/circulation/test_loan_checkout.py +0 -422
- tests/api/circulation/test_loan_default_durations.py +0 -43
- tests/api/circulation/test_loan_document_resolver.py +0 -18
- tests/api/circulation/test_loan_extend.py +0 -122
- tests/api/circulation/test_loan_item_permissions.py +0 -135
- tests/api/circulation/test_loan_item_resolver.py +0 -26
- tests/api/circulation/test_loan_list_permissions.py +0 -98
- tests/api/circulation/test_loan_patron_resolver.py +0 -38
- tests/api/circulation/test_loan_request.py +0 -338
- tests/api/circulation/test_loan_update.py +0 -150
- tests/api/circulation/test_notifications.py +0 -221
- tests/api/conftest.py +0 -227
- tests/api/document_requests/__init__.py +0 -8
- tests/api/document_requests/test_document_requests.py +0 -131
- tests/api/document_requests/test_document_requests_permissions.py +0 -159
- tests/api/document_requests/test_notifications_filter.py +0 -35
- tests/api/ill/__init__.py +0 -8
- tests/api/ill/test_ill_brw_crud.py +0 -74
- tests/api/ill/test_ill_brw_reqs_patron_loan_create_action.py +0 -198
- tests/api/ill/test_ill_brw_reqs_patron_loan_extension_actions.py +0 -280
- tests/api/ill/test_ill_brw_reqs_permissions.py +0 -163
- tests/api/ill/test_ill_providers_permissions.py +0 -82
- tests/api/ils/__init__.py +0 -8
- tests/api/ils/documents/__init__.py +0 -8
- tests/api/ils/documents/test_document_crud.py +0 -57
- tests/api/ils/documents/test_document_permissions.py +0 -100
- tests/api/ils/documents/test_document_resolvers.py +0 -35
- tests/api/ils/eitems/__init__.py +0 -8
- tests/api/ils/eitems/test_eitems_crud.py +0 -42
- tests/api/ils/eitems/test_eitems_permissions.py +0 -85
- tests/api/ils/eitems/test_files.py +0 -162
- tests/api/ils/items/__init__.py +0 -8
- tests/api/ils/items/test_apis.py +0 -43
- tests/api/ils/items/test_items_crud.py +0 -99
- tests/api/ils/items/test_items_permissions.py +0 -107
- tests/api/ils/records_relations/__init__.py +0 -8
- tests/api/ils/records_relations/helpers.py +0 -115
- tests/api/ils/records_relations/test_records_relations_parentchild.py +0 -560
- tests/api/ils/records_relations/test_records_relations_sequence.py +0 -294
- tests/api/ils/records_relations/test_records_relations_siblings.py +0 -751
- tests/api/ils/series/__init__.py +0 -8
- tests/api/ils/series/test_series_permissions.py +0 -95
- tests/api/ils/test_anonymization.py +0 -181
- tests/api/ils/test_apis.py +0 -76
- tests/api/ils/test_closures.py +0 -353
- tests/api/ils/test_errors.py +0 -125
- tests/api/ils/test_facets.py +0 -88
- tests/api/ils/test_internal_locations.py +0 -96
- tests/api/ils/test_loaders.py +0 -51
- tests/api/ils/test_metadata_extensions.py +0 -206
- tests/api/ils/test_notifications.py +0 -173
- tests/api/ils/test_notifications_mails.py +0 -37
- tests/api/ils/test_notifications_permissions.py +0 -55
- tests/api/ils/test_patrons.py +0 -102
- tests/api/ils/test_record_delete.py +0 -42
- tests/api/ils/test_record_permissions.py +0 -132
- tests/api/ils/test_resolvers.py +0 -205
- tests/api/ils/test_stats.py +0 -142
- tests/api/ils/test_tasks.py +0 -209
- tests/api/ils/test_vocabularies.py +0 -35
- tests/conftest.py +0 -221
- tests/data/acq_orders.json +0 -110
- tests/data/acq_providers.json +0 -12
- tests/data/document_requests.json +0 -77
- tests/data/documents.json +0 -238
- tests/data/eitems.json +0 -71
- tests/data/ill_borrowing_requests.json +0 -77
- tests/data/ill_providers.json +0 -12
- tests/data/internal_locations.json +0 -22
- tests/data/items.json +0 -304
- tests/data/loans.json +0 -133
- tests/data/loans_most_loaned.json +0 -128
- tests/data/locations.json +0 -26
- tests/data/series.json +0 -33
- tests/helpers.py +0 -107
- tests/templates/notifications/title_body.html +0 -8
- tests/templates/notifications/title_body_html.html +0 -13
- tests/templates/notifications/title_body_html_ctx.html +0 -13
- tests/templates/notifications/title_only.html +0 -3
- tests/test_post_logout_redirect.py +0 -23
- tests/test_version.py +0 -17
- /tests/templates/notifications/blank.html → /invenio_app_ils/assets/semantic-ui/templates/.gitkeep +0 -0
- {invenio_app_ils-4.6.0.dist-info → invenio_app_ils-5.0.0.dist-info}/WHEEL +0 -0
- {invenio_app_ils-4.6.0.dist-info → invenio_app_ils-5.0.0.dist-info}/licenses/AUTHORS.rst +0 -0
- {invenio_app_ils-4.6.0.dist-info → invenio_app_ils-5.0.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
#
|
|
3
|
-
# Copyright (C) 2020 CERN.
|
|
4
|
-
#
|
|
5
|
-
# invenio-app-ils is free software; you can redistribute it and/or modify it
|
|
6
|
-
# under the terms of the MIT License; see LICENSE file for more details.
|
|
7
|
-
|
|
8
|
-
"""Test vocabularies endpoint."""
|
|
9
|
-
import json
|
|
10
|
-
|
|
11
|
-
from flask import url_for
|
|
12
|
-
|
|
13
|
-
from tests.helpers import user_login
|
|
14
|
-
|
|
15
|
-
LIST_ENDPOINT = "invenio_records_rest.vocid_list"
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
def test_vocabularies_permissions(client, testdata, json_headers, users):
|
|
19
|
-
"""Test vocabularies endpoints permissions."""
|
|
20
|
-
tests = [
|
|
21
|
-
("admin", [200]),
|
|
22
|
-
("librarian", [200]),
|
|
23
|
-
("patron1", [200]),
|
|
24
|
-
("anonymous", [200]),
|
|
25
|
-
]
|
|
26
|
-
|
|
27
|
-
def _test_list(expected_status):
|
|
28
|
-
"""Test get list."""
|
|
29
|
-
url = url_for(LIST_ENDPOINT)
|
|
30
|
-
res = client.get(url, headers=json_headers)
|
|
31
|
-
assert res.status_code in expected_status
|
|
32
|
-
|
|
33
|
-
for username, codes in tests:
|
|
34
|
-
user_login(client, username, users)
|
|
35
|
-
_test_list(codes)
|
tests/conftest.py
DELETED
|
@@ -1,221 +0,0 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
#
|
|
3
|
-
# Copyright (C) 2020 CERN.
|
|
4
|
-
#
|
|
5
|
-
# invenio-app-ils is free software; you can redistribute it and/or modify it
|
|
6
|
-
# under the terms of the MIT License; see LICENSE file for more details.
|
|
7
|
-
|
|
8
|
-
"""Common pytest fixtures and plugins."""
|
|
9
|
-
|
|
10
|
-
import os
|
|
11
|
-
|
|
12
|
-
import jinja2
|
|
13
|
-
import pytest
|
|
14
|
-
from flask import Blueprint
|
|
15
|
-
from flask_webpackext.manifest import (
|
|
16
|
-
JinjaManifest,
|
|
17
|
-
JinjaManifestEntry,
|
|
18
|
-
JinjaManifestLoader,
|
|
19
|
-
)
|
|
20
|
-
from invenio_access.models import ActionRoles
|
|
21
|
-
from invenio_access.permissions import superuser_access
|
|
22
|
-
from invenio_accounts.models import Role
|
|
23
|
-
from invenio_app.factory import create_app as _create_app
|
|
24
|
-
from invenio_userprofiles import UserProfile
|
|
25
|
-
|
|
26
|
-
from invenio_app_ils.permissions import backoffice_access_action
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
#
|
|
30
|
-
# Mock the webpack manifest to avoid having to compile the full assets.
|
|
31
|
-
#
|
|
32
|
-
class MockJinjaManifest(JinjaManifest):
|
|
33
|
-
"""Mock manifest."""
|
|
34
|
-
|
|
35
|
-
def __getitem__(self, key):
|
|
36
|
-
"""Get a manifest entry."""
|
|
37
|
-
return JinjaManifestEntry(key, [key])
|
|
38
|
-
|
|
39
|
-
def __getattr__(self, name):
|
|
40
|
-
"""Get a manifest entry."""
|
|
41
|
-
return JinjaManifestEntry(name, [name])
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
class MockManifestLoader(JinjaManifestLoader):
|
|
45
|
-
"""Manifest loader creating a mocked manifest."""
|
|
46
|
-
|
|
47
|
-
def load(self, filepath):
|
|
48
|
-
"""Load the manifest."""
|
|
49
|
-
return MockJinjaManifest()
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
@pytest.fixture(scope="module")
|
|
53
|
-
def app_config(app_config):
|
|
54
|
-
"""Create test app."""
|
|
55
|
-
app_config["WEBPACKEXT_MANIFEST_LOADER"] = MockManifestLoader
|
|
56
|
-
return app_config
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
@pytest.fixture()
|
|
60
|
-
def users(app, db):
|
|
61
|
-
"""Create admin, librarians and patrons."""
|
|
62
|
-
# with Postgresql, when dropping the User table, the sequence is not
|
|
63
|
-
# automatically reset to 1, causing issues with the tests demo data.
|
|
64
|
-
db.session.execute("ALTER SEQUENCE IF EXISTS accounts_user_id_seq RESTART")
|
|
65
|
-
db.session.commit()
|
|
66
|
-
|
|
67
|
-
with db.session.begin_nested():
|
|
68
|
-
datastore = app.extensions["security"].datastore
|
|
69
|
-
# create users
|
|
70
|
-
patron1 = datastore.create_user(
|
|
71
|
-
email="patron1@test.com", password="123456", active=True
|
|
72
|
-
)
|
|
73
|
-
|
|
74
|
-
patron2 = datastore.create_user(
|
|
75
|
-
email="patron2@test.com", password="123456", active=True
|
|
76
|
-
)
|
|
77
|
-
patron3 = datastore.create_user(
|
|
78
|
-
email="patron3@test.com", password="123456", active=True
|
|
79
|
-
)
|
|
80
|
-
librarian = datastore.create_user(
|
|
81
|
-
email="librarian@test.com", password="123456", active=True
|
|
82
|
-
)
|
|
83
|
-
librarian2 = datastore.create_user(
|
|
84
|
-
email="librarian2@test.com", password="123456", active=True
|
|
85
|
-
)
|
|
86
|
-
admin = datastore.create_user(
|
|
87
|
-
email="admin@test.com", password="123456", active=True
|
|
88
|
-
)
|
|
89
|
-
# Give role to admin
|
|
90
|
-
admin_role = Role(name="admin")
|
|
91
|
-
db.session.add(ActionRoles(action=superuser_access.value, role=admin_role))
|
|
92
|
-
datastore.add_role_to_user(admin, admin_role)
|
|
93
|
-
# Give role to librarian
|
|
94
|
-
librarian_role = Role(name="librarian")
|
|
95
|
-
db.session.add(
|
|
96
|
-
ActionRoles(action=backoffice_access_action.value, role=librarian_role)
|
|
97
|
-
)
|
|
98
|
-
datastore.add_role_to_user(librarian, librarian_role)
|
|
99
|
-
# Give role to librarian2
|
|
100
|
-
db.session.add(
|
|
101
|
-
ActionRoles(action=backoffice_access_action.value, role=librarian_role)
|
|
102
|
-
)
|
|
103
|
-
datastore.add_role_to_user(librarian2, librarian_role)
|
|
104
|
-
db.session.commit()
|
|
105
|
-
|
|
106
|
-
for patron, name in [
|
|
107
|
-
(admin, "Admin User"),
|
|
108
|
-
(librarian, "Librarian One"),
|
|
109
|
-
(librarian2, "Librarian Two"),
|
|
110
|
-
(patron1, "Patron One"),
|
|
111
|
-
(patron2, "Patron Two"),
|
|
112
|
-
(patron3, "Patron Three"),
|
|
113
|
-
]:
|
|
114
|
-
profile = UserProfile(
|
|
115
|
-
**dict(
|
|
116
|
-
user_id=patron.id,
|
|
117
|
-
_displayname="id_" + str(patron.id),
|
|
118
|
-
full_name=name,
|
|
119
|
-
)
|
|
120
|
-
)
|
|
121
|
-
db.session.add(profile)
|
|
122
|
-
db.session.commit()
|
|
123
|
-
|
|
124
|
-
return {
|
|
125
|
-
"admin": admin,
|
|
126
|
-
"librarian": librarian,
|
|
127
|
-
"librarian2": librarian2,
|
|
128
|
-
"patron1": patron1,
|
|
129
|
-
"patron2": patron2,
|
|
130
|
-
"patron3": patron3,
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
@pytest.fixture(scope="module")
|
|
135
|
-
def app_with_notifs(app):
|
|
136
|
-
"""App with notifications test templates."""
|
|
137
|
-
app.register_blueprint(
|
|
138
|
-
Blueprint("invenio_app_ils_tests", __name__, template_folder="templates")
|
|
139
|
-
)
|
|
140
|
-
# add extra test templates to the search app blueprint, to fake the
|
|
141
|
-
# existence of `invenio-theme` base templates.
|
|
142
|
-
test_templates_path = os.path.join(os.path.dirname(__file__), "templates")
|
|
143
|
-
enhanced_jinja_loader = jinja2.ChoiceLoader(
|
|
144
|
-
[
|
|
145
|
-
app.jinja_loader,
|
|
146
|
-
jinja2.FileSystemLoader(test_templates_path),
|
|
147
|
-
]
|
|
148
|
-
)
|
|
149
|
-
# override default app jinja_loader to add the new path
|
|
150
|
-
app.jinja_loader = enhanced_jinja_loader
|
|
151
|
-
yield app
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
@pytest.fixture(scope="module")
|
|
155
|
-
def create_app():
|
|
156
|
-
"""Create test app."""
|
|
157
|
-
return _create_app
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
@pytest.fixture(scope="module")
|
|
161
|
-
def base_app(create_app, app_config, request, default_handler):
|
|
162
|
-
"""Base application fixture (without database, search and cache).
|
|
163
|
-
|
|
164
|
-
Scope: module.
|
|
165
|
-
|
|
166
|
-
This fixture is responsible for creating the Invenio application. It
|
|
167
|
-
depends on an application factory fixture that must be defined by the user.
|
|
168
|
-
|
|
169
|
-
.. code-block:: python
|
|
170
|
-
|
|
171
|
-
# confest.py
|
|
172
|
-
import pytest
|
|
173
|
-
|
|
174
|
-
@pytest.fixture(scope='module)
|
|
175
|
-
def create_app():
|
|
176
|
-
from invenio_app.factory import create_api
|
|
177
|
-
return create_api
|
|
178
|
-
|
|
179
|
-
It is possible to overide the application factory for a specific test
|
|
180
|
-
module, either by defining a fixture like above example, or simply setting
|
|
181
|
-
the ``create_app`` property on the module:
|
|
182
|
-
|
|
183
|
-
.. code-block:: python
|
|
184
|
-
|
|
185
|
-
# test_something.py
|
|
186
|
-
|
|
187
|
-
from invenio_app.factory import create_api
|
|
188
|
-
create_app = create_api
|
|
189
|
-
|
|
190
|
-
def test_acase(base_app):
|
|
191
|
-
# ...
|
|
192
|
-
"""
|
|
193
|
-
# Use create_app from the module if defined, otherwise use default
|
|
194
|
-
# create_app fixture.
|
|
195
|
-
create_app = getattr(request.module, "create_app", create_app)
|
|
196
|
-
app_ = create_app(**app_config)
|
|
197
|
-
|
|
198
|
-
def delete_user_from_g(exception):
|
|
199
|
-
"""Delete user from `flask.g` when the request is tearing down.
|
|
200
|
-
|
|
201
|
-
Flask-login==0.6.2 changed the way the user is saved i.e uses `flask.g`.
|
|
202
|
-
Flask.g is pointing to the application context which is initialized per
|
|
203
|
-
request. That said, `pytest-flask` is pushing an application context on each
|
|
204
|
-
test initialization that causes problems as subsequent requests during a test
|
|
205
|
-
are detecting the active application request and not popping it when the
|
|
206
|
-
sub-request is tearing down. That causes the logged in user to remain cached
|
|
207
|
-
for the whole duration of the test. To fix this, we add an explicit teardown
|
|
208
|
-
handler that will pop out the logged in user in each request and it will force
|
|
209
|
-
the user to be loaded each time.
|
|
210
|
-
"""
|
|
211
|
-
from flask import g
|
|
212
|
-
|
|
213
|
-
if "_login_user" in g:
|
|
214
|
-
del g._login_user
|
|
215
|
-
|
|
216
|
-
app_.teardown_request(delete_user_from_g)
|
|
217
|
-
|
|
218
|
-
# See documentation for default_handler
|
|
219
|
-
if default_handler:
|
|
220
|
-
app_.logger.addHandler(default_handler)
|
|
221
|
-
yield app_
|
tests/data/acq_orders.json
DELETED
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
[
|
|
2
|
-
{
|
|
3
|
-
"order_date": "2020-01-27",
|
|
4
|
-
"order_lines": [
|
|
5
|
-
{
|
|
6
|
-
"copies_ordered": 5,
|
|
7
|
-
"document_pid": "docid-1",
|
|
8
|
-
"medium": "hardcover",
|
|
9
|
-
"recipient": "library"
|
|
10
|
-
}
|
|
11
|
-
],
|
|
12
|
-
"pid": "acqoid-1",
|
|
13
|
-
"status": "PENDING",
|
|
14
|
-
"provider_pid": "acq-provid-1"
|
|
15
|
-
},
|
|
16
|
-
{
|
|
17
|
-
"order_date": "2020-01-25",
|
|
18
|
-
"order_lines": [
|
|
19
|
-
{
|
|
20
|
-
"copies_ordered": 2,
|
|
21
|
-
"document_pid": "docid-2",
|
|
22
|
-
"medium": "hardcover",
|
|
23
|
-
"recipient": "library"
|
|
24
|
-
}
|
|
25
|
-
],
|
|
26
|
-
"pid": "acqoid-2",
|
|
27
|
-
"status": "ORDERED",
|
|
28
|
-
"provider_pid": "acq-provid-1"
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
"order_date": "2020-01-15",
|
|
32
|
-
"order_lines": [
|
|
33
|
-
{
|
|
34
|
-
"copies_ordered": 1,
|
|
35
|
-
"document_pid": "docid-3",
|
|
36
|
-
"medium": "hardcover",
|
|
37
|
-
"recipient": "library"
|
|
38
|
-
}
|
|
39
|
-
],
|
|
40
|
-
"pid": "acqoid-3",
|
|
41
|
-
"status": "ORDERED",
|
|
42
|
-
"provider_pid": "acq-provid-2"
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
"order_date": "2020-01-29",
|
|
46
|
-
"order_lines": [
|
|
47
|
-
{
|
|
48
|
-
"copies_ordered": 10,
|
|
49
|
-
"document_pid": "docid-4",
|
|
50
|
-
"medium": "hardcover",
|
|
51
|
-
"recipient": "library"
|
|
52
|
-
}
|
|
53
|
-
],
|
|
54
|
-
"pid": "acqoid-4",
|
|
55
|
-
"status": "RECEIVED",
|
|
56
|
-
"provider_pid": "acq-provid-2"
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
"order_date": "2020-01-28",
|
|
60
|
-
"order_lines": [
|
|
61
|
-
{
|
|
62
|
-
"copies_ordered": 7,
|
|
63
|
-
"document_pid": "docid-4",
|
|
64
|
-
"medium": "hardcover",
|
|
65
|
-
"patron_pid": "2",
|
|
66
|
-
"recipient": "library"
|
|
67
|
-
}
|
|
68
|
-
],
|
|
69
|
-
"pid": "acqoid-5",
|
|
70
|
-
"status": "CANCELLED",
|
|
71
|
-
"cancel_reason": "A reason",
|
|
72
|
-
"provider_pid": "acq-provid-2"
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
"order_date": "2020-01-29",
|
|
76
|
-
"order_lines": [
|
|
77
|
-
{
|
|
78
|
-
"copies_ordered": 1,
|
|
79
|
-
"document_pid": "docid-1",
|
|
80
|
-
"medium": "hardcover",
|
|
81
|
-
"recipient": "patron",
|
|
82
|
-
"patron_pid": "1"
|
|
83
|
-
}
|
|
84
|
-
],
|
|
85
|
-
"pid": "acqoid-6",
|
|
86
|
-
"status": "ORDERED",
|
|
87
|
-
"provider_pid": "acq-provid-2"
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
"order_date": "2020-01-29",
|
|
91
|
-
"order_lines": [
|
|
92
|
-
{
|
|
93
|
-
"copies_ordered": 1,
|
|
94
|
-
"document_pid": "docid-1",
|
|
95
|
-
"medium": "hardcover",
|
|
96
|
-
"recipient": "patron",
|
|
97
|
-
"patron_pid": "4"
|
|
98
|
-
},
|
|
99
|
-
{
|
|
100
|
-
"copies_ordered": 1,
|
|
101
|
-
"document_pid": "docid-1",
|
|
102
|
-
"medium": "hardcover",
|
|
103
|
-
"recipient": "patron"
|
|
104
|
-
}
|
|
105
|
-
],
|
|
106
|
-
"pid": "acqoid-7",
|
|
107
|
-
"status": "RECEIVED",
|
|
108
|
-
"provider_pid": "acq-provid-2"
|
|
109
|
-
}
|
|
110
|
-
]
|
tests/data/acq_providers.json
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
[
|
|
2
|
-
{
|
|
3
|
-
"pid": "dreq-1",
|
|
4
|
-
"state": "PENDING",
|
|
5
|
-
"patron_pid": "1",
|
|
6
|
-
"medium": "PAPER",
|
|
7
|
-
"title": "Test title 1",
|
|
8
|
-
"request_type": "LOAN",
|
|
9
|
-
"document_pid": "docid-1",
|
|
10
|
-
"physical_item_provider": {
|
|
11
|
-
"pid": "acqoid-1",
|
|
12
|
-
"pid_type": "acqoid"
|
|
13
|
-
}
|
|
14
|
-
},
|
|
15
|
-
{
|
|
16
|
-
"pid": "dreq-2",
|
|
17
|
-
"state": "DECLINED",
|
|
18
|
-
"patron_pid": "2",
|
|
19
|
-
"request_type": "BUY",
|
|
20
|
-
"medium": "PAPER",
|
|
21
|
-
"title": "Test title 2",
|
|
22
|
-
"decline_reason": "Test."
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
"pid": "dreq-3",
|
|
26
|
-
"state": "ACCEPTED",
|
|
27
|
-
"patron_pid": "3",
|
|
28
|
-
"request_type": "LOAN",
|
|
29
|
-
"medium": "PAPER",
|
|
30
|
-
"document_pid": "docid-1",
|
|
31
|
-
"title": "Test title 3",
|
|
32
|
-
"physical_item_provider": {
|
|
33
|
-
"pid": "acqoid-1",
|
|
34
|
-
"pid_type": "acqoid"
|
|
35
|
-
}
|
|
36
|
-
},
|
|
37
|
-
|
|
38
|
-
{
|
|
39
|
-
"pid": "dreq-4",
|
|
40
|
-
"state": "ACCEPTED",
|
|
41
|
-
"patron_pid": "4",
|
|
42
|
-
"request_type": "BUY",
|
|
43
|
-
"medium": "PAPER",
|
|
44
|
-
"document_pid": "docid-2",
|
|
45
|
-
"title": "Test title 4",
|
|
46
|
-
"physical_item_provider": {
|
|
47
|
-
"pid": "acqoid-1",
|
|
48
|
-
"pid_type": "acqoid"
|
|
49
|
-
}
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
"pid": "dreq-5",
|
|
53
|
-
"state": "PENDING",
|
|
54
|
-
"patron_pid": "1",
|
|
55
|
-
"medium": "PAPER",
|
|
56
|
-
"title": "Test title 1",
|
|
57
|
-
"request_type": "LOAN",
|
|
58
|
-
"document_pid": "docid-1",
|
|
59
|
-
"physical_item_provider": {
|
|
60
|
-
"pid": "acqoid-1",
|
|
61
|
-
"pid_type": "acqoid"
|
|
62
|
-
}
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
"pid": "dreq-6",
|
|
66
|
-
"state": "PENDING",
|
|
67
|
-
"patron_pid": "1",
|
|
68
|
-
"medium": "PAPER",
|
|
69
|
-
"title": "Test title 1",
|
|
70
|
-
"request_type": "LOAN",
|
|
71
|
-
"document_pid": "docid-1",
|
|
72
|
-
"physical_item_provider": {
|
|
73
|
-
"pid": "acqoid-1",
|
|
74
|
-
"pid_type": "acqoid"
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
]
|
tests/data/documents.json
DELETED
|
@@ -1,238 +0,0 @@
|
|
|
1
|
-
[
|
|
2
|
-
{
|
|
3
|
-
"$schema": "https://127.0.0.1:5000/schemas/documents/document-v2.0.0.json",
|
|
4
|
-
"pid": "docid-1",
|
|
5
|
-
"created_by": {"type": "script", "value": "demo"},
|
|
6
|
-
"title": "The Gulf: The Making of An American Sea",
|
|
7
|
-
"authors": [{ "full_name": "Jack E. Davis" }],
|
|
8
|
-
"abstract": "This is an abstract",
|
|
9
|
-
"languages": ["ENG"],
|
|
10
|
-
"edition": "1",
|
|
11
|
-
"keywords": [
|
|
12
|
-
{
|
|
13
|
-
"source": "X",
|
|
14
|
-
"value": "Patata"
|
|
15
|
-
}],
|
|
16
|
-
"document_type": "BOOK",
|
|
17
|
-
"publication_year": "1950"
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
"$schema": "https://127.0.0.1:5000/schemas/documents/document-v2.0.0.json",
|
|
21
|
-
"pid": "docid-2",
|
|
22
|
-
"created_by": {"type": "script", "value": "demo"},
|
|
23
|
-
"title": "Prairie Fires: The American Dreams of Laura Ingalls Wilder",
|
|
24
|
-
"authors": [{ "full_name": "Caroline Fraser" }],
|
|
25
|
-
"abstract": "This is an abstract",
|
|
26
|
-
"languages": ["ITA"],
|
|
27
|
-
"keywords": [
|
|
28
|
-
{
|
|
29
|
-
"source": "X",
|
|
30
|
-
"value": "Patata"
|
|
31
|
-
}],
|
|
32
|
-
"document_type": "BOOK",
|
|
33
|
-
"publication_year": "1950"
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
"$schema": "https://127.0.0.1:5000/schemas/documents/document-v2.0.0.json",
|
|
37
|
-
"pid": "docid-3",
|
|
38
|
-
"created_by": {"type": "script", "value": "demo"},
|
|
39
|
-
"title": "Half-light: Collected Poems 1965-2016",
|
|
40
|
-
"authors": [{ "full_name": "Frank Bidart" }],
|
|
41
|
-
"abstract": "This is an abstract",
|
|
42
|
-
"edition": "3",
|
|
43
|
-
"keywords": [
|
|
44
|
-
{
|
|
45
|
-
"source": "X",
|
|
46
|
-
"value": "Patata"
|
|
47
|
-
}],
|
|
48
|
-
"document_type": "BOOK",
|
|
49
|
-
"publication_year": "1950"
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
"$schema": "https://127.0.0.1:5000/schemas/documents/document-v2.0.0.json",
|
|
53
|
-
"pid": "docid-4",
|
|
54
|
-
"created_by": {"type": "script", "value": "demo"},
|
|
55
|
-
"title": "Locking Up Our Own: Crime and Punishment in Black America",
|
|
56
|
-
"authors": [{ "full_name": "James Forman Jr." }],
|
|
57
|
-
"abstract": "This is an abstract",
|
|
58
|
-
"keywords": [
|
|
59
|
-
{
|
|
60
|
-
"source": "X",
|
|
61
|
-
"value": "Patata"
|
|
62
|
-
}],
|
|
63
|
-
"document_type": "BOOK",
|
|
64
|
-
"publication_year": "1950"
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
"$schema": "https://127.0.0.1:5000/schemas/documents/document-v2.0.0.json",
|
|
68
|
-
"pid": "docid-5",
|
|
69
|
-
"created_by": {"type": "script", "value": "demo"},
|
|
70
|
-
"title": "Less: A Novel",
|
|
71
|
-
"authors": [{ "full_name": "Andrew Sean Greer" }],
|
|
72
|
-
"abstract": "This is an abstract",
|
|
73
|
-
"document_type": "STANDARD",
|
|
74
|
-
"publication_year": "1950"
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
"$schema": "https://127.0.0.1:5000/schemas/documents/document-v2.0.0.json",
|
|
78
|
-
"pid": "docid-6",
|
|
79
|
-
"created_by": {"type": "script", "value": "demo"},
|
|
80
|
-
"title": "Less: A Novel",
|
|
81
|
-
"languages": ["POL"],
|
|
82
|
-
"authors": [{ "full_name": "Andrew Sean Greer" }],
|
|
83
|
-
"abstract": "This is an abstract",
|
|
84
|
-
"document_type": "BOOK",
|
|
85
|
-
"publication_year": "1950"
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
"$schema": "https://127.0.0.1:5000/schemas/documents/document-v2.0.0.json",
|
|
89
|
-
"pid": "docid-7",
|
|
90
|
-
"created_by": {"type": "script", "value": "demo"},
|
|
91
|
-
"title": "Less: A Novel",
|
|
92
|
-
"authors": [{ "full_name": "Andrew Sean Greer" }],
|
|
93
|
-
"abstract": "This is an abstract",
|
|
94
|
-
"document_type": "SERIAL_ISSUE",
|
|
95
|
-
"publication_year": "1950"
|
|
96
|
-
},
|
|
97
|
-
{
|
|
98
|
-
"$schema": "https://127.0.0.1:5000/schemas/documents/document-v2.0.0.json",
|
|
99
|
-
"pid": "docid-8",
|
|
100
|
-
"created_by": {"type": "script", "value": "demo"},
|
|
101
|
-
"title": "Less: A Novel",
|
|
102
|
-
"authors": [{ "full_name": "Andrew Sean Greer" }],
|
|
103
|
-
"abstract": "This is an abstract",
|
|
104
|
-
"edition": "2",
|
|
105
|
-
"document_type": "THESIS",
|
|
106
|
-
"publication_year": "1950"
|
|
107
|
-
},
|
|
108
|
-
{
|
|
109
|
-
"$schema": "https://127.0.0.1:5000/schemas/documents/document-v2.0.0.json",
|
|
110
|
-
"pid": "docid-9",
|
|
111
|
-
"created_by": {"type": "script", "value": "demo"},
|
|
112
|
-
"title": "The early years, 1879-1902",
|
|
113
|
-
"authors": [
|
|
114
|
-
{ "full_name": "Einstein, Albert" },
|
|
115
|
-
{ "full_name": "Stachel, John J et al." }
|
|
116
|
-
],
|
|
117
|
-
"abstract": "This is a document volume v.1 part of a MULTIPART MONOGRAPH",
|
|
118
|
-
"document_type": "BOOK",
|
|
119
|
-
"publication_year": "1950"
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
"$schema": "https://127.0.0.1:5000/schemas/documents/document-v2.0.0.json",
|
|
123
|
-
"pid": "docid-10",
|
|
124
|
-
"created_by": {"type": "script", "value": "demo"},
|
|
125
|
-
"title": "The Swiss years : writings, 1900-1909",
|
|
126
|
-
"authors": [
|
|
127
|
-
{ "full_name": "Einstein, Albert" },
|
|
128
|
-
{ "full_name": "Stachel, John J et al." }
|
|
129
|
-
],
|
|
130
|
-
"abstract": "This is a document volume v.2 part of a MULTIPART MONOGRAPH",
|
|
131
|
-
"document_type": "BOOK",
|
|
132
|
-
"publication_year": "1950"
|
|
133
|
-
},
|
|
134
|
-
{
|
|
135
|
-
"$schema": "https://127.0.0.1:5000/schemas/documents/document-v2.0.0.json",
|
|
136
|
-
"pid": "docid-11",
|
|
137
|
-
"created_by": {"type": "script", "value": "demo"},
|
|
138
|
-
"title": "The Swiss years : writings, 1909-1911",
|
|
139
|
-
"authors": [
|
|
140
|
-
{ "full_name": "Einstein, Albert" },
|
|
141
|
-
{ "full_name": "Stachel, John J et al." }
|
|
142
|
-
],
|
|
143
|
-
"abstract": "This is a document volume v.3 part of a MULTIPART MONOGRAPH",
|
|
144
|
-
"document_type": "BOOK",
|
|
145
|
-
"publication_year": "1950"
|
|
146
|
-
},
|
|
147
|
-
{
|
|
148
|
-
"$schema": "https://127.0.0.1:5000/schemas/documents/document-v2.0.0.json",
|
|
149
|
-
"pid": "docid-12",
|
|
150
|
-
"created_by": {"type": "script", "value": "demo"},
|
|
151
|
-
"title": "Camera, equipment, and basic photographic techniques",
|
|
152
|
-
"authors": [
|
|
153
|
-
{ "full_name": "Einstein, Albert" },
|
|
154
|
-
{ "full_name": "Stachel, John J et al." }
|
|
155
|
-
],
|
|
156
|
-
"abstract": "This is a document volume v.1 part of a MULTIPART MONOGRAPH",
|
|
157
|
-
"document_type": "THESIS",
|
|
158
|
-
"publication_year": "1950"
|
|
159
|
-
},
|
|
160
|
-
{
|
|
161
|
-
"$schema": "https://127.0.0.1:5000/schemas/documents/document-v2.0.0.json",
|
|
162
|
-
"pid": "docid-13",
|
|
163
|
-
"created_by": {"type": "script", "value": "demo"},
|
|
164
|
-
"title": "Visual concepts and composition",
|
|
165
|
-
"authors": [
|
|
166
|
-
{ "full_name": "Banek, Cora" },
|
|
167
|
-
{ "full_name": "Banek, Georg" }
|
|
168
|
-
],
|
|
169
|
-
"abstract": "This is a document volume v.2 part of a MULTIPART MONOGRAPH",
|
|
170
|
-
"document_type": "BOOK",
|
|
171
|
-
"publication_year": "1950"
|
|
172
|
-
},
|
|
173
|
-
{
|
|
174
|
-
"$schema": "https://127.0.0.1:5000/schemas/documents/document-v2.0.0.json",
|
|
175
|
-
"pid": "docid-14",
|
|
176
|
-
"created_by": {"type": "script", "value": "demo"},
|
|
177
|
-
"title": "Flavor physics and the TeV scale",
|
|
178
|
-
"authors": [{ "full_name": "Hou, George W S" }],
|
|
179
|
-
"abstract": "This is a document part of a SERIAL",
|
|
180
|
-
"document_type": "BOOK",
|
|
181
|
-
"publication_year": "1950"
|
|
182
|
-
},
|
|
183
|
-
{
|
|
184
|
-
"$schema": "https://127.0.0.1:5000/schemas/documents/document-v2.0.0.json",
|
|
185
|
-
"pid": "docid-15",
|
|
186
|
-
"created_by": {"type": "script", "value": "demo"},
|
|
187
|
-
"title": "Symmetry and symmetry-breaking in semiconductors : fine structure of exciton states",
|
|
188
|
-
"authors": [
|
|
189
|
-
{ "full_name": "Hönerlage, Bernd" },
|
|
190
|
-
{ "full_name": "Pelant, Ivan" }
|
|
191
|
-
],
|
|
192
|
-
"abstract": "This is a document part of a SERIAL",
|
|
193
|
-
"document_type": "BOOK",
|
|
194
|
-
"publication_year": "1950"
|
|
195
|
-
},
|
|
196
|
-
{
|
|
197
|
-
"$schema": "https://127.0.0.1:5000/schemas/documents/document-v2.0.0.json",
|
|
198
|
-
"pid": "docid-16",
|
|
199
|
-
"created_by": {"type": "script", "value": "demo"},
|
|
200
|
-
"title": "Macroscopic quantum electrodynamics and ground-state Casimir, Casimir–Polder and van der Waals forces",
|
|
201
|
-
"authors": [{ "full_name": "Buhmann, Stefan Yoshi" }],
|
|
202
|
-
"abstract": "This is a document volume v.1 part of a MULTIPART MONOGRAPH part of a SERIAL",
|
|
203
|
-
"document_type": "BOOK",
|
|
204
|
-
"publication_year": "1950"
|
|
205
|
-
},
|
|
206
|
-
{
|
|
207
|
-
"$schema": "https://127.0.0.1:5000/schemas/documents/document-v2.0.0.json",
|
|
208
|
-
"pid": "docid-17",
|
|
209
|
-
"created_by": {"type": "script", "value": "demo"},
|
|
210
|
-
"title": "Many-body effects, excited atoms, finite temperature and quantum friction",
|
|
211
|
-
"authors": [{ "full_name": "Buhmann, Stefan Yoshi" }],
|
|
212
|
-
"abstract": "This is a document volume v.1 part of a MULTIPART MONOGRAPH part of a SERIAL",
|
|
213
|
-
"document_type": "BOOK",
|
|
214
|
-
"publication_year": "1950"
|
|
215
|
-
},
|
|
216
|
-
{
|
|
217
|
-
"$schema": "https://127.0.0.1:5000/schemas/documents/document-v2.0.0.json",
|
|
218
|
-
"pid": "docid-closed-access",
|
|
219
|
-
"created_by": {"type": "script", "value": "demo"},
|
|
220
|
-
"title": "Closed access document",
|
|
221
|
-
"authors": [{ "full_name": "Buhmann, Stefan Yoshi" }],
|
|
222
|
-
"abstract": "Just an abstract",
|
|
223
|
-
"document_type": "BOOK",
|
|
224
|
-
"restricted": true,
|
|
225
|
-
"publication_year": "1950"
|
|
226
|
-
},
|
|
227
|
-
{
|
|
228
|
-
"$schema": "https://127.0.0.1:5000/schemas/documents/document-v2.0.0.json",
|
|
229
|
-
"pid": "docid-open-access",
|
|
230
|
-
"created_by": {"type": "script", "value": "demo"},
|
|
231
|
-
"title": "Open access document",
|
|
232
|
-
"authors": [{ "full_name": "Buhmann, Stefan Yoshi" }],
|
|
233
|
-
"abstract": "Just an abstract",
|
|
234
|
-
"document_type": "BOOK",
|
|
235
|
-
"restricted": false,
|
|
236
|
-
"publication_year": "1950"
|
|
237
|
-
}
|
|
238
|
-
]
|