README
4.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
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 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. 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)