Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -66,3 +66,6 @@ target/
**/.history

.python-version

# Virtual env
.venv/
11 changes: 10 additions & 1 deletion cds_ils/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
)
from invenio_app_ils.config import CELERY_BEAT_SCHEDULE as ILS_CELERY_BEAT_SCHEDULE
from invenio_app_ils.config import RECORDS_REST_ENDPOINTS, RECORDS_REST_FACETS
from invenio_app_ils.documents.api import DOCUMENT_PID_TYPE, Document
from invenio_app_ils.documents.api import DOCUMENT_PID_TYPE
from invenio_app_ils.eitems.api import EITEM_PID_TYPE
from invenio_app_ils.ill.api import (
can_item_circulate,
Expand Down Expand Up @@ -61,6 +61,8 @@
from invenio_records_rest.utils import deny_all
from marshmallow.fields import Bool, List

from cds_ils.documents.api import Document

from .circulation.utils import circulation_cds_extension_max_count
from .document_requests.notifications.filters import (
document_requests_notifications_filter,
Expand Down Expand Up @@ -402,6 +404,13 @@ def query_params_modifier(extra_params):
RECORDS_REST_ENDPOINTS[DOCUMENT_PID_TYPE]["record_serializers"] = {
"application/json": "cds_ils.literature.serializers:json_v1_response"
}
RECORDS_REST_ENDPOINTS[DOCUMENT_PID_TYPE]["record_loaders"] = {
"application/json": "cds_ils.documents.loaders:document_loader"
}
RECORDS_REST_ENDPOINTS[DOCUMENT_PID_TYPE]["record_class"] = Document
RECORDS_REST_ENDPOINTS[DOCUMENT_PID_TYPE][
"item_route"
] = '/documents/<pid(docid, record_class="cds_ils.documents.api:Document"):pid_value>'
RECORDS_REST_ENDPOINTS[DOCUMENT_PID_TYPE]["search_serializers"] = {
"application/json": "cds_ils.literature.serializers:json_v1_search",
"text/csv": "cds_ils.literature.serializers:csv_v1_search",
Expand Down
12 changes: 12 additions & 0 deletions cds_ils/documents/api.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# SPDX-FileCopyrightText: 2026 CERN.
# SPDX-License-Identifier: MIT

"""CDS-ILS Document APIs."""

from invenio_app_ils.documents.api import Document as ILSDocument


class Document(ILSDocument):
"""CDS-ILS Document record class."""

DOCUMENT_TYPES = ILSDocument.DOCUMENT_TYPES + ["THESIS"]
10 changes: 10 additions & 0 deletions cds_ils/documents/loaders/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# SPDX-FileCopyrightText: 2026 CERN.
# SPDX-License-Identifier: MIT

"""CDS-ILS document loaders."""

from invenio_app_ils.records.loaders import ils_marshmallow_loader

from .jsonschemas.document import DocumentSchemaV1

document_loader = ils_marshmallow_loader(DocumentSchemaV1)
4 changes: 4 additions & 0 deletions cds_ils/documents/loaders/jsonschemas/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# SPDX-FileCopyrightText: 2026 CERN.
# SPDX-License-Identifier: MIT

"""CDS-ILS Document JSON loader."""
19 changes: 19 additions & 0 deletions cds_ils/documents/loaders/jsonschemas/document.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# SPDX-FileCopyrightText: 2026 CERN.
# SPDX-License-Identifier: MIT

"""Document schema for overwritten marshmallow loader with new document type."""

from invenio_app_ils.documents.loaders.jsonschemas.document import (
DocumentSchemaV1 as ILSDocumentSchemaV1,
)
from marshmallow import fields, validate

from cds_ils.documents.api import Document


class DocumentSchemaV1(ILSDocumentSchemaV1):
"""CDS-ILS Document schema."""

document_type = fields.Str(
required=True, validate=validate.OneOf(Document.DOCUMENT_TYPES)
)
1 change: 0 additions & 1 deletion docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
# - Message queue: RabbitMQ (exposed ports: 5672, 15672)
# - Elasticsearch (exposed ports: 9200, 9300)
#
version: '2.3'
services:
cache:
extends:
Expand Down
9 changes: 9 additions & 0 deletions ui/src/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,15 @@ export const config = {
authors: {
maxEditable: 30,
},
types: [
{ value: "BOOK", text: "Book", label: "Book", order: 1 },
{ value: "PROCEEDINGS", text: "Proceedings", label: "Proceedings", order: 2 },
{ value: "STANDARD", text: "Standard", label: "Standard", order: 3 },
{ value: "SERIAL_ISSUE", text: "Serial issue", label: "Serial issue", order: 4 },
{ value: "ARTICLE", text: "Article", label: "Article", order: 5 },
{ value: "MULTIMEDIA", text: "Multimedia", label: "Multimedia", order: 6 },
{ value: "THESIS", text: "Thesis", label: "Thesis", order: 7 },
],
},
ILL_BORROWING_REQUESTS: {
defaultType: "PHYSICAL_COPY",
Expand Down
Loading