• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

iplweb / bpp / 7cc51f57-696c-4e24-b7c6-e519e63d08ef

20 Aug 2025 07:40PM UTC coverage: 43.324% (+3.6%) from 39.761%
7cc51f57-696c-4e24-b7c6-e519e63d08ef

push

circleci

mpasternak
Merge branch 'release/v202508.1191'

5 of 5 new or added lines in 2 files covered. (100.0%)

1828 existing lines in 117 files now uncovered.

16520 of 38131 relevant lines covered (43.32%)

0.78 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

42.11
src/bpp/views/api/__init__.py
1
from django.db import transaction
2✔
2
from django.http import JsonResponse
2✔
3
from django.http.response import HttpResponseNotFound
2✔
4
from django.views.generic import View
2✔
5

6
from bpp.models import Autor, Autor_Dyscyplina, Uczelnia, Zrodlo
2✔
7
from bpp.models.abstract import POLA_PUNKTACJI
2✔
8
from bpp.models.praca_habilitacyjna import Praca_Habilitacyjna
2✔
9
from bpp.models.zrodlo import Punktacja_Zrodla
2✔
10

11

12
class RokHabilitacjiView(View):
2✔
13
    def post(self, request, *args, **kw):
2✔
14
        try:
×
15
            autor = Autor.objects.get(pk=int(request.POST.get("autor_pk")))
×
16
        except Autor.DoesNotExist:
×
17
            return HttpResponseNotFound("Autor")
×
18

19
        try:
×
20
            habilitacja = autor.praca_habilitacyjna
×
21
        except Praca_Habilitacyjna.DoesNotExist:
×
22
            return HttpResponseNotFound("Habilitacja")
×
23

24
        return JsonResponse({"rok": habilitacja.rok})
×
25

26

27
class PunktacjaZrodlaView(View):
2✔
28
    def post(self, request, zrodlo_id, rok, *args, **kw):
2✔
29

30
        try:
×
31
            z = Zrodlo.objects.get(pk=zrodlo_id)
×
32
        except Zrodlo.DoesNotExist:
×
33
            return HttpResponseNotFound("Zrodlo")
×
34

35
        try:
×
36
            pz = Punktacja_Zrodla.objects.get(zrodlo=z, rok=rok)
×
37
        except Punktacja_Zrodla.DoesNotExist:
×
38
            return HttpResponseNotFound("Rok")
×
39

40
        # d = dict([(pole, str(getattr(pz, pole))) for pole in POLA_PUNKTACJI])
41
        d = {pole: getattr(pz, pole) for pole in POLA_PUNKTACJI}
×
42
        return JsonResponse(d)
×
43

44

45
class UploadPunktacjaZrodlaView(View):
2✔
46
    def ok(self):
2✔
47
        return JsonResponse({"result": "ok"})
×
48

49
    @transaction.atomic
2✔
50
    def post(self, request, zrodlo_id, rok, *args, **kw):
2✔
51
        try:
×
52
            z = Zrodlo.objects.get(pk=zrodlo_id)
×
53
        except Zrodlo.DoesNotExist:
×
54
            return HttpResponseNotFound("Zrodlo")
×
55

56
        kw_punktacji = {}
×
57
        for element in list(request.POST.keys()):
×
58
            if element in POLA_PUNKTACJI:
×
59
                if request.POST.get(element) != "":
×
60
                    kw_punktacji[element] = request.POST.get(element) or "0.0"
×
61

62
        try:
×
63
            pz = Punktacja_Zrodla.objects.get(zrodlo=z, rok=rok)
×
64
        except Punktacja_Zrodla.DoesNotExist:
×
65
            Punktacja_Zrodla.objects.create(zrodlo=z, rok=rok, **kw_punktacji)
×
66
            return self.ok()
×
67

68
        if request.POST.get("overwrite") == "1":
×
69
            for key, value in list(kw_punktacji.items()):
×
70
                setattr(pz, key, value or "0.0")
×
71
            pz.save()
×
72
            return self.ok()
×
73
        return JsonResponse(dict(result="exists"))
×
74

75

76
def ostatnia_jednostka(request, a):
2✔
UNCOV
77
    uczelnia = Uczelnia.objects.get_for_request(request)
1✔
78

UNCOV
79
    jed = a.aktualna_jednostka
1✔
UNCOV
80
    if jed is None:
1✔
81
        # Brak aktualnej jednostki, spróbuj podpowiedzieć obcą jednostkę:
UNCOV
82
        if uczelnia is None:
1✔
83
            return None
×
84

85
        else:
86
            # uczelnia is not None
UNCOV
87
            if uczelnia.obca_jednostka_id is not None:
1✔
88
                return uczelnia.obca_jednostka
×
89
    else:
90
        return jed
×
91

92

93
def ostatnia_dyscyplina(request, a, rok):
2✔
UNCOV
94
    uczelnia = Uczelnia.objects.get_for_request(request)
1✔
95

UNCOV
96
    if uczelnia is not None and uczelnia.podpowiadaj_dyscypliny and rok:
1✔
UNCOV
97
        ad = Autor_Dyscyplina.objects.filter(autor=a, rok=rok)
1✔
98

UNCOV
99
        if ad.exists():
1✔
100
            # Jest wpis Autor_Dyscyplina dla tego autora i roku.
UNCOV
101
            ad = ad.first()
×
UNCOV
102
            if (
×
103
                ad.dyscyplina_naukowa_id is not None
104
                and ad.subdyscyplina_naukowa_id is not None
105
            ):
106
                return None
×
107

UNCOV
108
            return ad.dyscyplina_naukowa or ad.subdyscyplina_naukowa
×
109

110

111
class OstatniaJednostkaIDyscyplinaView(View):
2✔
112
    """Zwraca jako JSON ostatnią jednostkę danego autora oraz ewentualnie jego
113
    dyscyplinę naukową, w sytuacji gdy jest ona jedna i określona na dany rok.
114
    """
115

116
    def post(self, request, *args, **kw):
2✔
UNCOV
117
        try:
1✔
UNCOV
118
            a = Autor.objects.get(pk=int(request.POST.get("autor_id", None)))
1✔
119
        except (Autor.DoesNotExist, TypeError, ValueError):
×
120
            return JsonResponse({"status": "error", "reason": "autor nie istnieje"})
×
121

UNCOV
122
        ost_jed = ostatnia_jednostka(request, a)
1✔
123

UNCOV
124
        ret = {}
1✔
125

UNCOV
126
        if ost_jed is None:
1✔
UNCOV
127
            ret.update(dict(jednostka_id=None, nazwa=None, status="ok"))
1✔
128
        else:
129
            ret.update(
×
130
                dict(
131
                    jednostka_id=ost_jed.pk,
132
                    nazwa=ost_jed.nazwa,
133
                    status="ok",
134
                )
135
            )
136

UNCOV
137
        try:
1✔
UNCOV
138
            rok = int(request.POST.get("rok"))
1✔
139
        except (TypeError, ValueError):
×
140
            rok = None
×
141

UNCOV
142
        ost_dys = ostatnia_dyscyplina(request, a, rok)
1✔
143

UNCOV
144
        if ost_dys is not None:
1✔
UNCOV
145
            ret["dyscyplina_nazwa"] = ost_dys.nazwa
×
UNCOV
146
            ret["dyscyplina_id"] = ost_dys.pk
×
UNCOV
147
            ret["status"] = "ok"
×
148

UNCOV
149
        return JsonResponse(ret)
1✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc