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

iplweb / bpp / f77eb09d-4388-431e-b9f3-4fc7a8822640

28 Aug 2025 08:13PM UTC coverage: 39.949% (-3.5%) from 43.402%
f77eb09d-4388-431e-b9f3-4fc7a8822640

push

circleci

mpasternak
Whatever

16244 of 40662 relevant lines covered (39.95%)

0.74 hits per line

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

89.71
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 ewaluacja_liczba_n.models import (
2✔
16
    IloscUdzialowDlaAutora_2022_2025,
17
    LiczbaNDlaUczelni_2022_2025,
18
)
19
from formdefaults.models import FormFieldRepresentation, FormRepresentation
2✔
20
from miniblog.models import Article
2✔
21
from pbn_api.models import (
2✔
22
    Conference,
23
    Discipline,
24
    Institution,
25
    Journal,
26
    OswiadczenieInstytucji,
27
    Publication,
28
    Publisher,
29
    Scientist,
30
    SentData,
31
)
32
from pbn_api.models.discipline import DisciplineGroup
2✔
33
from rozbieznosci_dyscyplin.models import RozbieznosciView, RozbieznosciZrodelView
2✔
34
from zglos_publikacje.models import (
2✔
35
    Obslugujacy_Zgloszenia_Wydzialow,
36
    Zgloszenie_Publikacji,
37
    Zgloszenie_Publikacji_Autor,
38
)
39

40
from django.contrib.auth import get_user_model
2✔
41
from django.contrib.auth.models import Group, Permission
2✔
42
from django.contrib.contenttypes.models import ContentType
2✔
43
from django.contrib.sites.models import Site
2✔
44

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

111
User = get_user_model()
2✔
112

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

217
# Słownik na podstawie którego dodajemy użytkowników z danej grupy automatycznie
218
# do innej:
219
groups_auto_add = {
2✔
220
    GR_WPROWADZANIE_DANYCH: [
221
        GR_RAPORTY_WYSWIETLANIE,
222
    ]
223
}
224

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

227
DISALLOW_URLS = [
2✔
228
    "/multiseek/",
229
    "/bpp/raporty/",
230
    "/eksport_pbn/",
231
    "/admin/",
232
    "/integrator2/",
233
    "/password_change/",
234
]
235

236

237
def ustaw_robots_txt(**kwargs):
2✔
238
    urls = set()
2✔
239
    for elem in DISALLOW_URLS:
2✔
240
        url, _ignore = Url.objects.get_or_create(pattern=elem)
2✔
241
        urls.add(url)
2✔
242

243
    cnt = Site.objects.all().count()
2✔
244
    if cnt != 1:
2✔
245
        raise Exception("Not supported count=%i" % cnt)
×
246

247
    r, _ignore = Rule.objects.get_or_create(robot="*")
2✔
248
    r.sites.add(Site.objects.all()[0])
2✔
249
    for elem in DISALLOW_URLS:
2✔
250
        r.disallowed.add(Url.objects.get(pattern=elem))
2✔
251
    r.save()
2✔
252

253

254
@transaction.atomic
2✔
255
def odtworz_grupy(**kwargs):
2✔
256
    grp_dict = {}
2✔
257
    for u in BppUser.objects.all():
2✔
258
        grp_dict[u] = [grp.name for grp in u.groups.all()]
×
259

260
    for name, models in list(groups.items()):
2✔
261
        try:
2✔
262
            Group.objects.get(name=name).delete()
2✔
263
        except Group.DoesNotExist:
2✔
264
            pass
2✔
265

266
        g = Group.objects.create(name=name)
2✔
267
        for model in models:
2✔
268
            content_type = ContentType.objects.get_for_model(model)
2✔
269
            for permission in Permission.objects.filter(content_type=content_type):
2✔
270
                g.permissions.add(permission)
2✔
271

272
    for u, grps in list(grp_dict.items()):
2✔
273
        for gname in grps:
×
274
            u.groups.add(Group.objects.get(name=gname))
×
275
            if gname in groups_auto_add:
×
276
                for extra_group in groups_auto_add[gname]:
×
277
                    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