Instrukcja obsługi — Zgłoszenia

Aplikacja do rejestracji klubów i zawodników przed zawodami — kto może co zrobić, jak wygląda zgłaszanie na zawody i jakie terminy obowiązują. Każdy punkt pokazuje dokładnie, gdzie w aplikacji znaleźć daną funkcję i jakie zasady nią rządzą.

1 Przegląd i role

Aplikacja ma trzy typy użytkowników:

  • Gość (niezalogowany) — widzi listę zawodów, listy startowe (nominacje) i publiczną listę zawodników do transferu.
  • Klub (konto użytkownika Django) — po zalogowaniu widzi swój Panel Klubu: może dodawać/edytować/usuwać własnych zawodników, zgłaszać ich na zawody, importować roster z pliku, żądać transferów.
  • Administrator — pełny dostęp przez Django Admin: tworzy zawody, zarządza wszystkimi klubami/zawodnikami/zgłoszeniami, zatwierdza transfery, eksportuje dane do Excela i wysyła zgłoszenia do Meet Managera.
OgraniczenieKlub nie widzi ani nie może edytować zawodników innych klubów — jedyny sposób „przejęcia” zawodnika to formalny wniosek o transfer zaakceptowany przez klub źródłowy.
Pasek nawigacji
Widok zalogowanego klubu „KS Atlas” — inne kluby widzą te same zakładki, ale swoje dane w panelu.

2 Lista zawodów (strona główna)

Strona startowa pokazuje wszystkie zawody z: nazwą, datą, miejscem rozgrywania (opcjonalne pole tekstowe), dyscypliną (trójbój / wyciskanie leżąc) oraz odliczaniem do terminu zgłoszeń wstępnych i ostatecznych.

Odliczanie działa w przeglądarce na żywo (Alpine.js) — nie wymaga odświeżania strony.

Zasada terminów Każde zawody mają dwa terminy: preliminary_deadline (zgłoszenia wstępne) i final_deadline (zgłoszenia ostateczne). Po terminie wstępnym klub może jeszcze zmieniać kategorię wagową, dodawać i usuwać zawodników — aż do terminu ostatecznego. Po terminie ostatecznym zgłoszenia są całkowicie zablokowane (patrz punkt „Edycja / blokada”).
Lista zawodów
Mistrzostwa Okręgu 2026 Otwarte
📍 Hala Sportowa, Kraków · Trójbój siłowy
Zgł. wstępne: 03 dni 12:44:09
Zgł. ostateczne: 10 dni 12:44:09

3 Rejestracja i logowanie klubu

Klub zakłada konto przyciskiem „Rejestracja Klubu” w pasku nawigacji — standardowy formularz Django (nazwa użytkownika, hasło, powiązanie z rekordem klubu). Logowanie przyciskiem „Logowanie” obok.

OgraniczenieKonto klubu to zwykłe konto Django (is_staff=False) — nie ma dostępu do panelu administracyjnego ani do danych innych klubów.
Formularz logowania
Nazwa użytkownika
ks_atlas
Hasło
••••••••
Zaloguj

4 Zgłaszanie zawodnika na zawody

Klub wybiera zawodników z własnej bazy i przypisuje im kategorię wiekową oraz wagową dla konkretnych zawodów. Formularz jest świadomy dyscypliny zawodów — jeśli to wyciskanie leżąc, pokazywane są tylko pola istotne dla tej konkurencji.

Kategoria wiekowa może być wybrana ręcznie lub wyliczona automatycznie na podstawie rocznika urodzenia.

Podwójny start Zawodnik może wystartować w dwóch kategoriach wiekowych na tych samych zawodach (np. Junior + Open) — system dopuszcza to jako dwa osobne zgłoszenia, ale pilnuje unikalności pary (zawody, zawodnik, kategoria wiekowa), więc nie da się zgłosić go dwa razy w tej samej kategorii.
Formularz zgłoszenia
ZawodnikKat. wiek.Kat. wag.
Nowak Jan (2001)Open ▾-83 kg ▾
Kowal Piotr (2008)Junior J18 ▾-74 kg ▾
Zgłoś zaznaczonych

5 Lista startowa (nominacje)

Pokazuje wszystkich zgłoszonych zawodników. Dwa tryby widoku (przełącznik na górze strony):

  • Standardowy — jedna płaska lista, sortowana wg sumy zgłoszonej (total malejąco) lub nazwiska.
  • Kluby — pogrupowane wg klubu; jeśli oglądający jest zalogowany jako klub, jego własna sekcja wyświetla się zawsze na górze.

Kolumna „Akcje” (Edytuj / Usuń) pokazuje się w obu widokach, ale tylko dla wierszy należących do zalogowanego klubu — i tylko wtedy, gdy zgłoszenia nie są zablokowane.

OgraniczenieTotal wyświetlany na liście to suma najlepszych zgłoszonych (planowanych) wyników — to pole tylko do odczytu, wyliczane w locie, nie da się go edytować ręcznie.
Widok „Kluby” — własny klub na górze
ZawodnikKat.Total
KS Atlas (Twój klub)
Nowak Jan-83 kg620Edytuj
Herkules Team
Wiśniewski A.-93 kg680

6 Panel klubu

Centrum zarządzania klubem, złożone z dwóch sekcji:

  • Baza zawodników klubu — pełna lista z wyszukiwarką (po imieniu i nazwisku) — niezbędna przy dużej liczbie zawodników.
  • Zgłoszenia na zawody — lista wszystkiego, na co klub zgłosił swoich ludzi: w jakich zawodach, w jakiej kategorii wiekowej i wagowej — z bezpośrednią edycją.

Pole wyszukiwania filtruje obie sekcje jednocześnie (i listę zawodników, i listę zgłoszeń).

Panel klubu — szukajka
🔍 nowak
BAZA ZAWODNIKÓW
Nowak Jan — 2001 — edytuj
ZGŁOSZENIA NA ZAWODY
Nowak Jan → Mistrzostwa Okręgu 2026, -83 kg, Open

7 Import zawodników z pliku (CSV / Excel)

Klub może zaimportować cały roster jedną operacją, plikiem .csv lub .xlsx. Wymagane kolumny: imię, nazwisko, data urodzenia, płeć.

Dla każdego wiersza system rozpoznaje trzy przypadki i pokazuje je osobno na ekranie wyników:

  • ✅ zawodnik dodany,
  • ℹ️ zawodnik już istnieje w Twoim klubie (pominięty),
  • ⚠️ zawodnik istnieje w innym klubie — system proponuje od razu link do złożenia wniosku o transfer,
  • ❌ wiersz błędny / niekompletny.
OgraniczenieDopasowanie „ten sam zawodnik” odbywa się po (imię, nazwisko, data urodzenia) — literówka w nazwisku utworzy duplikat zamiast dopasowania.
Wynik importu pliku
✅ Dodano: Kowalski Adam (2003)
ℹ️ Już w Twoim klubie: Nowak Jan
⚠️ Znaleziono w klubie „Herkules Team” — poproś o transfer

8 Transfery zawodników między klubami

Publiczna lista zawodników (z wyszukiwarką) pozwala każdemu zalogowanemu klubowi złożyć wniosek o przejęcie zawodnika przypisanego obecnie do innego klubu.

Wniosek trafia do klubu źródłowego, który go akceptuje lub odrzuca w Panelu Klubu (zakładka „Wnioski transferowe”). Administrator widzi wszystkie wnioski w Django Admin i może je zatwierdzić, odrzucić albo cofnąć nawet po zatwierdzeniu.

Skutek akceptacji Zaakceptowanie wniosku natychmiast zmienia klub zawodnika — dotychczasowe zgłoszenia zawodnika na zawody nie są automatycznie usuwane ani przenoszone.
Wniosek o transfer
Wiśniewski Adam Herkules Team
Wniosek od: KS Atlas · status: oczekujący
Akceptuj Odrzuć

9 Edycja, usuwanie i blokada zgłoszeń

Zgłoszenie (kategoria wagowa, wiekowa, sam fakt udziału) można edytować lub usunąć z poziomu Panelu Klubu albo Listy startowej — o ile zawody nie są zablokowane.

Blokada zgłoszeń Zawody są zablokowane, gdy: status rejestracji ustawiony ręcznie na ZAMKNIĘTE lub minął termin zgłoszeń ostatecznych — cokolwiek nastąpi pierwsze. Zablokowanie ukrywa przyciski edycji/usuwania i blokuje formularze na poziomie serwera (nie tylko UI).
ZapamiętajMiędzy terminem wstępnym a ostatecznym klub ma pełną swobodę: może zmieniać kategorię wagową, dodawać i usuwać zawodników. Dopiero ostateczny termin zamyka wszystko na sztywno.
Zgłoszenia po terminie ostatecznym
Nowak Jan — -83 kg — Open
🔒 Zgłoszenia ostateczne zamknięte — edycja niedostępna

10 Eksport listy startowej do Excela

Przycisk generuje plik .xlsx z pełną listą startową danych zawodów.

Tylko administrator Funkcja jest dostępna wyłącznie dla zalogowanego personelu. Kluby i goście nie widzą tego przycisku ani nie mogą wywołać adresu bezpośrednio — próba zwraca odmowę dostępu.
Przycisk eksportu (widoczny tylko dla admina)
Sortuj: Total ▾ ⬇ Eksportuj do Excela
Pobrany plik: Mistrzostwa_Okregu_2026_Seniorow.xlsx

11 Panel administracyjny (Django Admin)

Administrator zarządza wszystkim spod adresu /admin/ (link nie jest w głównym menu — wpisuje się go ręcznie lub loguje bezpośrednio):

  • Zawody — nazwa, data, miejsce, terminy, dyscyplina (trójbój / wyciskanie leżąc), oraz szybki wybór kategorii jednym kliknięciem zamiast ręcznego zaznaczania dziesiątek checkboxów.
  • Kluby — w tym masowy import zawodników klubu z pliku CSV bezpośrednio z poziomu admina.
  • Zawodnicy, Zgłoszenia, Transfery — pełny CRUD, akcje masowe (zatwierdź/odrzuć/cofnij transfer).
UwagaPrzycisk szybkiego wyboru kategorii dla juniorów (53 kg / 43 kg) jest celowo oddzielony od zestawu „standardowego IPF”, ponieważ te kategorie wagowe dotyczą wyłącznie młodszych roczników.
Formularz zawodów — szybki wybór kategorii
Kategorie wagowe (Mężczyźni)
Zaznacz standardowe IPF + Junior (53/43 kg) Wyczyść
☑ -59☑ -66 ☑ -74☐ -83

12 Wysyłka zgłoszeń do Meet Managera

Ten sam mechanizm jest dostępny w trzech miejscach — użyj tego, które akurat masz otwarte:

Wszystkie cztery działają dwuetapowo jak wbudowane „usuń zaznaczone”: najpierw pokazują podgląd (ile osób, jakie kategorie), dopiero kliknięcie „Potwierdź” faktycznie wysyła dane.

Technicznie: generuje plik CSV (nazwisko, imię, rok urodzenia, klub, płeć, kategoria wagowa, kategoria wiekowa) i wysyła go bezpośrednio do tego samego mechanizmu importu, którego używa ręczny import CSV w Meet Managerze (zakładka Konfiguracja w Biurze Zawodów — patrz instrukcję Meet Managera).

Bezpieczne do ponownego wysłania To NIE jest operacja tylko-dodająca — Meet Manager dopasowuje każdego zawodnika po (nazwisko, imię, rok urodzenia, klub) do już wysłanych rekordów. Nowi zawodnicy zostają dodani; ci, którzy już tam są, zostają zaktualizowani tylko jeśli zmieniły się ich dane rejestracyjne (np. kategoria wagowa) — reszta zostaje bez zmian. Można więc spokojnie wysłać całość ponownie po każdej korekcie zgłoszeń, zamiast dodawać pojedyncze osoby ręcznie.
Co z osobami usuniętymi ze zgłoszeńJeśli ktoś zostanie wykreślony z listy startowej w Zgłoszeniach, ponowna wysyłka nie usunie go automatycznie z Meet Managera (mógł już mieć zważoną wagę albo rozegrane podejścia) — dostaniesz tylko listę takich osób do ręcznego sprawdzenia i ewentualnego usunięcia w Biurze Zawodów.
Celowo pominięte dane Eksport nie przenosi wagi ciała, otwierających (pierwszych) podejść, stojaków ani numeru sesji/grupy — te wartości ustala się dopiero na miejscu, w Meet Managerze (waga ciała na ważeniu, sesja/grupa w panelu „Podział na grupy” — patrz instrukcję Meet Managera, punkt 2).
Podgląd eksportu (krok 1 z 2)
Zostanie przesłanych: 66 zgłoszeń
Kategorie: Open, Junior J18, Junior J16
Waga ciała / otwierające / stojaki / sesja / grupa — bez zmian, do ustalenia w Meet Managerze.
Potwierdź eksport
↑ Do góry