Skip to content

Commit

Permalink
Zmieniony regex do stron/numeru/tomu
Browse files Browse the repository at this point in the history
  • Loading branch information
mpasternak committed May 7, 2020
1 parent a554b06 commit c6969b2
Show file tree
Hide file tree
Showing 5 changed files with 79 additions and 19 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -116,3 +116,4 @@ src/import_dbf/integruj-dbf-publikacja-log.txt
src/import_dbf/post-import-dbf.sql
*.gz
/src/bpp/static/scss/.sass-cache/
/src/import_dbf/pre-integruj-dbf-enable-publikacja.sql
31 changes: 21 additions & 10 deletions src/bpp/models/abstract.py
Expand Up @@ -717,24 +717,35 @@ def ret(res):


parsed_informacje_regex = re.compile(
r"(\[online\](\s+|)|)(\s+|)"
r"(?P<rok>\d\d+)\s+"
r"(((vol|t|r|bd)(\.|) (?P<tom>\d+)|)(\s+|)|)"
r"(((((iss|nr|z|h)(\.|))) (?P<numer>((\d+)(\w+|))(\/\d+|)))|)",
r"(\[online\])?\s*"
r"(?P<rok>\d\d+)"
r"(\s*(vol|t|r|bd)\.*\s*(?P<tom>\d+))?"
r"(\s*(iss|nr|z|h)\.*\s*(?P<numer>\d+\w*(\/\d*\w*)?))?",
flags=re.IGNORECASE,
)


def parse_informacje(informacje, key):
def parse_informacje_as_dict(
informacje, parsed_informacje_regex=parsed_informacje_regex
):
"""Wycina z pola informacje informację o tomie lub numerze lub roku"""
if not informacje:
return
return {}

# matches = re.search(parsed_informacje_regex, informacje)
# if matches:
# return matches.groupdict()
# return {}

p = parsed_informacje_regex.match(informacje)
p = parsed_informacje_regex.search(informacje)
if p is not None:
d = p.groupdict()
if key in d:
return d[key]
return p.groupdict()
return {}


def parse_informacje(informacje, key):
"Wstecznie kompatybilna wersja funkcji parse_informacje_as_dict"
return parse_informacje_as_dict(informacje).get(key)


class PBNSerializerHelperMixin:
Expand Down
37 changes: 30 additions & 7 deletions src/bpp/tests/test_models/test_abstract.py
@@ -1,4 +1,6 @@
# -*- encoding: utf-8 -*-
import re

import pytest
from django.core.exceptions import ValidationError
from django.views.generic.dates import timezone_today
Expand All @@ -8,20 +10,21 @@
from bpp.admin import Wersja_Tekstu_OpenAccessAdmin
from bpp.models import (
Autor_Dyscyplina,
Wydawnictwo_Ciagle_Autor,
Typ_Odpowiedzialnosci,
Wersja_Tekstu_OpenAccess,
Licencja_OpenAccess,
Czas_Udostepnienia_OpenAccess,
Licencja_OpenAccess,
Tryb_OpenAccess_Wydawnictwo_Zwarte,
Typ_Odpowiedzialnosci,
Wersja_Tekstu_OpenAccess,
Wydawnictwo_Ciagle_Autor,
parse_informacje_as_dict,
)
from bpp.models.konferencja import Konferencja
from bpp.models.nagroda import Nagroda
from bpp.models.seria_wydawnicza import Seria_Wydawnicza
from bpp.models.struktura import Jednostka, Wydzial
from bpp.models.system import Charakter_PBN, Charakter_Formalny, Typ_KBN
from bpp.models.system import Charakter_Formalny, Charakter_PBN, Typ_KBN
from bpp.models.wydawnictwo_ciagle import Wydawnictwo_Ciagle
from bpp.models.wydawnictwo_zwarte import Wydawnictwo_Zwarte_Autor, Wydawnictwo_Zwarte
from bpp.models.wydawnictwo_zwarte import Wydawnictwo_Zwarte, Wydawnictwo_Zwarte_Autor


@pytest.mark.django_db
Expand Down Expand Up @@ -87,7 +90,6 @@ def test_baza_modelu_odpowiedzialnosci_autorow_dyscyplina_okresl_dyscypline(
typy_odpowiedzialnosci,
rok,
):

wca = wydawnictwo_ciagle.dodaj_autora(
autor_jan_kowalski, jednostka, zapisany_jako="Kowalski"
)
Expand Down Expand Up @@ -362,3 +364,24 @@ def test_eksport_pbn_open_access(wydawnictwo_zwarte, openaccess_data):
toplevel = Element("test")
wydawnictwo_zwarte.eksport_pbn_open_access(toplevel)
assert len(toplevel.getchildren()[0].getchildren()) == 6


@pytest.mark.parametrize(
"input,exp_rok,exp_tom,exp_nr",
[
("1960", "1960", None, None),
("1960 t. 8", "1960", "8", None),
("1960 t 8", "1960", "8", None),
("1960 nr 2", "1960", None, "2"),
("1960 nr. 2", "1960", None, "2"),
("1960 t. 8 nr 2", "1960", "8", "2"),
("1960 T. 8 nr 2", "1960", "8", "2"),
("1960 T.8nr2", "1960", "8", "2"),
("1960 T.8 nr 2", "1960", "8", "2"),
],
)
def test_parse_informacje(input, exp_rok, exp_tom, exp_nr):
res = parse_informacje_as_dict(input)
assert res.get("rok") == exp_rok
assert res.get("tom") == exp_tom
assert res.get("numer") == exp_nr
5 changes: 4 additions & 1 deletion src/import_dbf/Makefile
@@ -1,4 +1,3 @@

NAZWA_OBCEJ_JEDNOSTKI=obcy

PSQL=psql -q -t --echo-errors bpp | grep -v "INSERT 0 1"
Expand Down Expand Up @@ -37,6 +36,7 @@ integruj-dbf-publikacje: get-assets
$(MANAGE) integruj_dbf --enable-charakter-kbn-jezyk --charaktery-enrichment-xls $(ASSETS_DIR)/bg-umw/charaktery_formalne.xlsx
$(MANAGE) integruj_dbf --enable-zrodlo
$(MANAGE) rozszerz_skroty_zrodel $(ASSETS_DIR)/bg-umw/zrodla.xlsx
$(PG_DUMP) > pre-integruj-dbf-enable-publikacja.sql
$(MANAGE) integruj_dbf --enable-publikacja > integruj-dbf-publikacja-log.txt
$(MANAGE) integruj_dbf --enable-zatwierdz-podwojne-przypisania
$(MANAGE) integruj_dbf --enable-b-a
Expand Down Expand Up @@ -97,6 +97,9 @@ import-dbf: recreate-db import-converted-dbfs alter-schema create-bib-desc
restore-import-dbf-state: dropdb-createdb
cat post-import-dbf.sql | $(PSQL)

restore-pre-integruj-publikacje-state: dropdb-createdb
cat pre-integruj-dbf-enable-publikacja.sql | $(PSQL)

integruj-liste-wydawcow: get-assets
$(MANAGE) import_wydawca_poziom $(ASSETS_DIR)/poziomy-wydawcow-2017-2020.xlsx
$(MANAGE) import_wydawca_alias $(ASSETS_DIR)/bg-umw/aliasy_wydawcow.xlsx
Expand Down
24 changes: 23 additions & 1 deletion src/import_dbf/management/commands/integruj_dbf.py
Expand Up @@ -43,6 +43,8 @@ def add_arguments(self, parser):
parser.add_argument("--uczelnia", type=str, default="Domyślna Uczelnia")
parser.add_argument("--skrot", type=str, default="DU")

parser.add_argument("--disable-multithreading", action="store_true")

parser.add_argument("--enable-all", action="store_true")
parser.add_argument("--disable-transaction", action="store_true")

Expand All @@ -68,7 +70,14 @@ def add_arguments(self, parser):
parser.add_argument("--enable-dodaj-aktualnosc", action="store_true")

def handle(
self, uczelnia, skrot, enable_all, disable_transaction, *args, **options
self,
uczelnia,
skrot,
enable_all,
disable_transaction,
disable_multithreading,
*args,
**options
):
verbosity = int(options["verbosity"])
logger = logging.getLogger("django")
Expand All @@ -83,6 +92,19 @@ def handle(
num_proc = int(floor(cpu_count * 0.875)) or 1
pool = multiprocessing.Pool(processes=num_proc)

if disable_multithreading:

def apply(fun, args):
return fun(*args)

pool.apply = apply

def starmap(fun, lst):
for elem in lst:
fun(*elem)

pool.starmap = starmap

pool.apply(integruj_uczelnia, (uczelnia, skrot))

if enable_all or options["enable_wydzial"]:
Expand Down

0 comments on commit c6969b2

Please sign in to comment.