fix-curator-write-with-forjego-token #235
3 changed files with 20 additions and 15 deletions
|
|
@ -1,3 +1,10 @@
|
||||||
|
# 6.2.1 (2026-06-26)
|
||||||
|
|
||||||
|
# Bugfixes
|
||||||
|
|
||||||
|
- Fix a bug in curator-writing when non-config tokens are used.
|
||||||
|
|
||||||
|
|
||||||
# 6.2.0 (2026-06-24)
|
# 6.2.0 (2026-06-24)
|
||||||
|
|
||||||
# New features
|
# New features
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
__version__ = '6.2.0'
|
__version__ = '6.2.1'
|
||||||
|
|
|
||||||
|
|
@ -21,9 +21,12 @@ from dump_things_service import (
|
||||||
HTTP_404_NOT_FOUND,
|
HTTP_404_NOT_FOUND,
|
||||||
HTTP_422_UNPROCESSABLE_CONTENT, abstract_config,
|
HTTP_422_UNPROCESSABLE_CONTENT, abstract_config,
|
||||||
)
|
)
|
||||||
from dump_things_service.abstract_config import check_collection, read_config, \
|
from dump_things_service.abstract_config import (
|
||||||
get_config, get_token_config_for_representation_and_collection
|
check_collection,
|
||||||
|
read_config,
|
||||||
|
)
|
||||||
from dump_things_service.api_key import api_key_header_scheme
|
from dump_things_service.api_key import api_key_header_scheme
|
||||||
|
from dump_things_service.auth import AuthenticationInfo
|
||||||
from dump_things_service.backends.schema_type_layer import _SchemaTypeLayer
|
from dump_things_service.backends.schema_type_layer import _SchemaTypeLayer
|
||||||
from dump_things_service.exceptions import CurieResolutionError
|
from dump_things_service.exceptions import CurieResolutionError
|
||||||
from dump_things_service.instance_state import get_instance_state
|
from dump_things_service.instance_state import get_instance_state
|
||||||
|
|
@ -212,7 +215,7 @@ async def _read_curated_records(
|
||||||
upper_bound: int | None = 1000,
|
upper_bound: int | None = 1000,
|
||||||
) -> LazyList | dict | None:
|
) -> LazyList | dict | None:
|
||||||
|
|
||||||
model_store, backend = _get_store_and_backend(collection, api_key)
|
model_store, backend, _ = _get_store_and_backend(collection, api_key)
|
||||||
|
|
||||||
if pid:
|
if pid:
|
||||||
record_info = backend.get_record_by_iri(model_store.pid_to_iri(pid))
|
record_info = backend.get_record_by_iri(model_store.pid_to_iri(pid))
|
||||||
|
|
@ -246,7 +249,7 @@ async def _delete_curated_record(
|
||||||
api_key: str | None = None,
|
api_key: str | None = None,
|
||||||
) -> bool:
|
) -> bool:
|
||||||
with wrap_http_exception(Exception):
|
with wrap_http_exception(Exception):
|
||||||
model_store, backend = _get_store_and_backend(collection, api_key)
|
model_store, backend, _ = _get_store_and_backend(collection, api_key)
|
||||||
result = backend.remove_record(model_store.pid_to_iri(pid))
|
result = backend.remove_record(model_store.pid_to_iri(pid))
|
||||||
if not result:
|
if not result:
|
||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
|
|
@ -260,7 +263,7 @@ async def _delete_curated_record(
|
||||||
def _get_store_and_backend(
|
def _get_store_and_backend(
|
||||||
collection: str,
|
collection: str,
|
||||||
plain_token: str | None,
|
plain_token: str | None,
|
||||||
) -> tuple[_ModelStore, StorageBackend]:
|
) -> tuple[_ModelStore, StorageBackend, AuthenticationInfo]:
|
||||||
|
|
||||||
# A token is required
|
# A token is required
|
||||||
if plain_token is None:
|
if plain_token is None:
|
||||||
|
|
@ -288,8 +291,8 @@ def _get_store_and_backend(
|
||||||
model_store = instance_state.curated_stores[collection]
|
model_store = instance_state.curated_stores[collection]
|
||||||
backend = model_store.backend
|
backend = model_store.backend
|
||||||
if isinstance(backend, _SchemaTypeLayer):
|
if isinstance(backend, _SchemaTypeLayer):
|
||||||
return model_store, backend.backend
|
return model_store, backend.backend, auth_info
|
||||||
return model_store, backend
|
return model_store, backend, auth_info
|
||||||
|
|
||||||
|
|
||||||
def store_curated_record(
|
def store_curated_record(
|
||||||
|
|
@ -304,7 +307,7 @@ def store_curated_record(
|
||||||
instance_state.validators[collection].validate(data)
|
instance_state.validators[collection].validate(data)
|
||||||
|
|
||||||
pid = data.pid
|
pid = data.pid
|
||||||
model_store, backend = _get_store_and_backend(collection, api_key)
|
model_store, backend, auth_info = _get_store_and_backend(collection, api_key)
|
||||||
|
|
||||||
json_object = cleaned_json(
|
json_object = cleaned_json(
|
||||||
data.model_dump(exclude_none=True, mode='json'),
|
data.model_dump(exclude_none=True, mode='json'),
|
||||||
|
|
@ -318,14 +321,9 @@ def store_curated_record(
|
||||||
json_object,
|
json_object,
|
||||||
)
|
)
|
||||||
|
|
||||||
_, token_config, _ = get_token_config_for_representation_and_collection(
|
|
||||||
abstract_config=get_config(),
|
|
||||||
token_representation=api_key,
|
|
||||||
collection_name=collection,
|
|
||||||
)
|
|
||||||
for audit_backend in instance_state.audit_backends[collection]:
|
for audit_backend in instance_state.audit_backends[collection]:
|
||||||
audit_backend.add_record(
|
audit_backend.add_record(
|
||||||
record=json_object,
|
record=json_object,
|
||||||
committer_id=token_config.user_id,
|
committer_id=auth_info.user_id,
|
||||||
author_id=author_id,
|
author_id=author_id,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue