Zależności
----------
django-registration 0.7 lub wyższa
django-extensions 0.8 lub wyższa
python-psycopg2
python-django-south
Takich paczek może się zrobić dużo i czasem mogą być potrzebne nowsze wersje niż w repozytoriach dystrybucji, dlatego polecam zrobić w katalogu domowym podkatalog na te paczki (u mnie to jest ~/lib/python/) i instalować je programem easy_install w taki sposób:
$ easy_install --install-dir=~/lib/python/ -Z django-registration
Katalog z tymi paczkami powinien być w ścieżce Pythona, można o to zadbać np. dopisując do ~/.bashrc linijkę
export PYTHONPATH=$PYTHONPATH:~/lib/python/
UWAGA: niektóre skrypty należy na chopinie uruchamiać pod Pythonem 2.7, który na chopinie nie jest domyślnym Pythonem. Jeśli więc wywołanie jakiegoś skryptu zakończy się błędem, należy spróbować poprzedzić jego wywołanie przez 'python2.7', np.:
zamiast:
$ skrypt.py [argumenty]
piszemy:
$ python2.7 skrypt.py [argumenty]
UWAGA2:
Prawdopodobnie zamiast powyższego fragmentu na temat ~/lib/python/ i PYTHONPATH należy się zainteresować środowiskiem virtualenv, ale sam się nim jak dotąd nie interesowałem, więc nie powiem nic więcej.
Odpalenie serwera deweloperskiego
---------------------------------
Przede wszystkim trzeba skonfigurować bazę. W tym celu należy utworzyć plik o nazwie database_data.py w głównym katalogu projektu i wpisać w nim parametry bazy w poniższym formacie:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': '', # nazwa bazy danych
'USER': '', # nazwa użytkownika
'PASSWORD': '', # hasło
'HOST': '', # dla localhost zostawić puste
'PORT': '', # dla domyślnej wartości zostawić puste
}
}
Potrzebny jest postgres w wersji co najmniej 9.1.
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.
Inicjowanie struktury bazy
--------------------------
Tworzymy tabele:
$ ./manage.py syncdb
(wszystkie polecenia mają być wykonywane w głównym katalogu projektu, o ile nie wskazano inaczej)
Pojawi się pytanie o utworzenie superusera, nie tworzymy go.
Migrujemy aplikacje używające south:
$ ./manage.py migrate
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 standardowe klasyfikacje:
$ ./manage.py create_classifications
i 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
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)
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
TODO
* edycja tematu listu zapraszającego
* kompilowanie lokalizacji
Aktualizacja
------------
W celu aktualizacji repozytorium do najnowszej wersji należy wykonać następujące polecenia:
$ hg pull
$ hg up
$ ./manage.py syncdb
$ ./manage.py update_permissions
$ ./manage.py migrate
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)