Blame view

README 5.17 KB
janek37 authored
1
2
3
Zależności
----------
janek37 authored
4
5
django-registration >= 0.7
django-extensions >= 0.8
janek37 authored
6
python-psycopg2
janek37 authored
7
python-django-south >= 0.8.4
janek37 authored
8
django-debug-toolbar
janek37 authored
9
janek37 authored
10
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:
janek37 authored
11
janek37 authored
12
13
TODO przerobić na pip
TODO virtualenv?
janek37 authored
14
15
16
17
18
19
20
21
22
23
24
25
26
$ 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]
janek37 authored
27
28
29
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.
janek37 authored
30
31
32
33
34
35
36
37

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': {
janek37 authored
38
39
40
41
42
43
        '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
janek37 authored
44
45
46
    }
}
janek37 authored
47
48
49
50
51
52
53
54
55
56
57
58

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
janek37 authored
59
Potrzebny jest postgres w wersji co najmniej 9.1.
janek37 authored
60
W konfiguracji postgresa (zwykle /etc/postgresql/[wersja]/main/postgresql.conf) trzeba ustawić custom_variable_classes = 'var'.
janek37 authored
61
janek37 authored
62
Baza oczywiście na początku jest pusta. Można wgrać gotowy zrzut lub postąpić według dalszych instrukcji.
janek37 authored
63
janek37 authored
64
janek37 authored
65
66
Inicjowanie struktury bazy
--------------------------
janek37 authored
67
janek37 authored
68
Tworzymy tabele:
janek37 authored
69
janek37 authored
70
$ ./manage.py syncdb --migrate
janek37 authored
71
janek37 authored
72
(wszystkie polecenia mają być wykonywane w głównym katalogu projektu, o ile nie wskazano inaczej)
janek37 authored
73
janek37 authored
74
Pojawi się pytanie o utworzenie superusera, nie tworzymy go.
janek37 authored
75
janek37 authored
76
Włączamy obsługę historii:
janek37 authored
77
janek37 authored
78
$ ./manage.py dbshell < sql/history.sql
janek37 authored
79
janek37 authored
80
Poprawiamy więzy UNIQUE (procedura jest okropna, ale inaczej się nie dało):
janek37 authored
81
janek37 authored
82
83
$ ./manage.py dbshell < sql/delete_unique.sql | tail -n+2 | ./manage.py dbshell
$ ./manage.py dbshell < sql/add_unique.sql
janek37 authored
84
janek37 authored
85
UWAGA: przy pierwszym poleceniu mogą się pojawić dwa pytania o hasło — wtedy trzeba je dwa razy podać!
janek37 authored
86
janek37 authored
87
janek37 authored
88
Inicjowanie zawartości bazy
janek37 authored
89
90
---------------------------
janek37 authored
91
Tworzymy role użytkowników:
janek37 authored
92
janek37 authored
93
$ ./manage.py create_groups
janek37 authored
94
95
janek37 authored
96
97
Ładowanie danych z bazy sqlite do testów
----------------------------------------
janek37 authored
98
janek37 authored
99
Używamy polecenia import_data, które bierze dane z bazy sqlite3 podanej w parametrze:
janek37 authored
100
janek37 authored
101
$ ./manage.py import_data baza.sqlite3
janek37 authored
102
janek37 authored
103
104
To trochę potrwa (od kilkunastu minut do pół godziny).
Teraz możemy utworzyć użytkowników:
janek37 authored
105
janek37 authored
106
$ ./manage.py create_users
janek37 authored
107
janek37 authored
108
109
110
111
Oraz załadować szablony tabel odmiany ze zrzutu JSON:

$ ./manage.py import_templates templates.json
janek37 authored
112
janek37 authored
113
114
Po załadowaniu danych
-------------------
janek37 authored
115
janek37 authored
116
Po ładowaniu danych należy wygenerować formy do filtrowania według form:
janek37 authored
117
janek37 authored
118
$ ./manage.py create_forms
janek37 authored
119
janek37 authored
120
(trochę potrwa - rzędu kilkunastu minut, pod warunkiem, że baza jest zvacuumowana)
janek37 authored
121
janek37 authored
122
123
124
125
Należy też ustawić numery homonimów:

# ./manage.py fix_homonym
janek37 authored
126
janek37 authored
127
128
Odpalenie serwera
-----------------
janek37 authored
129
janek37 authored
130
Jeśli dotąd wszystko się udało (lub jeśli pomyślnie wgraliśmy zrzut), to możemy odpalić runserver:
janek37 authored
131
janek37 authored
132
$ ./manage.py runserver
janek37 authored
133
janek37 authored
134
135
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.
janek37 authored
136
janek37 authored
137
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:
janek37 authored
138
janek37 authored
139
$ ./manage.py set_fake_passwords --password=blaba
janek37 authored
140
janek37 authored
141
142
143
144
145
146
147
148
149
150
151
152

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
janek37 authored
153
janek37 authored
154
155
156
157
158
159
160
161
162
163
164
165

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
janek37 authored
166
167
168
169
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)