• 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

46.88
src/bpp_setup_wizard/forms.py
1
from django import forms
1✔
2
from django.contrib.auth import get_user_model
1✔
3
from django.contrib.auth.forms import UserCreationForm
1✔
4
from django.core.exceptions import ValidationError
1✔
5

6
from bpp.models import Uczelnia
1✔
7

8
BppUser = get_user_model()
1✔
9

10

11
class SetupAdminForm(UserCreationForm):
1✔
12
    """Form for creating the initial admin user during setup."""
13

14
    username = forms.CharField(
1✔
15
        max_length=150,
16
        required=True,
17
        label="Nazwa użytkownika",
18
        help_text="Wymagane. 150 znaków lub mniej. Tylko litery, cyfry oraz @/./+/-/_.",
19
        widget=forms.TextInput(attrs={"class": "form-control", "placeholder": "admin"}),
20
    )
21

22
    email = forms.EmailField(
1✔
23
        required=True,
24
        label="Adres email",
25
        help_text="Wymagane. Adres email administratora systemu.",
26
        widget=forms.EmailInput(
27
            attrs={"class": "form-control", "placeholder": "admin@example.com"}
28
        ),
29
    )
30

31
    password1 = forms.CharField(
1✔
32
        label="Hasło",
33
        widget=forms.PasswordInput(
34
            attrs={"class": "form-control", "placeholder": "Wprowadź hasło"}
35
        ),
36
        help_text="Hasło powinno być silne i bezpieczne.",
37
    )
38

39
    password2 = forms.CharField(
1✔
40
        label="Powtórz hasło",
41
        widget=forms.PasswordInput(
42
            attrs={"class": "form-control", "placeholder": "Powtórz hasło"}
43
        ),
44
        help_text="Wprowadź to samo hasło dla weryfikacji.",
45
    )
46

47
    class Meta:
1✔
48
        model = BppUser
1✔
49
        fields = ("username", "email", "password1", "password2")
1✔
50

51
    def clean(self):
1✔
UNCOV
52
        cleaned_data = super().clean()
×
53

54
        # Check if any users exist
UNCOV
55
        if BppUser.objects.exists():
×
56
            raise ValidationError(
×
57
                "Kreator konfiguracji może być uruchomiony tylko na pustej bazie danych."
58
            )
59

UNCOV
60
        return cleaned_data
×
61

62
    def save(self, commit=True):
1✔
UNCOV
63
        user = super().save(commit=False)
×
UNCOV
64
        user.email = self.cleaned_data["email"]
×
UNCOV
65
        user.is_staff = True
×
UNCOV
66
        user.is_superuser = True
×
UNCOV
67
        user.is_active = True
×
68

UNCOV
69
        if commit:
×
UNCOV
70
            user.save()
×
71

UNCOV
72
        return user
×
73

74

75
class UczelniaSetupForm(forms.ModelForm):
1✔
76
    """Form for creating the initial Uczelnia (University) configuration."""
77

78
    PBN_API_CHOICES = [
1✔
79
        (
80
            "https://pbn-micro-alpha.opi.org.pl",
81
            "Dostęp TESTOWY (https://pbn-micro-alpha.opi.org.pl)",
82
        ),
83
        ("https://pbn.nauka.gov.pl", "Dostęp PRODUKCYJNY (https://pbn.nauka.gov.pl)"),
84
    ]
85

86
    nazwa = forms.CharField(
1✔
87
        max_length=512,
88
        required=True,
89
        label="Nazwa uczelni",
90
        help_text="Pełna nazwa instytucji",
91
        widget=forms.TextInput(
92
            attrs={"class": "form-control", "placeholder": "np. Uniwersytet Lubelski"}
93
        ),
94
    )
95

96
    nazwa_dopelniacz_field = forms.CharField(
1✔
97
        max_length=512,
98
        required=True,
99
        label="Nazwa w dopełniaczu",
100
        help_text="Odmiana nazwy przez przypadki (dopełniacz)",
101
        widget=forms.TextInput(
102
            attrs={
103
                "class": "form-control",
104
                "placeholder": "np. Uniwersytetu Lubelskiego",
105
            }
106
        ),
107
    )
108

109
    skrot = forms.CharField(
1✔
110
        max_length=32,
111
        required=True,
112
        label="Skrót uczelni",
113
        help_text="Skrót nazwy instytucji",
114
        widget=forms.TextInput(
115
            attrs={"class": "form-control", "placeholder": "np. UL"}
116
        ),
117
    )
118

119
    pbn_api_root = forms.ChoiceField(
1✔
120
        choices=PBN_API_CHOICES,
121
        required=True,
122
        label="Środowisko PBN",
123
        help_text="Wybierz środowisko testowe lub produkcyjne",
124
        widget=forms.Select(attrs={"class": "form-control"}),
125
    )
126

127
    pbn_app_name = forms.CharField(
1✔
128
        max_length=128,
129
        required=False,
130
        label="Nazwa aplikacji w PBN",
131
        help_text="Nazwa aplikacji zarejestrowanej w systemie PBN",
132
        widget=forms.TextInput(
133
            attrs={
134
                "class": "form-control",
135
                "placeholder": "Nazwa aplikacji otrzymana z PBN",
136
            }
137
        ),
138
    )
139

140
    pbn_app_token = forms.CharField(
1✔
141
        max_length=128,
142
        required=False,
143
        label="Token aplikacji w PBN",
144
        help_text="Token autoryzacyjny aplikacji w systemie PBN",
145
        widget=forms.TextInput(
146
            attrs={"class": "form-control", "placeholder": "Token otrzymany z PBN"}
147
        ),
148
    )
149

150
    uzywaj_wydzialow = forms.BooleanField(
1✔
151
        required=False,
152
        initial=True,
153
        label="Używaj wydziałów",
154
        help_text="Czy struktura uczelni jest 3-poziomowa: uczelnia -> wydział -> jednostka?",
155
        widget=forms.CheckboxInput(attrs={"class": "form-check-input"}),
156
    )
157

158
    class Meta:
1✔
159
        model = Uczelnia
1✔
160
        fields = [
1✔
161
            "nazwa",
162
            "nazwa_dopelniacz_field",
163
            "skrot",
164
            "pbn_api_root",
165
            "pbn_app_name",
166
            "pbn_app_token",
167
            "uzywaj_wydzialow",
168
        ]
169

170
    def clean(self):
1✔
UNCOV
171
        cleaned_data = super().clean()
×
172

173
        # Check if any Uczelnia exists
UNCOV
174
        if Uczelnia.objects.exists():
×
175
            raise ValidationError(
×
176
                "Uczelnia została już skonfigurowana. "
177
                "Kreator konfiguracji uczelni może być uruchomiony tylko raz."
178
            )
179

UNCOV
180
        return cleaned_data
×
181

182
    def save(self, commit=True):
1✔
UNCOV
183
        uczelnia = super().save(commit=False)
×
184

185
        # Set the fields that should always be True
UNCOV
186
        uczelnia.pbn_api_kasuj_przed_wysylka = (
×
187
            True  # Kasuj oświadczenia przed wysłaniem do PBN
188
        )
UNCOV
189
        uczelnia.pbn_api_nie_wysylaj_prac_bez_pk = (
×
190
            True  # Nie wysyłaj do PBN prac z PK=0
191
        )
UNCOV
192
        uczelnia.pbn_api_afiliacja_zawsze_na_uczelnie = (
×
193
            True  # Wysyłaj zawsze UID uczelni jako afiliacje
194
        )
UNCOV
195
        uczelnia.pbn_wysylaj_bez_oswiadczen = True  # Wysyłaj prace bez oświadczeń
×
UNCOV
196
        uczelnia.pbn_integracja = True  # Używać integracji z PBN
×
UNCOV
197
        uczelnia.pbn_aktualizuj_na_biezaco = (
×
198
            True  # Włącz opcjonalną aktualizację przy edycji
199
        )
200

UNCOV
201
        if commit:
×
UNCOV
202
            uczelnia.save()
×
203

UNCOV
204
        return uczelnia
×
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