README 4.26 KB
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)