Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
08c8139
feat(zglos_publikacje): nowy wielokrokowy wizard zgłaszania publikacji
mpasternak Apr 2, 2026
0f5f001
Przyciski
mpasternak Apr 7, 2026
5b68c5b
feat(zglos_publikacje): kafelek książka/monografia, link wymagany, us…
mpasternak Apr 16, 2026
0824de4
feat(zglos_publikacje): pokaż przyciski dodawania wyd. zależnie od ro…
mpasternak Apr 16, 2026
6ccd335
ci(docker): always rebuild bpp_base, no layer cache
mpasternak Apr 16, 2026
707ced7
fix(auth_server): don't pull password_policies via views/middleware i…
mpasternak Apr 16, 2026
91ef9cf
refactor(docker): drop bpp-sync-deps; dev-only sync via compose entry…
mpasternak Apr 16, 2026
e77622b
Merge branch 'dev' into feature/nowe-zglos-publikacje
mpasternak Apr 20, 2026
a28f7d3
test(conftest): build frontend assets before pytest collection
mpasternak Apr 20, 2026
6227a73
fix(zglos_publikacje): multi-file upload + playwright test clicks
mpasternak Apr 20, 2026
a67a416
ci: fix playwright browser cache + ruff migration exclude
mpasternak Apr 20, 2026
2cf14fe
fix(autocomplete): report QuerySetSequence ordered gdy sub-querysety są
mpasternak Apr 20, 2026
cd2fa4a
ci(docker): trigger build via PR label `docker-build`
mpasternak Apr 20, 2026
7a7c2e0
ci: remove Claude Code Review workflow
mpasternak Apr 20, 2026
921b81c
Merge remote-tracking branch 'origin/dev' into feature/nowe-zglos-pub…
mpasternak Apr 27, 2026
ffb2362
chore(migrations): merge leaf 0413_bppuser_autor_onetoone z 0413_merg…
mpasternak Apr 27, 2026
301b8c0
feat(zglos_publikacje): help_text i required strona_www wg rodzaju i …
mpasternak Apr 27, 2026
cecdd11
Merge remote-tracking branch 'origin/dev' into feature/nowe-zglos-pub…
mpasternak Apr 27, 2026
693d3b4
Merge remote-tracking branch 'origin/dev' into feature/nowe-zglos-pub…
mpasternak Apr 27, 2026
baade8e
feat(zglos_publikacje): poprawki UX kroku formy dostępu i help_text
mpasternak Apr 27, 2026
03d3a7e
feat(docker): sanity-check git SHA w obrazie + commit info w stopce d…
mpasternak Apr 27, 2026
e32e9d7
feat(docker): pokaż tag obrazu obok commit SHA w stopce dev buildów
mpasternak Apr 27, 2026
a340544
Merge remote-tracking branch 'origin/dev' into feature/nowe-zglos-pub…
mpasternak Apr 27, 2026
966c517
feat(zglos_publikacje): pogrub pasek wybranego rodzaju w kroku 2
mpasternak Apr 27, 2026
b1ccceb
ci(docker): PR build aliasuje obraz pod nazwę brancha (oprócz <PR#>-m…
mpasternak Apr 27, 2026
b2837d6
feat(docker): branch alias również w stopce dev buildów
mpasternak Apr 27, 2026
f770d4d
ci(docker): wywal mechanizm .docker-build z workflow
mpasternak Apr 27, 2026
46b072c
ci(docker): buduj PR/feature push tylko gdy actor=mpasternak
mpasternak Apr 27, 2026
33dab8c
Merge branch 'dev' into feature/nowe-zglos-publikacje
mpasternak May 2, 2026
fac9124
Merge branch 'dev' into feature/nowe-zglos-publikacje
mpasternak May 3, 2026
5df4b09
Merge branch 'dev' into feature/nowe-zglos-publikacje
mpasternak May 4, 2026
21ebbca
fix(zglos_publikacje): zapisuj wszystkie pliki z multi-file uploadu
mpasternak May 4, 2026
2e59503
Merge remote-tracking branch 'origin/dev' into feature/nowe-zglos-pub…
mpasternak May 4, 2026
b16f83c
fix(zglos_publikacje): FK wyd. nadrzędnego/wydawcy + UX hint URL+DOI
mpasternak May 4, 2026
13da59a
Merge branch 'dev' into feature/nowe-zglos-publikacje
mpasternak May 4, 2026
b4eec6f
Merge branch 'dev' into feature/nowe-zglos-publikacje
mpasternak May 4, 2026
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
5 changes: 4 additions & 1 deletion src/bpp/admin/uczelnia.py
Original file line number Diff line number Diff line change
Expand Up @@ -180,8 +180,11 @@ class UczelniaAdmin(
{
"classes": ("grp-collapse grp-opened",),
"fields": (
"wymagaj_informacji_o_oplatach",
"wymagaj_logowania_zglos_publikacje",
"wymagaj_oplatach_artykul",
"wymagaj_oplatach_monografia",
"wymagaj_oplatach_rozdzial",
"wymagaj_oplatach_inne",
),
},
),
Expand Down
14 changes: 12 additions & 2 deletions src/bpp/admin/zglos_publikacje_helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,19 @@ def get_changeform_initial_data(self, request):
for pole in MODEL_Z_OPLATA_ZA_PUBLIKACJE:
ret[pole] = getattr(z, pole)

# Wydawca z nowego formularza
if z.wydawca_bpp_id:
ret["wydawca"] = z.wydawca_bpp_id

# Wydawnictwo nadrzędne z nowego formularza
if z.wydawnictwo_nadrzedne_bpp_id:
ret["wydawnictwo_nadrzedne"] = z.wydawnictwo_nadrzedne_bpp_id

ret["adnotacje"] = (
f"E-mail zgłaszającego: <{z.email}>.\nNumer zgłoszenia: {z.id} -- {str(z)}\n"
f"Pole 'Dostęp dnia' ustawione automatycznie na datę utworzenia rekordu. "
f"E-mail zgłaszającego: <{z.email}>.\n"
f"Numer zgłoszenia: {z.id} -- {z}\n"
f"Pole 'Dostęp dnia' ustawione automatycznie"
f" na datę utworzenia rekordu. "
)

return ret
Expand Down
74 changes: 74 additions & 0 deletions src/bpp/migrations/0411_nowy_formularz_zgloszenia.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# Generated by Django 4.2.25 on 2026-04-02 08:57

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("bpp", "0410_set_polish_skrot_crossref"),
]

operations = [
migrations.AddField(
model_name="uczelnia",
name="wymagaj_oplatach_artykul",
field=models.BooleanField(
default=True,
help_text="Gdy zaznaczone, formularz zgłaszania publikacji będzie pytać o opłaty za artykuły naukowe.",
verbose_name="Wymagaj informacji o opłatach: artykuł",
),
),
migrations.AddField(
model_name="uczelnia",
name="wymagaj_oplatach_inne",
field=models.BooleanField(
default=False,
help_text="Gdy zaznaczone, formularz zgłaszania publikacji będzie pytać o opłaty za pozostałe publikacje.",
verbose_name="Wymagaj informacji o opłatach: inne",
),
),
migrations.AddField(
model_name="uczelnia",
name="wymagaj_oplatach_monografia",
field=models.BooleanField(
default=True,
help_text="Gdy zaznaczone, formularz zgłaszania publikacji będzie pytać o opłaty za monografie.",
verbose_name="Wymagaj informacji o opłatach: monografia",
),
),
migrations.AddField(
model_name="uczelnia",
name="wymagaj_oplatach_rozdzial",
field=models.BooleanField(
default=False,
help_text="Gdy zaznaczone, formularz zgłaszania publikacji będzie pytać o opłaty za rozdziały.",
verbose_name="Wymagaj informacji o opłatach: rozdział",
),
),
migrations.AlterField(
model_name="jezyk",
name="skrot_crossref",
field=models.CharField(
blank=True,
choices=[
("en", "en - angielski"),
("es", "es - hiszpański"),
("pl", "pl - polski"),
],
max_length=10,
null=True,
unique=True,
verbose_name="Skrót nazwy języka wg API CrossRef",
),
),
migrations.AlterField(
model_name="uczelnia",
name="wymagaj_informacji_o_oplatach",
field=models.BooleanField(
default=True,
help_text="LEGACY: używaj pól wymagaj_oplatach_* poniżej. To pole zachowane dla kompatybilności.",
verbose_name="Wymagaj informacji o opłatach (legacy)",
),
),
]
13 changes: 13 additions & 0 deletions src/bpp/migrations/0413_merge_20260416_2124.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Generated by Django 4.2.30 on 2026-04-16 19:24

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
("bpp", "0411_nowy_formularz_zgloszenia"),
("bpp", "0412_uczelnia_orcid_staff_only"),
]

operations = []
13 changes: 13 additions & 0 deletions src/bpp/migrations/0414_merge_20260427_1123.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Generated by Django 5.2.13 on 2026-04-27 09:23

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
("bpp", "0413_bppuser_autor_onetoone"),
("bpp", "0413_merge_20260416_2124"),
]

operations = []
13 changes: 13 additions & 0 deletions src/bpp/migrations/0415_merge_20260504_0907.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Generated by Django 5.2.13 on 2026-05-04 07:07

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
("bpp", "0414_code_review_2026_05_fixes"),
("bpp", "0414_merge_20260427_1123"),
]

operations = []
43 changes: 38 additions & 5 deletions src/bpp/models/uczelnia.py
Original file line number Diff line number Diff line change
Expand Up @@ -223,12 +223,45 @@ class Uczelnia(ModelZAdnotacjami, ModelZPBN_ID, NazwaISkrot, NazwaWDopelniaczu):
)

wymagaj_informacji_o_oplatach = models.BooleanField(
"Wymagaj informacji o opłatach",
"Wymagaj informacji o opłatach (legacy)",
default=True,
help_text="Gdy zaznaczone, moduł 'Zgłaszanie publikacji' będzie wyświetlać użytkownikowi formularz "
"informacji o opłatach za publikację w przypadku zgłaszania artykułu lub monografii. "
"Gdy odznaczone, taki formularz nie bedzie wyświetlany, niezależnie od rodzaju "
"zgłaszanej publikacji. ",
help_text=(
"LEGACY: używaj pól wymagaj_oplatach_* poniżej."
" To pole zachowane dla kompatybilności."
),
)

wymagaj_oplatach_artykul = models.BooleanField(
"Wymagaj informacji o opłatach: artykuł",
default=True,
help_text=(
"Gdy zaznaczone, formularz zgłaszania publikacji"
" będzie pytać o opłaty za artykuły naukowe."
),
)
wymagaj_oplatach_monografia = models.BooleanField(
"Wymagaj informacji o opłatach: monografia",
default=True,
help_text=(
"Gdy zaznaczone, formularz zgłaszania publikacji"
" będzie pytać o opłaty za monografie."
),
)
wymagaj_oplatach_rozdzial = models.BooleanField(
"Wymagaj informacji o opłatach: rozdział",
default=False,
help_text=(
"Gdy zaznaczone, formularz zgłaszania publikacji"
" będzie pytać o opłaty za rozdziały."
),
)
wymagaj_oplatach_inne = models.BooleanField(
"Wymagaj informacji o opłatach: inne",
default=False,
help_text=(
"Gdy zaznaczone, formularz zgłaszania publikacji"
" będzie pytać o opłaty za pozostałe publikacje."
),
)

wydruk_logo = models.BooleanField("Pokazuj logo na wydrukach", default=False)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Formularz zgłaszania publikacji: pomocniczy tekst pola „Link do publikacji
lub DOI" jest teraz dobierany w zależności od kombinacji rodzaju publikacji
i formy dostępu — m.in. fragment o katalogach BN/NUKAT pojawia się tylko
przy monografii i rozdziale w dostępie ograniczonym, a wzmianka o PBN
znika dla publikacji typu „Inne". Dla rodzaju „Inne" pole nie jest
wymagane (ponieważ tych publikacji nie wysyłamy do PBN); dla dostępu
ograniczonego pozostaje wymagany plik PDF.
21 changes: 21 additions & 0 deletions src/bpp/static/scss/_select2-custom.scss
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,27 @@
max-height: 400px !important;
}

// Foundation daje `select { margin: 0 0 1rem }`. Select2 ukrywa
// oryginalny <select> i wstawia w to miejsce `.select2-container`,
// który tego marginesu nie dziedziczy. Bez tego help_text (renderowany
// przez crispy zaraz pod polem) wpada praktycznie pod selecta.
// Wyrównujemy zachowanie do natywnego <select>: 1rem dolnego oddechu,
// dodatkowo wymuszamy `display: block` żeby kontener faktycznie zajął
// pełną wysokość zamiast inline-block (margin-bottom na inline-block
// w niektórych kontekstach nie tworzy widocznego odstępu).
.select2-container {
display: block !important;
margin-bottom: 1rem !important;
}

// Foundation help-text bez własnego marginesu wpada wprost pod
// poprzednika — daj mu trochę powietrza nad sobą gdy idzie po select2.
.select2-container + .help-text,
.select2-container ~ .help-text {
margin-top: 0.25rem;
display: block;
}

::-ms-check {
color: red;
background: black;
Expand Down
152 changes: 152 additions & 0 deletions src/bpp/static/scss/_wizard_forms.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
// Wizard form styles for zglos_publikacje
// Uses theme's $primary-color for consistent theming

.tile-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1rem;
margin: 1.5rem 0;
}

.tile-grid--stacked {
grid-template-columns: 1fr;
}

.wizard-wybor-info {
display: flex;
align-items: center;
justify-content: center;
gap: 1rem;
margin: 1rem 0 0.5rem;
padding: 1.25rem 1.25rem;
background: rgba($primary-color, 0.08);
border: 1px solid rgba($primary-color, 0.3);
border-radius: 8px;

.wizard-wybor-ikona {
font-size: 3rem;
line-height: 1;
}

.wizard-wybor-label {
font-size: 1.4rem;
font-weight: bold;
color: $primary-color;
}
}

.tile-card {
border: 2px solid #e0e0e0;
border-radius: 8px;
padding: 1.5rem;
cursor: pointer;
text-align: center;
transition: border-color 0.2s, box-shadow 0.2s;
background: #fff;

&:hover {
text-decoration: none;
border-color: $primary-color;
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
}

&:focus {
outline: 2px solid $primary-color;
outline-offset: 2px;
text-decoration: none;
border-color: $primary-color;
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
}

&.selected {
border-color: $primary-color;
background: rgba($primary-color, 0.08);
box-shadow: 0 2px 12px rgba($primary-color, 0.2);
}

input[type="radio"] {
display: none;
}

.tile-icon {
display: block;
font-size: 3rem;
line-height: 1.2;
}

.tile-title {
display: block;
font-size: 1.2rem;
font-weight: bold;
margin-top: 0.5rem;
}

.tile-desc {
display: block;
font-size: 0.9rem;
color: #666;
margin-top: 0.3rem;
}

&.tile-back {
border-color: #ccc;
background: #fff;
grid-column: 1 / -1;

&:hover {
border-color: #999;
}

&:focus {
outline: 2px solid #999;
outline-offset: 2px;
}
}
}

.wizard-nav {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1rem;
margin: 1.5rem 0;
}

.wizard-nav-btn {
border: 2px solid #e0e0e0;
border-radius: 8px;
padding: 1.2rem;
cursor: pointer;
text-align: center;
transition: border-color 0.2s, box-shadow 0.2s;
background: #fff;
font-family: inherit;
text-decoration: none;

&:hover {
border-color: $primary-color;
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
text-decoration: none;
}

&:focus {
outline: 2px solid $primary-color;
outline-offset: 2px;
}

.tile-icon {
display: block;
font-size: 2rem;
line-height: 1.2;
}

.tile-title {
display: block;
font-size: 1.1rem;
font-weight: bold;
margin-top: 0.3rem;
}

&.nav-single {
grid-column: 1 / -1;
}
}
1 change: 1 addition & 0 deletions src/bpp/static/scss/app-blue.scss
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
@import "external_links";
@import "ranking_autorow";
@import "pagination";
@import "wizard_forms";

@import 'foundation';
@include foundation-global-styles;
Expand Down
Loading
Loading