Skip to content

Bump django from 2.1.10 to 2.1.11#1

Closed
dependabot[bot] wants to merge 1 commit into
devfrom
dependabot/pip/django-2.1.11
Closed

Bump django from 2.1.10 to 2.1.11#1
dependabot[bot] wants to merge 1 commit into
devfrom
dependabot/pip/django-2.1.11

Conversation

@dependabot
Copy link
Copy Markdown
Contributor

@dependabot dependabot Bot commented on behalf of github Oct 21, 2019

Bumps django from 2.1.10 to 2.1.11.

Commits

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot ignore this [patch|minor|major] version will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
  • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
  • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
  • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

You can disable automated security fix PRs for this repo from the Security Alerts page.

Bumps [django](https://github.com/django/django) from 2.1.10 to 2.1.11.
- [Release notes](https://github.com/django/django/releases)
- [Commits](django/django@2.1.10...2.1.11)

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added the dependencies Pull requests that update a dependency file label Oct 21, 2019
@dependabot @github
Copy link
Copy Markdown
Contributor Author

dependabot Bot commented on behalf of github Nov 7, 2019

Superseded by #3.

@dependabot dependabot Bot closed this Nov 7, 2019
@dependabot dependabot Bot deleted the dependabot/pip/django-2.1.11 branch November 7, 2019 00:07
mpasternak added a commit that referenced this pull request Dec 29, 2025
============================

Usprawnienie
------------

- Ulepszono obsługę błędów w funkcji wyslij_informacje_o_platnosciach: dodano sprawdzanie wartości zwracanej przez upload_publication_fee (success=True), re-raise dla nieobsłużonych HttpException oraz NeedsPBNAuthorisationException. Komunikaty błędów wyświetlają się teraz czytelnie nad paskiem postępu (tqdm.write). (pbn_integrator_sync)
- Dodano dwa nowe raporty XLSX w module optymalizacji ewaluacji: "Raport SEDN #1" (szczegółowy per-autor) oraz "Raport SEDN #2" (zagregowany per-publikacja). Raporty zawierają dane o publikacjach z lat 2022-2025 wraz z informacją o wskazaniu przez algorytm optymalizacji. Przycisk "Pobierz wszystkie XLS (ZIP)" przeniesiono do nowej, trzeciej linii przycisków. (sedn-reports)
mpasternak added a commit that referenced this pull request Apr 27, 2026
Praktyka #1 z lirantal/pypi-security-best-practices, rev 2 po review.

Workspace install (bpp-iplweb editable) nie byl do niczego potrzebny:
- bpp-manage.py script: dead code (Makefile uzywa `python src/manage.py`)
- pytest11 entry point: jedyne load-bearing uzycie - przeniesione do
  pytest.ini addopts jako `-p testcontainers_bpp.plugin`
- import bpp_iplweb: 0 wystapien w src/

Zmiany:
- pyproject.toml: usunieto [project.scripts] + [project.entry-points]
- pytest.ini: dodano `-p testcontainers_bpp.plugin` na poczatku addopts
  (laduje plugin PRZED conftest.py - krytyczne, plugin musi wstrzyknac
  DJANGO_BPP_DB_PORT itp do os.environ przed Django settings load)
- Makefile: --no-install-project w prepare-developer-machine-{macos,linux}
  i uv-sync target
- .github/workflows/tests.yml + refresh-baseline.yml: --no-install-project
- Dockerfile: juz mial --no-install-project (no change)

Globalne `no-build = true` w [tool.uv] zostalo SPRAWDZONE i okazalo sie
nieosiagalne - 11 pre-existing third-party deps jest sdist-only:
crispy-forms-foundation, cssmin, django-autocomplete-light, django-columns,
django-static-sitemaps, django-tabular-permissions, langdetect, pylatexenc,
pyoai, python-ldap, wsgiutils.

uv nie ma czystego "wheel-only with exceptions" trybu (tylko all-or-none
+ per-package no-build, ktore jest blacklist nie whitelist). Usunieto
dlatego pre-commit hook `uv-lock-no-build` ktory failowal na cssmin
przy KAZDEJ zmianie pyproject.toml (false positive).

Polityka wheel-only egzekwowana teraz przez:
1. PR review (PULL_REQUEST_TEMPLATE.md ma checkbox dla nowych dep)
2. Trivy CVE scan w docker-bake
3. uv-secure CVE scan w dependency-audit.yml workflow

Smoke test:
- `uv sync --frozen --no-install-project --all-extras` -> ok
- `pytest --help` zawiera `--no-testcontainers` -> plugin ladowany
- `pytest src/pbn_integrator/tests/test_helpers.py` -> 2 passed
mpasternak added a commit that referenced this pull request May 3, 2026
Odpowiedź na ANALYSIS.md (2026-05-02). Łącznie #1, #3, #4, #5, #7,
#9, #10 — bugfixy bezpieczeństwa, wydajności i niezawodności + testy.

Bezpieczeństwo (#1):
  LoginRequiredMixin na 5 endpointach API (RokHabilitacji,
  PunktacjaZrodla, UploadPunktacjaZrodla, OstatniaJednostkaIDyscyplina,
  GetPubmedID). Anonimowy POST do upload-punktacja-zrodla nie tworzy
  już Punktacja_Zrodla. Regression test parametryzowany 5x.

Healthcheck (#3):
  /health/ pinguje DB (SELECT 1) + Redis (PING, timeout 2s) ->
  503 z listą failed components zamiast 200 hardcoded.

Browse N+1 (#4):
  get_available_letters: jedno SELECT DISTINCT na pierwszym znaku
  z mapowaniem polskich diakrytyków zamiast 26+ EXISTS.

Logging (#7):
  Timestamp ISO + nazwa loggera. Dodane django.security,
  django.request, celery loggers. pbn_import zachowuje stary format.

Celery (#9):
  - import_dyscyplin: select_for_update().get() w transakcji
    zamiast leniwego .filter() (lock realnie działa) + regression
    test sprawdzający SELECT...FOR UPDATE w SQL
  - bpp.tasks.zaktualizuj_liczbe_cytowan: Singleton z 2h lockiem
    + time_limit/soft_time_limit przeciw zawieszonym WoS requests
  - pbn_export_queue.queue_pbn_export_batch: logger.exception +
    rollbar.report_exc_info zamiast except Exception: pass
  - pbn_downloader_app: usunięty redundant non-atomic check
    poza create_task_with_lock (race-window eliminated)
  - skasowane martwe my_limit() + task_limits dict z bpp/tasks.py

Testy (#5):
  + 4 edge case'y wyczysc_przypisania (full wrap, branch 3 standalone,
    multi-row, parent_od=None contract)
  + 9 testów scoring deduplikator_zrodel.ocen_podobienstwo
  + 6 testów ewaluacja_dwudyscyplinowcy.core
  + 3 regression testy locka w import_dyscyplin (parametryzowane)
  + 4 testy /health/ + auth API regression

Cleanup (#10):
  - usunięte: sentry_support.py, test_sentry_support.py, /sentry_test/,
    sekcja SENTRYSDK_* w .env.example
  - font-awesome 4.1.0 z package.json + yarn.lock (orphaned, EOL)
  - test_exception_view zachowane do testów Rollbara

Towncrier: 9 fragmentów w src/bpp/newsfragments/.

Pre-existing test_przeanalizuj_import_dyscyplin failuje też przed
zmianą (test zakłada eager Celery, settings.local ma False) —
nie ruszane.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
mpasternak added a commit that referenced this pull request May 3, 2026
…equest

Dwa fixy zatrutych testów wprowadzonych w 7b7b923 (audit-driven cleanup),
które padały TYLKO w pełnym suicie pod -n auto, deterministycznie.

#1 — multiseek 50 errors:
  test_health_check_returns_503_when_db_down robił
  monkeypatch.setattr(health.connection, "ensure_connection", boom).
  health.connection to ConnectionProxy z django.db; jego __setattr__
  forwarduje zapis na realny DatabaseWrapper w connections[default].
  Pytest monkeypatch w teardownie wykonuje setattr(target, name, oldval),
  gdzie oldval to wartość pobrana przez getattr przed testem — w teście
  bez @pytest.mark.django_db jest to bound pytest_django._blocking_wrapper
  (sesyjny block() jest aktywny). Po teście bound _blocking_wrapper trafia
  do connections[default].__dict__["ensure_connection"], co — z racji
  priorytetu instance-attr nad class-attr — czyni django_db_blocker.
  unblock() bezskutecznym dla całego workera. Pierwszy następny test
  używający DB pada w setup_databases → migrate → cursor() →
  ensure_connection() → _blocking_wrapper z RuntimeError "Database
  access not allowed". Na pełnym suicie xdist wsadzał ten test wraz z
  testami multiseek na ten sam worker, więc multiseek deterministycznie
  padał z 50 errors. W izolacji / na multiseek-only — zielono.

  Fix: patch przeniesiony na health._check_db (paraleluje już
  test_health_check_returns_503_when_redis_down). Zero side-effectu na
  DatabaseWrapper.

#2 — middleware caplog 5 fails:
  Ten sam audit-cleanup commit dodał propagate=False na logger
  django.request. Pytest caplog wpina handler na root → bez propagacji
  nie widzi tych WARNING-ów. Próba flipowania propagate=True per-test
  fixture-em okazała się zawodna w pełnym suicie (jakaś inna ścieżka
  resetuje propagate między fixturem a asercją; niezbadane).

  Fix: autouse fixture wpina caplog.handler bezpośrednio na
  django.request, niezależnie od propagate. Plus jawne
  caplog.set_level(level, logger="django.request") w 5 testach.

Wynik pełnego pytest -n auto: 3913 passed (z 3786) w 2:38 (z 7:16).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
mpasternak added a commit that referenced this pull request May 4, 2026
W kroku 2 wizarda pole `pliki` (`MultipleFileField` + `<input multiple>`)
przyjmowało N plików, ale do `Zgloszenie_Publikacji_Zalacznik` trafiał
zero, jeden lub żaden — zależnie od ścieżki kodu.

Dwa nakładające się błędy:

1. `_process_files` czytało `self.request.FILES.getlist("2-pliki")`,
   ale w `done()` `request.FILES` to zawartość ostatniego kroku
   wizarda (autorzy/opłaty), nie kroku 2. Efekt: 0 załączników.

2. `formtools.wizard.storage.base.set_step_files` iteruje
   `files.items()` po `MultiValueDict`, co dla pól z `<input multiple>`
   gubi wszystkie wartości poza ostatnią. Efekt po fixie #1: tylko 1
   załącznik niezależnie od liczby uploadowanych plików.

Rozwiązanie:

- `process_step_files` zapisuje wszystkie pliki bezpośrednio do
  `file_storage` i listę metadanych do `storage.extra_data["pliki_list"]`.
  Standardowy storage formtools nadal dostaje swoje (re-walidacja
  w `render_done` zobaczy 1 plik = przejdzie clean()).
- `_process_files` w `done()` czyta z `extra_data` i tworzy
  `Zgloszenie_Publikacji_Zalacznik` dla każdego pliku, sprzątając
  tmp-y po skopiowaniu do permanent storage.
- `_wyczysc_tmp_pliki` usuwa stare tmp-y przy ponownym submitie
  kroku 2 (powrót w wizardzie).

Admin:

- `Zgloszenie_PublikacjiAdmin.pliki_do_pobrania` (readonly_field)
  wyświetla listę wszystkich załączników + legacy pole `plik`.
- Nowy `pobierz_zalacznik_view` z X-Accel-Redirect dla pojedynczych
  Zgloszenie_Publikacji_Zalacznik.

Testy regresji:

- `test_pelny_formularz_ograniczony_jeden_plik` — wizard OGRANICZONY
  z 1 plikiem, asercja `zalaczniki.count() == 1`.
- `test_pelny_formularz_ograniczony_wiele_plikow` — z 3 plikami,
  asercja `zalaczniki.count() == 3`. Bez fixa testy fail-ują;
  z fixem przechodzą. Webtest zamiast playwright bo
  `webtest_app.post(..., upload_files=[...])` obsługuje multipart
  z duplikatami klucza, a playwright na step 3→4 jest flaky przez
  auto-uzupełnianie jednostki w `autorform_dependant.js`.

Dodatkowo w tym samym commicie:

- Wyniesienie inline `<style>` z `step_base.html`/`step_rodzaj.html`/
  `step_forma_dostepu.html` do `_wizard_forms.scss` (nowy plik
  importowany w `app-{blue,green,orange}.scss`).
- `Zgloszenie_Publikacji_DaneForm.clean` defensywnie dla `self.files`
  w postaci dict (re-walidacja z storage formtools nie zwraca
  `MultiValueDict`).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
mpasternak added a commit that referenced this pull request May 4, 2026
Trzy współbieżne zmiany w wizardzie zgłaszania publikacji:

1) **Bug**: gdy user wybrał wydawnictwo nadrzędne (lub wydawcę)
   z autocomplete, do `Zgloszenie_Publikacji` trafiał tylko tekst
   etykiety, FK (`wydawnictwo_nadrzedne_bpp`/`_pbn`,
   `wydawca_bpp`/`_pbn`) zostawał `None`.

   Powód: `PublicWydawcaAutocomplete` i
   `PublicWydawnictwoNadrzedneAutocomplete` miały nadpisany
   `get_result_value`, który zwracał etykietę HTML zamiast
   `<ct_pk>-<obj_pk>` (formatu, którego oczekuje QSS widget przy
   POST). W rezultacie `<option value="...">` miał w sobie HTML
   etykiety, a `_resolve_qss_value()` w `done()` nie potrafił
   rozparsować referencji do obiektu.

   Fix: usunąć obie nadpisówki — domyślne `get_result_value`
   z `dal_queryset_sequence.views` zwraca poprawny format.

2) **Re-walidacja widget z malformed value** (z poprzedniego commita
   zostawione w forms.py): `TolerantQuerySetSequenceSelect2` filtruje
   bogusowe wartości przed `split('-', 1)` w `filter_choices_to_render`,
   żeby re-render formularza po validation error nie wybuchał z 500.

3) **UX**: help_text pola `strona_www` (link do publikacji lub DOI)
   wzbogacony o `_FULL_URL_TEKST` ze wskazówką:
   - prefiks `https://`/`http://`
   - jeżeli sam DOI — dodaj `https://dx.doi.org/[numer DOI]`

   Suffix dochodzi do wszystkich 8 kombinacji `(rodzaj, forma_dostepu)`
   w `STRONA_WWW_HELP_TEXT`, w tym do `POZOSTALE/OTWARTY` która
   wcześniej miała pusty help_text.

4) **CSS**: `.select2-container { display: block !important;
   margin-bottom: 1rem !important }` + spacing między select2 a
   następującym `.help-text`. Bez tego help_text crispy renderowany
   pod widgetem QSS wpadał w pole selecta (Foundation daje natywnemu
   `<select>` margin: 0 0 1rem, ale select2 wstawia `<span>` które
   tego nie dziedziczy).

5) **Migracja merge** `0415_merge_20260504_0907.py` — łączy `0414_*`
   z dev (code review fixy) z `0414_merge_20260427_1123` (z dev'owego
   merge w naszej gałęzi).

Testy regresji (webtest, pełne ścieżki przez wizard):

- `test_rozdzial_z_picknietym_wydawnictwem_nadrzednym_zapisuje_FK`
  — RAW format `<ct>-<pk>` (jak picnięty z autocomplete) → asercja
  `wn_bpp_id == ksiazka.pk` (regression dla bugu #1).

- `test_pelny_formularz_monografia_otwarty` — pełna ścieżka MONOGRAFII
  z asercjami: zgłoszenie utworzone, brak `wydawnictwo_nadrzedne_*`
  (forma usuwa pola), brak `wydawca_*` (świadomie usunięte z formularza
  w 5b68c5b — bibliotekarz uzupełnia w adminie). Test pilnuje tej
  decyzji projektowej; gdy ktoś przywróci pole `wydawca`, ten test
  trzeba świadomie zaktualizować.

- (z poprzedniego commita pozostają)
  `test_pelny_formularz_rozdzial_z_freetextem_wn`,
  `test_rozdzial_z_bogus_wn_picker_nie_wybucha_na_re_renderze`,
  `test_rozdzial_z_typed_text_w_picker_lzdaje_jako_freetext`.

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

Labels

dependencies Pull requests that update a dependency file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants