Skip to content

Adoptuj API paczek PBN 0.2 (is_deleted, is_valid_object_id, get_or_download)#603

Open
mpasternak wants to merge 1 commit into
feat/pbn-pypi-rewirefrom
feat/pbn-adopt-api
Open

Adoptuj API paczek PBN 0.2 (is_deleted, is_valid_object_id, get_or_download)#603
mpasternak wants to merge 1 commit into
feat/pbn-pypi-rewirefrom
feat/pbn-adopt-api

Conversation

@mpasternak

Copy link
Copy Markdown
Member

Co robi ten PR

Trzy niskoryzykowe adopcje API paczek pbn-client / django-pbn-client 0.2 w monolicie BPP, usuwające zduplikowany / magic-stringowy kod przy identycznym zachowaniu:

  1. is_deleted (6 modeli)src/pbn_api/models/{journal,institution,publisher,publication,scientist,conference}.py: if self.status == "DELETED":if self.is_deleted: (property z BasePBNMongoDBModel). Marker [❌ USUNIĘTY] w __str__ bez zmian.
  2. check_mongoIdis_valid_object_idsrc/pbn_api/validators.py deleguje do pbn_client.is_valid_object_id (ta sama semantyka: 24-znakowy hex objectId). Publiczna nazwa check_mongoId zachowana, import site w autocomplete nietknięty.
  3. ensure_*get_or_downloadsrc/pbn_integrator/utils/mongodb_ops.py: trzy funkcje ensure_{publication,person,institution}_exists delegują do django_pbn_client.get_or_download z zachowaniem wrappera zapisz_mongodb (fetch HTTP przed transakcją persystencji).

TDD / weryfikacja

  • Nowy test src/pbn_api/tests/test_models_deleted_marker.py blokuje zachowanie markera USUNIĘTY w __str__ wszystkich 6 modeli (zielony przed i po refaktorze).
  • DJANGO_BPP_SKIP_DOTENV=1 uv run python src/manage.py check — no issues.
  • pytest src/pbn_api/tests/test_validators.py src/pbn_api/tests/test_models_deleted_marker.py src/pbn_integrator/tests/214 passed (w tym test_mongodb_ops.py z asercją kształtu wywołania zapisz_mongodb, bez zmian).
  • ruff check / ruff format --check na zmienionych plikach — czysto.
  • Newsfragment: src/bpp/newsfragments/pbn-adopt-api-02.feature.rst.

🤖 Generated with Claude Code

…wnload

- 6 modeli PBN (journal, institution, publisher, publication, scientist,
  conference) używa property `is_deleted` z BasePBNMongoDBModel zamiast
  magic-stringa `status == "DELETED"` (marker „[❌ USUNIĘTY]" bez zmian)
- `check_mongoId` deleguje do `pbn_client.is_valid_object_id`
  (ta sama semantyka: 24-znakowy hex objectId)
- `ensure_publication/person/institution_exists` delegują do
  `django_pbn_client.get_or_download` z zachowaniem wrappera
  `zapisz_mongodb` (fetch przed transakcją persystencji)
- test blokujący zachowanie markera USUNIĘTY w __str__ 6 modeli

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant