Zależności
----------
python2.7
postgresql
postgresql-server-dev-?.?
python-dev
django == 1.6.5
django-registration >= 1.0
django-extensions >= 0.8
psycopg2
south >= 0.8.4
Takich paczek może się zrobić dużo i czasem mogą być potrzebne nowsze wersje niż w repozytoriach dystrybucji, dlatego polecam użyć virtualenv:
$ virtualenv venv
$ source venv/bin/activate
$ pip install -r requirements.txt
Polecenia z manage.py należy uruchamiać będąc w aktywnym środowisku virtualenv. Wyjść ze środowiska można poleceniem deactivate.
Odpalenie serwera deweloperskiego
---------------------------------
Przede wszystkim trzeba skonfigurować bazę. W tym celu należy zmienić nazwę pliku database_data.py.example w głównym katalogu projektu na database_data.py i uzupełnić w nim parametry bazy.
Konfiguracja postgresa
----------------------
$ sudo su postgres
# psql
# create user kuznia with password 'kuznia';
# create database kuznia;
# grant all privileges on database kuznia to kuznia;
Ctrl+D
Ctrl+D
Potrzebny jest postgresql w wersji co najmniej 9.1.
Dla wersji poniżej 9.2 w konfiguracji postgresa (zwykle /etc/postgresql/[wersja]/main/postgresql.conf) trzeba ustawić custom_variable_classes = 'var'.
Baza oczywiście na początku jest pusta. Można wgrać gotowy zrzut lub postąpić według dalszych instrukcji. W przypadku wgrania zrzutu, dalsze instrukcje zaczynają się od punktu Odpalenie serwera.
Inicjowanie struktury bazy
--------------------------
Tworzymy tabele:
$ ./manage.py syncdb --migrate
(wszystkie polecenia mają być wykonywane w głównym katalogu projektu, o ile nie wskazano inaczej)
Pojawi się pytanie o utworzenie superusera, nie tworzymy go.
Włączamy obsługę historii:
$ ./manage.py dbshell < sql/history.sql
Poprawiamy więzy UNIQUE (procedura jest okropna, ale inaczej się nie dało):
$ ./manage.py dbshell < sql/delete_unique.sql | tail -n+2 | ./manage.py dbshell
$ ./manage.py dbshell < sql/add_unique.sql
UWAGA: przy pierwszym poleceniu mogą się pojawić dwa pytania o hasło — wtedy trzeba je dwa razy podać!
Inicjowanie zawartości bazy
---------------------------
Tworzymy role użytkowników:
$ ./manage.py create_groups
Ładowanie danych z bazy sqlite do testów
----------------------------------------
Używamy polecenia import_data, które bierze dane z bazy sqlite3 podanej w parametrze:
$ ./manage.py import_data baza.sqlite3
To trochę potrwa (od kilkunastu minut do pół godziny).
Teraz możemy utworzyć użytkowników:
$ ./manage.py create_users
Oraz załadować szablony tabel odmiany ze zrzutu JSON:
$ ./manage.py import_templates templates.json
Po załadowaniu danych
-------------------
Po ładowaniu danych należy wygenerować formy do filtrowania według form:
$ ./manage.py create_forms
(trochę potrwa - rzędu kilkunastu minut, pod warunkiem, że baza jest zvacuumowana)
Należy też ustawić numery homonimów:
# ./manage.py fix_homonym
Odpalenie serwera
-----------------
Jeśli dotąd wszystko się udało (lub jeśli pomyślnie wgraliśmy zrzut), to możemy odpalić runserver:
$ ./manage.py runserver
i połączyć się z nim przez http://localhost:8000/.
Pojawi się ekran logowania, gdzie możemy wpisać login i identyczne z nim hasło któregoś z domyślnie zdefiniowanych użytkowników, np. sgjp.
W przypadku wgrania zrzutu nazwy i hasła użytkowników mogą być różne. Nazwy użytkowników łatwo sprawdzić np. przez interfejs bazy (kolumna username w tabeli auth_user). Do potrzeby testów można ujednolicić hasła poleceniem:
$ ./manage.py set_fake_passwords --password=blaba
Kompilowanie lokalizacji
------------------------
Aktualnie dotyczy tylko napisów "previous" i "next" w paginacji.
Aby skompilować lokalizację należy przejść do podkatalogu paginer:
$ cd paginer
i wykonać polecenie
$ ../manage.py compilemessages
Aktualizacja
------------
W celu aktualizacji repozytorium do najnowszej wersji należy wykonać następujące polecenia:
$ hg pull
$ hg up
$ ./manage.py syncdb --migrate
$ ./manage.py update_permissions
Problemy
--------
Klawisze PageUp/PageDown działają (aktualnie przewijają na sztywno o 10, to można zmienić), ale przy włączonym zaznaczeniu i szybkim naciskaniu powodują, że czasem zaznaczenie ucieka. (okazuje się, że nawet całkiem często)