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

iplweb / bpp / 41ff093e-4953-4f2d-8b1b-8eaa3e2057e0

21 Aug 2025 07:04PM UTC coverage: 46.337% (+6.5%) from 39.798%
41ff093e-4953-4f2d-8b1b-8eaa3e2057e0

push

circleci

mpasternak
Merge branch 'release/v202508.1198'

1 of 1 new or added line in 1 file covered. (100.0%)

1551 existing lines in 84 files now uncovered.

17672 of 38138 relevant lines covered (46.34%)

1.18 hits per line

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

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

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

11

12
class RokHabilitacjiView(View):
3✔
13
    def post(self, request, *args, **kw):
3✔
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):
3✔
28
    def post(self, request, zrodlo_id, rok, *args, **kw):
3✔
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):
3✔
46
    def ok(self):
3✔
47
        return JsonResponse({"result": "ok"})
×
48

49
    @transaction.atomic
3✔
50
    def post(self, request, zrodlo_id, rok, *args, **kw):
3✔
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):
3✔
UNCOV
77
    uczelnia = Uczelnia.objects.get_for_request(request)
×
78

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

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

92

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

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

UNCOV
99
        if ad.exists():
×
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):
3✔
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):
3✔
UNCOV
117
        try:
×
UNCOV
118
            a = Autor.objects.get(pk=int(request.POST.get("autor_id", None)))
×
119
        except (Autor.DoesNotExist, TypeError, ValueError):
×
120
            return JsonResponse({"status": "error", "reason": "autor nie istnieje"})
×
121

UNCOV
122
        ost_jed = ostatnia_jednostka(request, a)
×
123

UNCOV
124
        ret = {}
×
125

UNCOV
126
        if ost_jed is None:
×
UNCOV
127
            ret.update(dict(jednostka_id=None, nazwa=None, status="ok"))
×
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:
×
UNCOV
138
            rok = int(request.POST.get("rok"))
×
139
        except (TypeError, ValueError):
×
140
            rok = None
×
141

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

UNCOV
144
        if ost_dys is not None:
×
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)
×
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