Skip to content

Commit

Permalink
Merge branch 'release/v202410.1142'
Browse files Browse the repository at this point in the history
  • Loading branch information
mpasternak committed Oct 13, 2024
2 parents 3fd92b7 + 248dda6 commit 4ac86d9
Show file tree
Hide file tree
Showing 29 changed files with 724 additions and 367 deletions.
23 changes: 23 additions & 0 deletions HISTORY.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,29 @@ Historia zmian

.. towncrier release notes start
Bpp 202410.1142 (2024-10-14)
============================

Naprawione
----------

- nie pokazuj dyscyplin z nie-aktualnego roku (#1314)


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

- obsługa dyscyplin źródeł dla kolejnych lat; możliwość odfiltrowania autorów nie będących pracownikami w rozbieżności
dyscyplin źródeł, możliwość filtrowania po roku, ograniczenie wyświetlanych prac do prac
z roku 2017 i wyższych;


możliwość eksportowania rozbiezności dyscyplin źródeł/rekordów do formatu XLS, (#1411)
- dodaj ID systemu kadrowego do raportu slotów zerowego i raportu slotów ewaluacja upoważnienia (#1458)
- dodaj PBN UID do raportu slotów - ewaluacja (#1459)
- wyświetlaj kwartyl źródła (WoS i SCOPUS) w raporcie slotów - ewaluacja (#1464)


Bpp 202410.1141 (2024-10-08)
============================

Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ loc: clean
pygount -N ... -F "...,staticroot,migrations,fixtures" src --format=summary


DOCKER_VERSION="202410.1141"
DOCKER_VERSION="202410.1142"

DOCKER_BUILD=build --platform linux/amd64,linux/arm64 --push

Expand Down
2 changes: 1 addition & 1 deletion bin/grep-raport.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@
# pliku CSV.

for a in PKT-0 PKT-1 PKT-2 PKT-3 PKT-4 PKT-5; do
grep $a $1 > $1-$a.csv;
grep $a $1 | sort | uniq > $1-$a.csv;
done
7 changes: 7 additions & 0 deletions bin/import-list-ministerialnych.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#!/bin/bash

python src/manage.py import_lista_ministerialna_xlsx --url https://www.gov.pl/attachment/c2510527-171a-451e-b3c4-74ea5a5c6c94 --fn lista-ministerialna-2024.xlsx --rok 2024 --download

python src/manage.py import_lista_ministerialna_xlsx --url https://www.gov.pl/attachment/e0aab563-4aa9-4944-a057-a436527cad3d --fn lista-ministerialna-2023.xlsx --rok 2023 --download

python src/manage.py import_lista_ministerialna_xlsx --url https://www.gov.pl/attachment/35896404-7908-4dc7-bcac-39bd0e68babc --fn lista-ministerialna-2022.xlsx --rok 2022 --download
2 changes: 1 addition & 1 deletion docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ services:
condition: service_healthy

denormserver:
image: iplweb/bpp_appserver:latest
image: iplweb/bpp_base:latest
env_file: .env.docker
entrypoint: ["python", "src/manage.py", "denorm_queue"]
healthcheck:
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "bpp-iplweb",
"version": "v202410.1141",
"version": "v202410.1142",
"license": "MIT",
"devDependencies": {
"grunt": ">=1.6.1",
Expand Down
659 changes: 336 additions & 323 deletions poetry.lock

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "bpp_iplweb"
version = "202410.1141"
version = "202410.1142"
description = ""
authors = ["Michał Pasternak <michal.dtz@gmail.com>"]
license = "MIT"
Expand Down Expand Up @@ -113,7 +113,7 @@ pytest-rerunfailures = "^14.0"
django-debug-toolbar = "^4.4.6"

[tool.bumpver]
current_version = "v202410.1141"
current_version = "v202410.1142"
version_pattern = "vYYYY0M.BUILD[-TAGNUM][GITHASH]"
commit_message = "bump version {old_version} -> {new_version}"
commit = true
Expand Down Expand Up @@ -265,7 +265,7 @@ build-backend = "poetry.core.masonry.api"

[tool.towncrier]
package = "bpp"
version = "202410.1141"
version = "202410.1142"
package_dir = "src"
filename = "HISTORY.rst"

Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ def requirements(fn="requirements.txt"):

setup(
name="bpp-iplweb",
version="202410.1141",
version="202410.1142",
description="System informatyczny do zarządzania bibliografią publikacji pracowników naukowych",
long_description=readme,
long_description_content_type="text/x-rst",
Expand Down
3 changes: 3 additions & 0 deletions src/bpp/admin/zrodlo.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,10 +66,12 @@ class Meta:

class Dyscyplina_ZrodlaInline(admin.TabularInline):
model = Dyscyplina_Zrodla
classes = ["grp-collapse grp-closed grp-never-open-automatically"]
extra = 1

class Meta:
fields = [
"rok",
"dyscyplina",
]

Expand Down Expand Up @@ -119,6 +121,7 @@ class ZrodloAdmin(
"doi",
"pbn_uid__pk",
]

autocomplete_fields = ["pbn_uid"]
list_display = ["nazwa", "skrot", "rodzaj", "www", "issn", "e_issn", "pbn_uid_id"]
list_filter = [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,10 @@ def add_arguments(self, parser):
parser.add_argument("--rok", default=2023, type=int)
parser.add_argument("--dry-run", action="store_true")
parser.add_argument("--download", action="store_true")
parser.add_argument("--force-download", action="store_true")

@transaction.atomic
def handle(self, url, fn, rok, dry_run, download, *args, **options):
def handle(self, url, fn, rok, dry_run, download, force_download, *args, **options):
# Usuń zbędne spacje z systemowego słownika dyscyplin BPP,
# napraw literówki

Expand All @@ -49,10 +50,12 @@ def handle(self, url, fn, rok, dry_run, download, *args, **options):

# Pobierz plik z listą z URLa

if not Path(fn).exists():
if download:
if not Path(fn).exists() or force_download:
if download or force_download:
print("Downloading", fn)
response = requests.get(url)
open(fn, "wb").write(response.content)
print("done")
else:
raise ValueError(
f"Brak pliku {fn}. Podaj parametr --download aby pobrac"
Expand Down Expand Up @@ -97,7 +100,7 @@ def handle(self, url, fn, rok, dry_run, download, *args, **options):
disable_skrot=True,
)
if zrodlo is None:
logger.info(f"PKT-5; {tytul_zrodla}; brak dopasowania w BPP")
logger.info(f"{tytul_zrodla}; PKT-5; brak dopasowania w BPP")
continue

try:
Expand All @@ -112,26 +115,28 @@ def handle(self, url, fn, rok, dry_run, download, *args, **options):
pz = zrodlo.punktacja_zrodla_set.get(rok=rok)
if pz.punkty_kbn != punktacja:
logger.info(
f"PKT-0; {zrodlo.nazwa}; różna punktacja; "
f"{zrodlo.nazwa}; PKT-0; różna punktacja; {rok}; "
f"BPP {pz.punkty_kbn}; "
f"XLS {punktacja}; Ustawiam na XLS."
)
pz.punkty_kbn = punktacja
pz.save(update_fields=["punkty_kbn"])
else:
logger.info(
f"PKT-4; {zrodlo.nazwa}; ustawiam; {punktacja}; "
f"{zrodlo.nazwa}; PKT-4; ustawiam; {punktacja}; "
f"za rok {rok}; (w XLS: {elem['Tytuł 1']}) "
)
zrodlo.punktacja_zrodla_set.create(rok=rok, punkty_kbn=punktacja)

# Aktualne dyscypliny:
aktualne_dyscypliny_zrodla = {
x.dyscyplina.nazwa for x in zrodlo.dyscyplina_zrodla_set.all()
x.dyscyplina.nazwa for x in zrodlo.dyscyplina_zrodla_set.filter(rok=rok)
}

# Ustawmy mu wszystkie dyscypliny wg pliku XLS:
zrodlo.dyscyplina_zrodla_set.all().delete()
# Ustawmy mu wszystkie dyscypliny wg pliku XLS.

# W tym celu: kasujemy dyscypliny z danego roku
zrodlo.dyscyplina_zrodla_set.filter(rok=rok).delete()

for nazwa_dyscypliny in list(elem.keys())[9:]:
if elem[nazwa_dyscypliny] == "x":
Expand All @@ -144,22 +149,28 @@ def handle(self, url, fn, rok, dry_run, download, *args, **options):
f"ERROR: brak dyscypliny naukowej '{nazwa_dyscypliny}' w systemie"
)

zrodlo.dyscyplina_zrodla_set.create(dyscyplina=dyscyplina_naukowa)
zrodlo.dyscyplina_zrodla_set.create(
dyscyplina=dyscyplina_naukowa, rok=rok
)

# Nowe dyscypliny:
nowe_dyscypliny_zrodla = {
x.dyscyplina.nazwa for x in zrodlo.dyscyplina_zrodla_set.all()
x.dyscyplina.nazwa for x in zrodlo.dyscyplina_zrodla_set.filter(rok=rok)
}

# Roznica:
dodane = nowe_dyscypliny_zrodla.difference(aktualne_dyscypliny_zrodla)
usuniete = aktualne_dyscypliny_zrodla.difference(nowe_dyscypliny_zrodla)

if dodane:
logger.info(f"PKT-1; {zrodlo.nazwa} ;+++ DODANE; {dodane}")
logger.info(
f"{zrodlo.nazwa}; PKT-1; +++ DODANE; {rok}; {sorted(dodane)}"
)

if usuniete:
logger.info(f"PKT-2; {zrodlo.nazwa} ;--- USUNIETE; {usuniete}")
logger.info(
f"{zrodlo.nazwa}; PKT-2; --- USUNIETE; {rok}; {sorted(usuniete)}"
)

if dry_run:
transaction.rollback()
47 changes: 47 additions & 0 deletions src/bpp/migrations/0352_dyscyplina_zrodla_rok.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Generated by Django 4.2.16 on 2024-10-13 12:28

from django.db import migrations, models, transaction

from bpp.util import pbar


@transaction.atomic
def skopiuj_dyscypliny_zrodel(apps, schema_editor):
Dyscyplina_Zrodla = apps.get_model("bpp", "Dyscyplina_Zrodla")

rok_range = range(2018, 2025)
for elem in pbar(
Dyscyplina_Zrodla.objects.all(), Dyscyplina_Zrodla.objects.count()
):
# Migracja ustala rok dyscypliny domyslnie na 2017; teraz w tej procedurze
# kopiujemy rok 2017 na 2018, 2019, 2020, 2021, 2022, 2023, 2024, celem
# zachowania kompatybilnosci:
# .create, bo zakładamy, że baza danych bedzie pusta w tym momencie
Dyscyplina_Zrodla.objects.bulk_create(
[
Dyscyplina_Zrodla(
rok=rok, zrodlo_id=elem.zrodlo_id, dyscyplina_id=elem.dyscyplina_id
)
for rok in rok_range
]
)


class Migration(migrations.Migration):
dependencies = [
("bpp", "0351_uczelnia_pokazuj_autorow_bez_prac_w_przegladaniu_danych"),
]

operations = [
migrations.AddField(
model_name="dyscyplina_zrodla",
name="rok",
field=models.IntegerField(default=2017),
preserve_default=False,
),
migrations.AlterUniqueTogether(
name="dyscyplina_zrodla",
unique_together={("zrodlo", "dyscyplina", "rok")},
),
migrations.RunPython(skopiuj_dyscypliny_zrodel, migrations.RunPython.noop),
]
7 changes: 2 additions & 5 deletions src/bpp/models/autor.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"""
Autorzy
"""

from __future__ import annotations

from datetime import date, datetime, timedelta
Expand Down Expand Up @@ -209,11 +210,7 @@ def aktualna_dyscyplina(self, pole="dyscyplina_naukowa"):
autor=self, rok=timezone.now().date().year
)
except Autor_Dyscyplina.DoesNotExist:
# Spróbuj pobrać jakiś wpis z lat poprzednich:
ret = Autor_Dyscyplina.objects.filter(autor=self).order_by("-rok").first()

if ret is None:
return None
return

return getattr(ret, pole)

Expand Down
8 changes: 5 additions & 3 deletions src/bpp/models/zrodlo.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"""
Źródła.
"""

from autoslug import AutoSlugField
from django.db import models
from django.db.models import CASCADE, SET_NULL
Expand Down Expand Up @@ -88,18 +89,19 @@ class Meta:


class Dyscyplina_Zrodla(models.Model):
rok = YearField()
zrodlo = models.ForeignKey("Zrodlo", on_delete=CASCADE)
dyscyplina = models.ForeignKey("Dyscyplina_Naukowa", on_delete=CASCADE)

class Meta:
verbose_name = "przypisanie dyscypliny do źródła"
verbose_name_plural = "przypisanie dyscyplin do źródła"
ordering = ["zrodlo__nazwa", "dyscyplina__nazwa"]
unique_together = [("zrodlo", "dyscyplina")]
ordering = ["zrodlo__nazwa", "rok", "dyscyplina__nazwa"]
unique_together = [("zrodlo", "dyscyplina", "rok")]
app_label = "bpp"

def __str__(self):
return f'Przypisanie dyscypliny "{self.dyscyplina}" do źródła "{self.zrodlo}"'
return f'Przypisanie dyscypliny "{self.dyscyplina}" do źródła "{self.zrodlo}" dla roku {self.rok}'


class ZrodloManager(FulltextSearchMixin, models.Manager):
Expand Down
2 changes: 1 addition & 1 deletion src/bpp/tests/test_commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,4 @@ def test_migrate():
@pytest.mark.django_db
@pytest.mark.vcr
def test_importuj_liste_ministerialna_2023():
call_command("import_lista_ministerialna_2023", "--download")
call_command("import_lista_ministerialna_xlsx", "--download")
2 changes: 1 addition & 1 deletion src/bpp/tests/test_models/test_struktura/test_autor.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,4 +74,4 @@ def test_nieaktualna_dyscyplina(autor_jan_kowalski, dyscyplina1):
autor=autor_jan_kowalski, rok=2000, dyscyplina_naukowa=dyscyplina1
)

assert autor_jan_kowalski.aktualna_dyscyplina().pk == dyscyplina1.pk
assert autor_jan_kowalski.aktualna_dyscyplina() is None
6 changes: 4 additions & 2 deletions src/bpp/tests/test_models/test_zrodlo.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@


def test_Dyscyplina_Zrodla___str__(zrodlo, dyscyplina1):
dz = Dyscyplina_Zrodla.objects.create(zrodlo=zrodlo, dyscyplina=dyscyplina1)
dz = Dyscyplina_Zrodla.objects.create(
zrodlo=zrodlo, dyscyplina=dyscyplina1, rok=2017
)
assert (
str(dz)
== 'Przypisanie dyscypliny "memetyka stosowana (3.1)" do źródła "Testowe Źródło"'
== 'Przypisanie dyscypliny "memetyka stosowana (3.1)" do źródła "Testowe Źródło" dla roku 2017'
)
2 changes: 2 additions & 0 deletions src/django_bpp/settings/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -1144,3 +1144,5 @@ def iter_namespace(ns_pkg):
X_FRAME_OPTIONS = "SAMEORIGIN"

STATICSITEMAPS_ROOT_DIR = os.path.relpath(STATIC_ROOT, os.getcwd())

DATA_UPLOAD_MAX_NUMBER_FIELDS = 5000
4 changes: 4 additions & 0 deletions src/django_bpp/templates/admin/change_form.html
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@
has_value = true;
});

if ($(this).hasClass("grp-never-open-automatically")) {
has_value = false;
}

if (has_value) {
$(this).addClass("grp-open").removeClass("grp-closed");
}
Expand Down
2 changes: 1 addition & 1 deletion src/django_bpp/version.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
VERSION = "202410.1141"
VERSION = "202410.1142"

if __name__ == "__main__":
import sys
Expand Down
6 changes: 6 additions & 0 deletions src/pbn_api/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -489,9 +489,15 @@ class JournalsMixin:
def get_journals_mnisw(self, *args, **kw):
return self.transport.get_pages("/api/v1/journals/mnisw/page", *args, **kw)

def get_journals_mnisw_v2(self, *args, **kw):
return self.transport.get_pages("/api/v2/journals/mnisw/page", *args, **kw)

def get_journals(self, *args, **kw):
return self.transport.get_pages("/api/v1/journals/page", *args, **kw)

def get_journals_v2(self, *args, **kw):
return self.transport.get_pages("/api/v2/journals/page", *args, **kw)

def get_journal_by_version(self, version):
return self.transport.get(f"/api/v1/journals/version/{version}")

Expand Down
Loading

0 comments on commit 4ac86d9

Please sign in to comment.