System do obsługi cyklu dydaktycznego w Instytucie Informatyki Uniwersystetu Wrocławskiego. Za pomocą tego systemu: Nauczyciele tworzą swoje propozycje nowych przedmiotów; Studenci kształtują ofertę dydaktyczną poprzez głosowanie na te propozycje; Dyrekcja Instytutu przydziela zajęcia prowadzącym; Studenci zapisują się na zajęcia; W końcu studenci oceniają swoich nauczycieli w anonimowych ankietach. System zarządza też tematami prac dyplomowych i pozwala studentom je rezerwować.
Do postawienia developerskiej wersji systemu zapisów musimy mieć
zainstalowanego Vagranta oraz Virtualboxa.
Klonujemy niniejsze repozytorium na nasz komputer i odpalamy z niego polecenie
vagrant up
. Na naszym komputerze zostanie skonfigurowana maszyna wirtualna z
uruchomionym testowym serwerem, który można odwiedzić pod adresem
0.0.0.0:8000. Folder projektzapisy
na naszym komputerze
jest współdzielony z maszyną wirtualną (folder /vagrant
), więc serwer łapie na
żywo wszystkie zmiany w robione przez nas w kodzie. Więcej informacji o maszynie
developerskiej można przeczytać w
instrukcji.
Jeżeli zamierzasz zajmować się frontendem, warto zapoznać się też z opisem systemu plików statycznych.
System Zapisów jest podzielony na moduły (zwane aplikacjami). Każda aplikacja definiuje swoje własne typy danych (modele), którym odpowiadają automatycznie obsługiwane tabele w bazie danych. Każda aplikacja dba o swoje własne ścieżki (URL-e) i implementuje funkcje odpowiadające na zapytania HTTP (zwane widokami). Powiązania między aplikacjami są realizowane poprzez importowanie kodu z jednego modułu do drugiego oraz przez klucze obce w bazie danych. Zwięzły opis wszystkich aplikacji w naszym systemie tutaj.
Każda zmiana w modelach musi zostać odzwierciedlona w schemacie bazy danych, co
Django rozwiązuje migracjami — małymi skryptami w Pythonie, które mówią, jak
ma się zmienić schemat bazy danych. Migracje można automatycznie wygenerować
poleceniem python zapisy/manage.py makemigrations
(w maszynie wirtualnej), ale
czasem trzeba je ręcznie przerobić, jeśli zmiana w modelach wymaga transformacji
danych.
Proces instalacji i konfiguracji maszyny produkcyjnej jest mocno zautomatyzowany
dzięki narzędziu Ansible. Instrukcje w katalogu infra/
.
Zespół Systemu Zapisów tworzą w każdym semestrze studenci uczęszczający na przedmiot Rozwój Systemu Zapisów. Lider projektu jest zarazem prowadzącym przedmiot. W naszej pracy używamy następujących narzędzi:
master-dev
. W swojej własnej gałęzi możemy przepisywać
historię,
szczególnie jeśli ma nam to pomóc zaktualizować się w stosunku do
master-dev
.master-dev
.
Zaznaczamy lidera projektu do code-review. PR musi być ładnie i jasno
opisany — opis ten może w przyszłości pomóc komuś zrozumieć intencje stojące
za zmianą w kodzie.git merge --squash
. Nie musimy się zatem wstydzić rewizji (commitów) w naszej
gałęzi.master
przechowuje wersję produkcyjną.