Skip to content

Commit

Permalink
Wysyłaj zakres stron do PBN API (#1176)
Browse files Browse the repository at this point in the history
  • Loading branch information
mpasternak committed Jun 14, 2022
1 parent 7b9b8bb commit 087ade0
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 1 deletion.
3 changes: 3 additions & 0 deletions HISTORY.rst
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ dev
* możliwość edycji stopki z poziou bazy danych (b/n),
* w sytuacji, gdy kolejność jednostek ustalana jest ręcznie, nie dziel strony
Struktura -> Jednostki w module redagowania na podstrony (#1211)
* umożliwiaj wygenerowanie kodu JSON wysyłanego do PBN API z linii
poleceń -- polecenie ``pbn_show_json`` (b/n),
* poprawnie wysyłaj strony do PBN API (#1176),

202205.1086
-----------
Expand Down
10 changes: 9 additions & 1 deletion src/pbn_api/adapters/wydawnictwo.py
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,15 @@ def pbn_get_json(self):
if volume:
ret["volume"] = volume

if hasattr(self.original, "zakres_stron"):
# Jeżeli pole "Strony" istnieje i ma jakąś wartość, to weź jego wartość
if hasattr(self.original, "strony"):
strony = self.original.strony
if strony:
ret["pagesFromTo"] = strony

# Jeżeli pole "Strony" było puste a mamy funkcję "zakres_stron" i ono coś zwróci,
# to weź tą wartość:
if hasattr(self.original, "zakres_stron") and not ret.get("pagesFromTo"):
zakres_stron = self.original.zakres_stron()
if zakres_stron:
ret["pagesFromTo"] = zakres_stron
Expand Down
23 changes: 23 additions & 0 deletions src/pbn_api/management/commands/pbn_show_json.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import json

from pbn_api.adapters.wydawnictwo import WydawnictwoPBNAdapter
from pbn_api.management.commands.util import PBNBaseCommand

from django.contrib.contenttypes.models import ContentType


class Command(PBNBaseCommand):
help = "pokaż kod JSON wygenerowany dla publikacji"

def add_arguments(self, parser):
super().add_arguments(parser)
parser.add_argument("model_name")
parser.add_argument("id", type=int)

def handle(self, model_name, id, *args, **kw):
obj = ContentType.objects.get(
app_label="bpp", model=model_name
).get_object_for_this_type(id=id)
adapted = WydawnictwoPBNAdapter(obj)
data = adapted.pbn_get_json()
print(json.dumps(data, indent=4, sort_keys=True))
29 changes: 29 additions & 0 deletions src/pbn_api/tests/test_adapters.py
Original file line number Diff line number Diff line change
Expand Up @@ -267,3 +267,32 @@ def test_WydawnictwoPBNAdapter_streszczenia(pbn_wydawnictwo_zwarte_ksiazka):
)
ret = WydawnictwoPBNAdapter(pbn_wydawnictwo_zwarte_ksiazka).pbn_get_json()
assert "test" in ret["languageData"]["abstracts"][0]["text"]


def test_WydawnictwoPBNAdapter_wydawnictwo_zwarte_strony(
pbn_wydawnictwo_zwarte_ksiazka,
):
pbn_wydawnictwo_zwarte_ksiazka.strony = "pincset"

ret = WydawnictwoPBNAdapter(pbn_wydawnictwo_zwarte_ksiazka).pbn_get_json()
assert "pagesFromTo" in ret


def test_WydawnictwoPBNAdapter_wydawnictwo_ciagle_strony(
pbn_wydawnictwo_ciagle_z_autorem_z_dyscyplina,
):
pbn_wydawnictwo_ciagle_z_autorem_z_dyscyplina.strony = "pincset"
ret = WydawnictwoPBNAdapter(
pbn_wydawnictwo_ciagle_z_autorem_z_dyscyplina
).pbn_get_json()
assert "pagesFromTo" in ret


def test_WydawnictwoPBNAdapter_wydawnictwo_ciagle_zakres_stron(
pbn_wydawnictwo_ciagle_z_autorem_z_dyscyplina,
):
pbn_wydawnictwo_ciagle_z_autorem_z_dyscyplina.szczegoly = "s. 20-30"
ret = WydawnictwoPBNAdapter(
pbn_wydawnictwo_ciagle_z_autorem_z_dyscyplina
).pbn_get_json()
assert "pagesFromTo" in ret

0 comments on commit 087ade0

Please sign in to comment.