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

iplweb / bpp / 18634744198

19 Oct 2025 07:00PM UTC coverage: 31.618% (-29.9%) from 61.514%
18634744198

push

github

mpasternak
Merge branch 'release/v202510.1270'

657 of 9430 branches covered (6.97%)

Branch coverage included in aggregate %.

229 of 523 new or added lines in 42 files covered. (43.79%)

11303 existing lines in 316 files now uncovered.

14765 of 39346 relevant lines covered (37.53%)

0.38 hits per line

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

12.77
src/bpp/core.py
1
from django.db.models import F
1✔
2

3
from bpp.util import knapsack
1✔
4

5

6
def zbieraj_sloty(
1✔
7
    autor_id,
8
    zadany_slot,
9
    rok_min,
10
    rok_max,
11
    minimalny_pk=None,
12
    dyscyplina_id=None,
13
    jednostka_id=None,
14
    akcja=None,
15
):
UNCOV
16
    from bpp.models.cache import Cache_Punktacja_Autora_Query
×
17

UNCOV
18
    rekordy = Cache_Punktacja_Autora_Query.objects.filter(
×
19
        rekord__rok__gte=rok_min, rekord__rok__lte=rok_max, autor_id=autor_id
20
    )
UNCOV
21
    if dyscyplina_id is not None:
×
UNCOV
22
        rekordy = rekordy.filter(dyscyplina_id=dyscyplina_id)
×
23

UNCOV
24
    if jednostka_id is not None:
×
UNCOV
25
        rekordy = rekordy.filter(jednostka_id=jednostka_id)
×
26

UNCOV
27
    if minimalny_pk is not None:
×
UNCOV
28
        rekordy = rekordy.filter(rekord__punkty_kbn__gte=minimalny_pk)
×
29

UNCOV
30
    res = [
×
31
        (name, int(size), int(value))
32
        for name, size, value in rekordy.values_list(
33
            "pk", F("slot") * 10000, F("pkdaut") * 10000
34
        )
35
    ]  # name, size, value
36

UNCOV
37
    id_wpisow_cpaq = [x[0] for x in res]
×
UNCOV
38
    sloty = [x[1] for x in res]
×
UNCOV
39
    punkty = [x[2] for x in res]
×
40

UNCOV
41
    if akcja == "wszystko":
×
UNCOV
42
        return sum(punkty) / 10000, id_wpisow_cpaq, sum(sloty) / 10000
×
43

UNCOV
44
    maks, lista = knapsack(int(zadany_slot * 10000), sloty, punkty, id_wpisow_cpaq)
×
45

UNCOV
46
    sloty_ret = 0
×
UNCOV
47
    for elem in lista:
×
UNCOV
48
        index = id_wpisow_cpaq.index(elem)
×
UNCOV
49
        sloty_ret += sloty[index]
×
50

UNCOV
51
    return maks / 10000, lista, sloty_ret / 10000
×
52

53

54
def group_emails(group_name):
1✔
55
    "Zwraca maile osób z danej grupy"
UNCOV
56
    from bpp.models.profile import BppUser
×
57

UNCOV
58
    return (
×
59
        BppUser.objects.filter(groups__name=group_name)
60
        .exclude(email="")
61
        .exclude(email=None)
62
        .exclude(email="brak@email.pl")
63
        .values_list("email", flat=True)
64
        .distinct()
65
    )
66

67

68
def editors_emails():
1✔
69
    # E-maile redaktorów -- osób, które mają grupę "wprowadzanie danych"
UNCOV
70
    from bpp.const import GR_WPROWADZANIE_DANYCH
×
71

UNCOV
72
    return group_emails(GR_WPROWADZANIE_DANYCH)
×
73

74

75
def zgloszenia_publikacji_emails():
1✔
UNCOV
76
    from bpp.const import GR_ZGLOSZENIA_PUBLIKACJI
×
77

UNCOV
78
    ret = group_emails(GR_ZGLOSZENIA_PUBLIKACJI)
×
UNCOV
79
    if ret:
×
UNCOV
80
        return ret
×
81

82
    # W sytuacji gdy grupa "zgłoszenia publikacji" nie ma żadnych użytkowników
83
    # e-mail zostaje wysłany do redaktorów
UNCOV
84
    return editors_emails()
×
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