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

iplweb / bpp / f67b492b-b064-4c21-a1ac-283aaab31941

11 Aug 2025 01:20PM UTC coverage: 45.399%. Remained the same
f67b492b-b064-4c21-a1ac-283aaab31941

push

circleci

mpasternak
Merge tag 'v202508.1187' into dev

Nowa wersja: v202508.1187 v202508.1187

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

5 existing lines in 1 file now uncovered.

17251 of 37999 relevant lines covered (45.4%)

0.82 hits per line

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

89.55
src/bpp/system.py
1
"""Ustawienia systemowe
2

3
groups - lista grup wraz z uprawnieniami do edycji poszczególnych obiektów.
4
"""
5

6
from dbtemplates.models import Template
2✔
7
from django.db import transaction
2✔
8
from favicon.models import Favicon, FaviconImg
2✔
9
from flexible_reports import models as flexible_models
2✔
10
from multiseek.models import SearchForm
2✔
11
from robots.models import Rule, Url
2✔
12

13
from dynamic_columns.models import ModelAdmin, ModelAdminColumn
2✔
14
from ewaluacja2021.models import IloscUdzialowDlaAutora, LiczbaNDlaUczelni
2✔
15
from formdefaults.models import FormFieldRepresentation, FormRepresentation
2✔
16
from miniblog.models import Article
2✔
17
from pbn_api.models import (
2✔
18
    Conference,
19
    Discipline,
20
    Institution,
21
    Journal,
22
    OswiadczenieInstytucji,
23
    Publication,
24
    Publisher,
25
    Scientist,
26
    SentData,
27
)
28
from pbn_api.models.discipline import DisciplineGroup
2✔
29
from rozbieznosci_dyscyplin.models import RozbieznosciView, RozbieznosciZrodelView
2✔
30
from zglos_publikacje.models import (
2✔
31
    Obslugujacy_Zgloszenia_Wydzialow,
32
    Zgloszenie_Publikacji,
33
    Zgloszenie_Publikacji_Autor,
34
)
35

36
from django.contrib.auth import get_user_model
2✔
37
from django.contrib.auth.models import Group, Permission
2✔
38
from django.contrib.contenttypes.models import ContentType
2✔
39
from django.contrib.sites.models import Site
2✔
40

41
from bpp.const import (
2✔
42
    GR_RAPORTY_WYSWIETLANIE,
43
    GR_WPROWADZANIE_DANYCH,
44
    GR_ZGLOSZENIA_PUBLIKACJI,
45
)
46
from bpp.models import (
2✔
47
    Autor,
48
    Autor_Dyscyplina,
49
    Autor_Jednostka,
50
    BppMultiseekVisibility,
51
    Charakter_Formalny,
52
    Crossref_Mapper,
53
    Dyscyplina_Naukowa,
54
    Dyscyplina_Zrodla,
55
    Element_Repozytorium,
56
    Funkcja_Autora,
57
    Grant,
58
    Grant_Rekordu,
59
    Grupa_Pracownicza,
60
    Jednostka,
61
    Jezyk,
62
    Kierunek_Studiow,
63
    Patent,
64
    Patent_Autor,
65
    Praca_Doktorska,
66
    Praca_Habilitacyjna,
67
    Punktacja_Zrodla,
68
    Redakcja_Zrodla,
69
    Rodzaj_Prawa_Patentowego,
70
    Rodzaj_Zrodla,
71
    Status_Korekty,
72
    Typ_KBN,
73
    Typ_Odpowiedzialnosci,
74
    Tytul,
75
    Uczelnia,
76
    Ukryj_Status_Korekty,
77
    Wydawnictwo_Ciagle,
78
    Wydawnictwo_Ciagle_Autor,
79
    Wydawnictwo_Ciagle_Streszczenie,
80
    Wydawnictwo_Ciagle_Zewnetrzna_Baza_Danych,
81
    Wydawnictwo_Zwarte,
82
    Wydawnictwo_Zwarte_Autor,
83
    Wydawnictwo_Zwarte_Streszczenie,
84
    Wydawnictwo_Zwarte_Zewnetrzna_Baza_Danych,
85
    Wydzial,
86
    Wymiar_Etatu,
87
    Zewnetrzna_Baza_Danych,
88
    Zrodlo,
89
    Zrodlo_Informacji,
90
)
91
from bpp.models.konferencja import Konferencja
2✔
92
from bpp.models.nagroda import Nagroda, OrganPrzyznajacyNagrody
2✔
93
from bpp.models.openaccess import (
2✔
94
    Czas_Udostepnienia_OpenAccess,
95
    Licencja_OpenAccess,
96
    Tryb_OpenAccess_Wydawnictwo_Ciagle,
97
    Tryb_OpenAccess_Wydawnictwo_Zwarte,
98
    Wersja_Tekstu_OpenAccess,
99
)
100
from bpp.models.praca_habilitacyjna import Publikacja_Habilitacyjna
2✔
101
from bpp.models.profile import BppUser
2✔
102
from bpp.models.seria_wydawnicza import Seria_Wydawnicza
2✔
103
from bpp.models.struktura import Jednostka_Wydzial
2✔
104
from bpp.models.system import Charakter_PBN
2✔
105
from bpp.models.wydawca import Poziom_Wydawcy, Wydawca
2✔
106

107
User = get_user_model()
2✔
108

109
groups = {
2✔
110
    "dane systemowe": [
111
        Charakter_Formalny,
112
        Crossref_Mapper,
113
        Kierunek_Studiow,
114
        Charakter_PBN,
115
        Funkcja_Autora,
116
        Zrodlo_Informacji,
117
        Jezyk,
118
        Typ_Odpowiedzialnosci,
119
        Rodzaj_Zrodla,
120
        Status_Korekty,
121
        Tytul,
122
        Typ_KBN,
123
        Tryb_OpenAccess_Wydawnictwo_Ciagle,
124
        Tryb_OpenAccess_Wydawnictwo_Zwarte,
125
        Czas_Udostepnienia_OpenAccess,
126
        Licencja_OpenAccess,
127
        Wersja_Tekstu_OpenAccess,
128
        OrganPrzyznajacyNagrody,
129
        Rodzaj_Prawa_Patentowego,
130
        Dyscyplina_Naukowa,
131
        Zewnetrzna_Baza_Danych,
132
        Grant,
133
        FormFieldRepresentation,
134
        FormRepresentation,
135
        Grupa_Pracownicza,
136
        Wymiar_Etatu,
137
        Journal,
138
        Institution,
139
        Conference,
140
        Publisher,
141
        Scientist,
142
        SentData,
143
        Discipline,
144
        Publication,
145
        OswiadczenieInstytucji,
146
        DisciplineGroup,
147
        BppMultiseekVisibility,
148
    ],
149
    "struktura": [
150
        Uczelnia,
151
        LiczbaNDlaUczelni,
152
        Wydzial,
153
        Jednostka,
154
        Jednostka_Wydzial,
155
        Ukryj_Status_Korekty,
156
    ],
157
    GR_WPROWADZANIE_DANYCH: [
158
        Zrodlo,
159
        Autor,
160
        Autor_Dyscyplina,
161
        Wydawnictwo_Ciagle,
162
        Wydawnictwo_Zwarte,
163
        Punktacja_Zrodla,
164
        Dyscyplina_Zrodla,
165
        Wydawnictwo_Ciagle_Autor,
166
        Wydawnictwo_Zwarte_Autor,
167
        Autor_Jednostka,
168
        Redakcja_Zrodla,
169
        Praca_Doktorska,
170
        Praca_Habilitacyjna,
171
        Patent,
172
        Patent_Autor,
173
        Publikacja_Habilitacyjna,
174
        Konferencja,
175
        Seria_Wydawnicza,
176
        Nagroda,
177
        Wydawnictwo_Ciagle_Zewnetrzna_Baza_Danych,
178
        Wydawnictwo_Ciagle_Streszczenie,
179
        Wydawnictwo_Zwarte_Zewnetrzna_Baza_Danych,
180
        Wydawnictwo_Zwarte_Streszczenie,
181
        Wydawca,
182
        Poziom_Wydawcy,
183
        Grant_Rekordu,
184
        Element_Repozytorium,
185
        IloscUdzialowDlaAutora,
186
        RozbieznosciView,
187
        RozbieznosciZrodelView,
188
    ],
189
    "indeks autorów": [Autor, Autor_Jednostka],
190
    "administracja": [
191
        User,
192
        Group,
193
        SearchForm,
194
        Obslugujacy_Zgloszenia_Wydzialow,
195
        ModelAdminColumn,
196
        ModelAdmin,
197
    ],
198
    "web": [Url, Rule, Site, Favicon, FaviconImg, Article, Template],
199
    "raporty": [
200
        flexible_models.Report,
201
        flexible_models.ReportElement,
202
        flexible_models.Table,
203
        flexible_models.Column,
204
        flexible_models.Datasource,
205
        flexible_models.ColumnOrder,
206
    ],
207
    GR_ZGLOSZENIA_PUBLIKACJI: [Zgloszenie_Publikacji, Zgloszenie_Publikacji_Autor],
208
    GR_RAPORTY_WYSWIETLANIE: [],
209
}
210

211
# Słownik na podstawie którego dodajemy użytkowników z danej grupy automatycznie
212
# do innej:
213
groups_auto_add = {
2✔
214
    GR_WPROWADZANIE_DANYCH: [
215
        GR_RAPORTY_WYSWIETLANIE,
216
    ]
217
}
218

219
# Po migracji, upewnij się że robots.txt są generowane poprawnie
220

221
DISALLOW_URLS = [
2✔
222
    "/multiseek/",
223
    "/bpp/raporty/",
224
    "/eksport_pbn/",
225
    "/admin/",
226
    "/integrator2/",
227
    "/password_change/",
228
]
229

230

231
def ustaw_robots_txt(**kwargs):
2✔
232
    urls = set()
2✔
233
    for elem in DISALLOW_URLS:
2✔
234
        url, _ignore = Url.objects.get_or_create(pattern=elem)
2✔
235
        urls.add(url)
2✔
236

237
    cnt = Site.objects.all().count()
2✔
238
    if cnt != 1:
2✔
UNCOV
239
        raise Exception("Not supported count=%i" % cnt)
×
240

241
    r, _ignore = Rule.objects.get_or_create(robot="*")
2✔
242
    r.sites.add(Site.objects.all()[0])
2✔
243
    for elem in DISALLOW_URLS:
2✔
244
        r.disallowed.add(Url.objects.get(pattern=elem))
2✔
245
    r.save()
2✔
246

247

248
@transaction.atomic
2✔
249
def odtworz_grupy(**kwargs):
2✔
250
    grp_dict = {}
2✔
251
    for u in BppUser.objects.all():
2✔
UNCOV
252
        grp_dict[u] = [grp.name for grp in u.groups.all()]
×
253

254
    for name, models in list(groups.items()):
2✔
255
        try:
2✔
256
            Group.objects.get(name=name).delete()
2✔
257
        except Group.DoesNotExist:
2✔
258
            pass
2✔
259

260
        g = Group.objects.create(name=name)
2✔
261
        for model in models:
2✔
262
            content_type = ContentType.objects.get_for_model(model)
2✔
263
            for permission in Permission.objects.filter(content_type=content_type):
2✔
264
                g.permissions.add(permission)
2✔
265

266
    for u, grps in list(grp_dict.items()):
2✔
267
        for gname in grps:
×
268
            u.groups.add(Group.objects.get(name=gname))
×
UNCOV
269
            if gname in groups_auto_add:
×
UNCOV
270
                for extra_group in groups_auto_add[gname]:
×
UNCOV
271
                    u.groups.add(Group.objects.get(name=extra_group))
×
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